2016-06-03 9 views
0

Ich hatte in letzter Zeit ein ziemlich dummes Problem.

Ich verwende die Header-Funktion, um auf eine Bestätigungsseite umzuleiten. Ich deklariere $ error = false oben auf der php sendmail Seite. Hier

ist die Voraussetzung für die Sendmail-Seite:

if($error) 
{ 
    header('Location: http://www.url.com/confirmation.php 
    error='.$error.'type=cell&desc=' . $message); 
} 
else { 
    header('Location:http://www.url.com/confirmation.phperror='.$error. 
    '&type=cell&fname=' . $inputFName .'&lname=' . $inputLName . '&email=' . 
    $inputEmail . '&phnum=' . $inputPhnum . '&model=' . $inputModel . 
    '&color=' . $inputColor . '&desc=' . $inputSummary); 
} 

Das Problem, das ich bin immer ist, wenn ich an der URL aussehen und die Variablen erhalten, der Fehler Teil leer ist. Zum Beispiel wird meine URL wie folgt aussehen: confirmation.php? error = & type = Zelle & fname = Test & lname = Name & [email protected] ..... etc ...

Aus irgendeinem Grund die Fehlervariable nicht übergeben wird. Was ist das Problem?

+0

Ihre Umwandlung boolean string: http://stackoverflow.com/questions/2795177/how-to- convert-boolean-to-string –

+0

'error =' hat die Bedeutung von * "Der Fehlerwert ist leer" *, was sich in einen leeren String-Wert verwandelt, der "false" entspricht. Dieses Verhalten ist absichtlich beabsichtigt, wenn Sie den manuellen Eintrag zum String-Casting lesen. 'false' wird zu einer leeren Zeichenkette, weil es einfach und unzweideutig ist, diese in' false' umzuwandeln. – deceze

Antwort

2

Sie könnten einen anderen Wert als "boolean", übergeben oder einfach 1/0;

d.h

?....error=no

und dann

if ($_GET["error"] === "no") { 
    ... 
} else { 
    ... 
} 

oder wenn Sie vorhaben, die Zahl Methode verwenden, denken Sie daran:

1 == true; 0 == false.

+0

Ich werde das versuchen, ich bin sicher, es wird funktionieren und ich werde Ihre Frage als richtig markieren, aber WARUM wird ein einfacher Boolean nicht durch eine URL gehen? Ich finde es einfach merkwürdig. – DMort

+0

es ist einfach nett zu verwenden, wenn ($ error) anstatt if ($ error == 1) – DMort

+0

Ich verstehe, was Sie meinen, es ist. Wenn Sie die Variable als '' '' '' imprintiert haben, bin ich sicher, dass es funktionieren würde. Ich denke, dass es wahrscheinlich als undefiniert passiert - versuche die Variable zu echoen. –

0

Von http://php.net/manual/en/language.types.string.php:

Ein boolescher TRUE-Wert wird in die Zeichenfolge "1" konvertiert. Boolean FALSE wird in "" (die leere Zeichenfolge) konvertiert. Dies ermöglicht die Konvertierung zwischen Booleschen Werten und String-Werten.

So können Sie entweder die folgenden Schritte aus, oder was @Tobi vorgeschlagen, es zu erreichen:

$errorStr = $error ? 'true': 'false';