PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem, aber komme einfach nicht auf den Fehler...


Kewwwin
01.10.2012, 11:37:36
Hallo,

ich spiele mich jetzt schon stundenlang damit, aber leider komme ich nicht auf den Fehler. Es ist whsl so ein simpler Fehler, aber genau deswegen komme ich nicht drauf! :D

Ich habe diese Datei namens index.php:

<?php
session_start();
header("Content-Type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
$_SESSION['login']=0;
?>
<wml>
<card id="home" title="dxp e.V.">
<p>
Autorisierung<br/><br/>
Benutzername:
<input name="user"/><br/>
Passwort:
<input type="password" name="password"/><br/>
<anchor>[OK]
<go
href="menu.php?u=$(user)wappw$(password)"/>
</anchor>
<a href="dxp.php">[Abbruch]</a><br/>
</p>
</card>
</wml>


Dieser Bildschirm erscheint auch (WAP-Version) und ich kann namen udn passwort eingeben... aber leider erscheint immer ein fehler, von wegen fehler in de rzeile 24 bei menu.php:

<?php
session_start();
header("Content-Type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
if ( isset($_GET['u']) || isset($_POST['u']) )
{
$u = ( isset($_GET['u']) ) ? $_GET['u'] : $_POST['u'];
}
if ( isset($_GET['p']) || isset($_POST['p']) )
{
$p = ( isset($_GET['p']) ) ? $_GET['p'] : $_POST['p'];
}
if ($_SESSION['login'] < 1) {
include("turnier.inc");
include("wap_lib.inc");
opendb();
$pos=strpos($u,'wappw');
$p=substr($u, $pos+5);
$u=substr($u, 0, $pos);
$ul=mb_strtolower($u);
//Userdaten einlesen
$result=mysql_query("SELECT * FROM phpbb_users WHERE username_clean='$ul'");
$data = mysql_fetch_array($result);
$_SESSION['login']='0';

Zeile 24: $data = mysql_fetch_array($result);

Dann habe ich den Fehler eingegrenzt und geschaut, ob denn die Variablen übergeben werden. Genau da scheint es zu scheitern. Ich habe dieses Script nicht programmiert bzw habe ich mich noch nie mit diesem WAP-Zeug gespielt. Leider benötigen die noch die WAP-Version, bis meine Smartphone-Version fertig ist.

Ich komme aber ums Verrecken nicht auf diesen Fehler. Hatjemand Erfahrung gemacht mit sowas? Weiß jemand, ob da noch Angaben fehlen, damit diese Variablen übergeben werden?

Danke im Vorraus :)

Kewwwin
01.10.2012, 13:07:17
So lautet der Fehler:

Warning/var/www/vhosts/XXXXX/subdomains/wap/httpdocs/menu.php24

vt1816
01.10.2012, 14:24:30
Der Fehler/die Warnung sollte eher so aussehen:

<b>Warning</b>: mysql_query() [<a href='function.mysql-query'>function.mysql-query</a>]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in <b>/htdocs/wap/menu.php</b> on line <b>23</b><br />


Hast Du noch mehr Informationen für uns?

Kewwwin
01.10.2012, 14:38:10
Nein habe leider nicht mehr Infos. Das zeigt es an, mehr leider nicht :/

also wenn ich das $ul einfach durch meinen nick ersetze, dann geht alles perfekt. Aber er übergibt die Varablen iwie nicht Oo

vt1816
01.10.2012, 16:11:03
Benutze:

<anchor>[OK]
<go href="menu.php" method="post">;
<postfield name="u" value="$(user)"/>
<postfield name="p" value="$(password)"/>
</go>
</anchor>
für die Übergabe der Parameter - dann sollte auch die Abfrage funktionieren. Und hau den Teil:

$pos=strpos($u,'wappw');
$p=substr($u, $pos+5);
$u=substr($u, 0, $pos);
raus - wird dann nicht mehr benötigt.

Kewwwin
01.10.2012, 18:53:20
Benutze:

<anchor>[OK]
<go href="menu.php" method="post">;
<postfield name="u" value="$(user)"/>
<postfield name="p" value="$(password)"/>
</go>
</anchor>
für die Übergabe der Parameter - dann sollte auch die Abfrage funktionieren. Und hau den Teil:

$pos=strpos($u,'wappw');
$p=substr($u, $pos+5);
$u=substr($u, 0, $pos);
raus - wird dann nicht mehr benötigt.

Tach,

genau das gleiche hatte ich gestern schon versucht. Hat auch nicht funktioniert >_>

vt1816
01.10.2012, 23:51:55
In meiner Testumgebung funktioniert es einwandfrei.

Welche PHP-Version benutzt Du? Wo kann man sich die Sache mal ansehen?

meikel (†)
03.10.2012, 02:31:15
genau das gleiche hatte ich gestern schon versucht. Hat auch nicht funktioniert >_>
Genau.
1. mache Dich bitte kundig darüber, wie das HTTP Protokoll funktioniert.
2. wer POST (aka WAP postfield) benutzt, sollte nicht in $_GET suchen.
Er sollte wenigstens sich erst mal mit
echo '<pre>';
print_r($_REQUEST);
echo '</pre>';angucken, was das Handy mittels WAP überhaupt an der Server schickt.

Nach der PHP Version wurdest Du schon gefragt. Aktuell ist PHP 5.4.7:
http://php.net/
PHP 5.3.17 ist der Vorgänger. Alles andere kannste bei Ebay verkaufen oder im Museum abgeben.

Kewwwin
05.10.2012, 13:26:35
Hallo,

nein habe noch eine 5.2er Version drauf. Aber das Script muss angeblich früher immer funktioniert haben, denn im März wurde es zuletzt benutzt. Der Server wurde aber seitdem neu aufgesetzt. Kann es sein, dass da ein Plugin oder iwas fehlt, dass der Server braucht?

Also habe mal getestet am Anfang dieser PHP da wo man sich einloggt, habe ich einfach mal ein echo eingebaut und wollte das anschauen, aber auch das echo wird mir nicht angezeigt.

Bei der Übergabe an die menu.php wird auch nichts übergeben. Da stimmt doch was nicht? Wie kann das denn sein?

Vllt wird mir daher die Fehlermeldung nur halb angezeigt?

vt1816
05.10.2012, 18:49:52
Hallo,

nein habe noch eine 5.2er Version drauf.
Ab ins Museum damit ...



[...]
Bei der Übergabe an die menu.php wird auch nichts übergeben.
Wieso bist Du Dir da so sicher? Benutzt Du den richtigen Browser der zur Anzeige in der Lage ist oder nimmst Du dazu das Handy?



[..]
Da stimmt doch was nicht?
Deshalb bist Du ja hier ...

Kewwwin
05.10.2012, 22:11:58
Nein ich benutze das Handy. Mit PC und FF Addon hab ichs schon verscuht aber der kann die seite einfahc nicht anzeigen

vt1816
05.10.2012, 23:00:13
Wie sieht Dein letzter aktueller (PHP-)Code aus?

Kewwwin
06.10.2012, 00:11:33
das ist die index.php

<?php
session_start();
header("Content-Type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";

$_SESSION['login']=0;
?>
<wml>
<card id="home" title="dxp e.V.">
<p>
Autorisierung<br/><br/>
Benutzername:
<input name="user"/><br/>
Passwort:
<input type="password" name="password"/><br/>
<anchor>[OK]
<go href="menu.php" method="post">;
<postfield name="u" value="$(user)"/>
<postfield name="p" value="$(password)"/>
</go>
</anchor>
<a href="dxp.php">[Abbruch]</a><br/>
</p>
</card>
</wml>


und das der anfang der menu.php

<?php
session_start();
header("Content-Type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
if ( isset($_GET['u']) || isset($_POST['u']) )
{
$u = ( isset($_GET['u']) ) ? $_GET['u'] : $_POST['u'];
}
if ( isset($_GET['p']) || isset($_POST['p']) )
{
$p = ( isset($_GET['p']) ) ? $_GET['p'] : $_POST['p'];
}
if ($_SESSION['login'] < 1) {
include("turnier.inc");
include("wap_lib.inc");
opendb();
/*$pos=strpos($u,'wappw');
$p=substr($u, $pos+5);
$u=substr($u, 0, $pos);*/
$ul=mb_strtolower($u);
//Userdaten einlesen
$result=mysql_query("SELECT * FROM phpbb_users WHERE username_clean='$ul'");
$data = mysql_fetch_array($result);
$_SESSION['login']='0';
// if( md5($p) == $data['user_password'] && $data['user_active'] )
// if( md5($p) == $data['user_password'])
if (phpbb_check_hash($p, $data['user_password']))
{
.....

vt1816
06.10.2012, 06:52:27
Ok, vermisse nur den Versuch der Anzeige von $u und $p - zur Kontrolle der Übergabe der Werte aus der index.php. Wie sieht dieser Code aus?

Kewwwin
07.10.2012, 10:25:33
Ah ok macn benötigt eine Prüfung der Übergabe bei WAP? Also der Code so wie er da ist, wurde noch nicht verändert, mit Ausnahme von oben der Tipp.

Aber warum muss da eine Prüfung in die index.php und welche sollte das sein? Da sie ja zur menü.php übergeben wird, sollte ja die menü.php das prüfen?

Kewwwin
07.10.2012, 15:40:06
ach jetzt verstehe ich es. Sorry, war ein langer Tag auf der Wiesn :D

ja wenn ich jetzt ein echo setze für die beiden variablen und danach ein "die;" bleibt die Seite weiß. Wird also nichts angezeigt.

meikel (†)
08.10.2012, 14:19:25
ja wenn ich jetzt ein echo setze für die beiden variablen und danach ein "die;" bleibt die Seite weiß. Wird also nichts angezeigt.
Ja klar wird da nix angezeigt! Dein Mäusekino aka Handy übermittelt wunschgemäß via POST und Du guckst immer noch in $_GET nach. Wenn POST Request, ist $_GET leer, wenn href kein ...?abc=def... enthält.

Kewwwin
08.10.2012, 15:21:50
Weder POST noch GET wird angezeigt. Es bleibt immer weiß.

meikel (†)
08.10.2012, 15:34:43
Weder POST noch GET wird angezeigt. Es bleibt immer weiß.Ich finde in Deinem Script auch keine Stelle, in der überhaupt was angezeigt werden könnte, außer da:
<?php
session_start();
header("Content-Type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
Danach fragste
if ($_SESSION['login'] < 1) {ohne zu testen, ob der Index login im Session Array überhaupt existiert.
Dann folgen irgend welcher Quark aber keine Ausgabe.

Wo haste das denn abgeschrieben, daß man sich das komplette Scriptgewusel mal angucken kann?

vt1816
08.10.2012, 17:00:11
Ich finde in Deinem Script auch keine Stelle, in der überhaupt was angezeigt werden könnte, ...

Hatte ich weiter oben auch schon nachgefragt.



Wo haste das denn abgeschrieben, daß man sich das komplette Scriptgewusel mal angucken kann?
Komme auch immer mehr zu der Überzeugung, dass ihm hier grundlegende Kenntnisse fehlen und nicht nur in PHP. Und eine "Quelle" möchte er(sie) nicht veröffentlichen.

@Kewwwin
Wie sollen wir Dir weiter helfen. Außer "... geht nicht" kommt da von Dir nichts mehr viel - oder?

Kewwwin
08.10.2012, 18:42:23
Also in PHP habe ich an sich keine Probleme nur ich habe schon alles versucht. Oben zeige ich nur den Teil so wie er dem User dann ja letztendlich gezeigt wird. Aber alles was ihr eben schon gesagt habt, klappt nicht. Ihr könnt mir das ruhig glauben, es ist wirklich so.

Der obige Code zeigt jetzt nicht das echo was ich eingeblendet habe. Ich kann schlecht erklären, vllt habt ihr es deswegen nicht verstanden.

Alsooo: Ich habe das alles probiert was ihr gesagt habt, habe den WAP Code geändert auf des POST und im Script versuchte ich (ist nicht in dem Code oben zu sehen), ein echo auszugeben und danach ein "die;" - normalerweise sollte dann dieser Text kommen und danach die Seite abbrechen = nur ein Text und seite sonst leer.

Das passiert nicht. Die Seite bleibt komplett leer. Daher habe ich mir gedacht, vllt ist so ein WAP-Aufbau einfach ganz anders als PHP selber. Weil bei PHP hatte ich noch nie Probleme. Nur bei dem WAP wird iwie nichts übertragen. Siehe den einen PHP-Fehler der wird ja auch nur die Hälfte angezeigt und nicht anders. Die SESSION wird danach festgelegt also noch weiter unten sobald die Userdaten korrekt waren... da die Userdaten aber nicht übergeben werden, ist de rLogin natürlich immer fehlerhaft.

Das ist die WAP-Seite (http://tiny.cc/bncvlw).

Mehr fällt mir auf Anhieb nicht ein. Wenn wir uns falsch verstanden haben - sorry.

ps das script wurde vom vorprogrammierer geschrieben. ich steige da selber noch nicht durch, weil es teilweise total umständlich programmiert ist, aber die bracuhen die WAP-Seite noch, bis ich die mobile Seite fertig habe.

meikel (†)
08.10.2012, 19:58:50
Aber alles was ihr eben schon gesagt habt, klappt nicht. Ihr könnt mir das ruhig glauben, es ist wirklich so.
Da verstehst Du mich zumindest falsch. Um eventuell helfen zu können, brauche ich Informationen. Mit der Fehlerbeschreibung "klappt nicht" kann ich nix anfangen.

Das passiert nicht. Die Seite bleibt komplett leer.
...
Das ist die WAP-Seite (http://tiny.cc/bncvlw).
Da kommt (mit WAP-FFext im Seitenquelltext):
XML-Verarbeitungsfehler: "Junk" nach Dokument-Element
Adresse: moz-nullprincipal:{6fbebac7-a3c6-4a6d-8886-d5df10dd7239}
Zeile Nr. 4, Spalte 1:<b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in <b>/var/www/vhosts/dance-x-perience.de/subdomains/wap/httpdocs/menu.php</b> on line <b>24</b><br />
^
Da haste also noch einige offene Baustellen.
ps das script wurde vom vorprogrammierer geschrieben. ich steige da selber noch nicht durch, weil es teilweise total umständlich programmiert ist, aber die bracuhen die WAP-Seite noch, bis ich die mobile Seite fertig habe.
Generell die Frage: isses ein Hobbyprojekt oder was gewerbliches?
Falls gewerblich, kannste mich notfalls anheuern, obwohl ich wenig Zeit habe.

vt1816
08.10.2012, 23:36:25
Hier die Lösung Deines Problems: Trage in der Datei turnier.inc in der Funktion opendb() die Zeile global $db_name; wie folgt nach und dann klappt es auch wieder mit dem Nachbarn.

function opendb() {
global $db_host;
global $db_user;
global $db_passwort;
global $db_name; //<= hier!!

$db = mysql_connect($db_host,$db_user,$db_passwort)
or die ("Verbindung fehlgeschlagen");
mysql_select_db($db_name,$db);
}


Ja, ja register_globals = off - wer hättes es denn gedacht.
Und das alles unter PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken.



@meikel
Verwende Deine knappe Zeit eher für was besseres :-)

Kewwwin
08.10.2012, 23:38:24
na da sieht man den Wald vor lauter Bäumen nicht. So einfach hätte es sein können. Genau daran habe ich nicht spekuliert... ich probier das gleich mal aus... danke :)

Danke hat funktioniert... :)

vt1816
08.10.2012, 23:43:34
[..]
Ja den mysql fehler habe ich ja gesehen aber aus der Logik komme ich dann darauf, dass das daran liegt, dass der mir nix überträge und dann natürlich nix von der DB abrufen kann
QUATSCH - siehe oben (http://www.selfphp.de/forum/showpost.php?p=143794&postcount=23). Die Daten (User/Passwort) werden schon an die menu.php weitergegeben. Der Fehler lag/liegt wo anders.

vt1816
08.10.2012, 23:44:52
na da sieht man den Wald vor lauter Bäumen nicht. So einfach hätte es sein können. Genau daran habe ich nicht spekuliert...
Einfach nur fehlendes GRUNDLAGENwissen!

meikel (†)
09.10.2012, 19:36:32
@meikel
Verwende Deine knappe Zeit eher für was besseres :-)
Och, ich bin bestechlich, wenn das Schmerzensgeld hoch genug ist. <ggg>