IF-Abfrage reagiert falsch ... NICHT

Alles, was PHP betrifft, kann hier besprochen werden.

IF-Abfrage reagiert falsch ... NICHT

Postby werner1 » 05. March 2013 21:57

Kann mir mal jemand helfen, ich flipp langsam aus.
Egal ob $zahl == 0 ist oder 190 oder sonstwas,
die header-Befehlszeile wird ausgeführt, immer !

[...]
$ueber= file($path."/uebrig.txt");
$zahl= $ueber[0];
// Zahl ist jetzt 190 !!! Fileabfrage korrekt.
if(!$zahl){ // = FALSE!!! und Seite w ird trotzdem angezeigt!!! WARUM ???
header("Location: ../scripte/tanken.php?user=".$login, "_body");
exit;
}
[...]

Die Seite wird zwar richtig angezeigt, soll aber gar nicht wenn $zahl größer Null ist.
Was ist hier los?

XAMPP Version: 1.8.1
21:48:16 [main] Control Panel Version: 3.1.0 3.1.0 [ Compiled: September 20th 2012 ]
21:48:16 [main] Mit Administratorrechten gestartet - gut!

Schon mal Danke,
tk
werner1
 
Posts: 5
Joined: 05. March 2013 21:35
XAMPP Version: 5.6.3
Operating System: WIN XP

Re: IF-Abfrage reagiert falsch

Postby Altrea » 05. March 2013 22:17

werner1 wrote:Egal ob $zahl == 0 ist oder 190 oder sonstwas,
die header-Befehlszeile wird ausgeführt, immer !

Das wäre das allererste Mal in meiner 13 Jährigen PHP Laufbahn, dass eine PHP if Anweisung unplausibel reagieren würde :wink:
Füge vor der Anweisung bitte mal ein var_dump($zahl); ein und kommentiere die Weiterleitung aus.

btw: Laut HTTP 1.1 Spezifikation (RFC 2616) muss eine header Location einen absoluten Pfad enthalten. Die meisten Browser tolerieren zwar auch relative Pfade, sicher davon ausgehen sollte man aber nicht.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6670
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: IF-Abfrage reagiert falsch

Postby werner1 » 06. March 2013 08:54

Danke für deine Antwort. Leider ohne Ergebnis.
var_dump($zahl); liefert string(3) "190"
190 ist nicht Null oder 0 oder "0",
die Abfrage if(!$zahl) hier mit positiv zu werten ist definitiv Falsch (von PHP).
Auch die Schreibweise if($zahl = "0") (weil Typ string) wird mit positiv bewertet.
Ebenfalls die Abfrage nach < 1 oder < "1" bringen dach gleiche Verhalten.

In der Weiterleitung einen relativen oder absoluten Pfad zu nennen ist erstmal zweitrangig,
es funktioniert ja. Allerdings darf das if-Konstrukt es NICHT ausführen bei $zahl > 0, > "0", oder "text" ....

Dieses Verhalten ist mir auch neu, trat jetzt zum ersten mal auf mit PHP5.4

Gruß
tk
werner1
 
Posts: 5
Joined: 05. March 2013 21:35
XAMPP Version: 5.6.3
Operating System: WIN XP

Re: IF-Abfrage reagiert falsch

Postby Altrea » 06. March 2013 09:04

werner1 wrote:Auch die Schreibweise if($zahl = "0") (weil Typ string) wird mit positiv bewertet.

Was nicht verwunderlich ist bei einer Zuweisung.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6670
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: IF-Abfrage reagiert falsch

Postby werner1 » 06. March 2013 09:24

Was nicht verwunderlich ist bei einer Zuweisung.

Ja sorry, hat mein Keyboard ein = verschluckt.
Das Problem bleibt bestehen, IF-Block wird bei negativer Bewertung ausgeführt.

Ich bin ratlos...
werner1
 
Posts: 5
Joined: 05. March 2013 21:35
XAMPP Version: 5.6.3
Operating System: WIN XP

Re: IF-Abfrage reagiert falsch

Postby werner1 » 06. March 2013 10:06

Ich kreise das Problem hier langsam ein, ich hoffe man kann mir folgen:
hier laufen 4 Platten (nicht Partitionen) in meinem PC,
auf Drive D: läuft die Vorgängerversion von XAMPP mit PHP 5.3.8
auf Drive F: läuft die aktuelle Version von XAMPP mit PHP 5.4.7

In BEIDEN htdocs-Ordnern befinden sich die exakten Kopien meines Projektes
und der angeblich 'fehlerhaften' IF-Anweisung.

Mit jeweils zugehörigem Apache-Diensten im localhost gestartet:
Alte Version: alles ok, läuft wie geschmiert
Neue Version: oben beschriebenes Problem mit falscher IF - Behandlung

Kurios: in diesem (Login-)Script sind IF-Abfragen noch und nöcher,
alle davor werden einwandfrei behandelt, sonst wären ja auch Fehler
mit der alten XAMPP und PHP-Version gemeldet worden, alle danach auch.
Ist die Variable $zahl evtl. ein neues, geschütztes Systemwort o.ä.
Das kann jetzt an meinem Code irgendwie nicht liegen ....

Gruß
tk
werner1
 
Posts: 5
Joined: 05. March 2013 21:35
XAMPP Version: 5.6.3
Operating System: WIN XP

Re: IF-Abfrage reagiert falsch

Postby Altrea » 06. March 2013 12:30

Ich habe gerade mal eine frische XAMPP 1.8.1 Version neuaufgesetzt und folgenden Testcode ausgeführt:
Code: Select all
$zahl = '190';
// Zahl ist jetzt 190 !!! Fileabfrage korrekt.
if(!$zahl){ // = FALSE!!! und Seite wird trotzdem angezeigt!!! WARUM ???
    header("Location: ../test/success.php");
}

Der if-Zweig wird nicht betreten.
Dasselbe mit $zahl = '0' ergibt ebenso das erwartete Ergebnis - der if Zweig wird betreten und die Umleitung ausgeführt.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6670
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: IF-Abfrage reagiert falsch

Postby werner1 » 08. March 2013 10:45

Ok, ich kann Entwarnung geben, alles klar wieder.
Schreibe gerade mein neues Buch "Programmers Guide to nearest Klappsmühle!"
Story so far: ANGEBLICH wird eine IF-Abfrage falsch ausgeführt.
Nee, das hat mich etliche Nerven gekostet das hier zu debuggen.
Code war: wenn zahl = 0 dann mach A, wenn nicht, dann mache B.
Hat es auch völlichg korrekt gemacht, nur in B stand eine ähnliche Abfrage,
die im Falle von fehlenden Variablen genau das macht, was vorher mit A
NICHT angezeigt werden sollte. Das geht aber so affenschnell und ohne Fehlermeldung,
das man den Unterschied nicht merkt. So lag die Vermutung nahe, das die Abfrage
fehlerhaft war.
So ein BULLSH*T

Danke an alle für wertvolle Hints.

PS: Ich glaub das Buch wird ein Bestseller ...
werner1
 
Posts: 5
Joined: 05. March 2013 21:35
XAMPP Version: 5.6.3
Operating System: WIN XP

Re: IF-Abfrage reagiert falsch

Postby Altrea » 08. March 2013 16:02

werner1 wrote:PS: Ich glaub das Buch wird ein Bestseller ...

Nicht wenn du es als Fachbuch verkaufen möchtest.
Aber als Komödie hätte es Chancen :wink:
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6670
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests