2016-12-25 2 views
0

ich versuche zu überprüfen, ob zwei PHP-Werte in einer Zeile in der CSF-Bereich sind.php - überprüfen, ob der Wert in csv-Datei ist

csv:

Passwort, Name

12345, max

44444, emil

aber wenn mein Variable $ password = "123" und in den csv file seine "12345" er akzeptiert es.

Aber wie kann ich überprüfen, ob es 100% gleich ist? Ich verstehe nicht, warum "123" genug ist?

$search  = $name; 
$search2  = $password; 
$lines  = file('Benutzer.csv'); 
$line_number = false; 
$line_number2 = false; 

while (list($key, $line) = each($lines) and !$line_number) { 

$line_number = (strpos($line, $search) !== FALSE); 
$line_number2 = (strpos($line, $search2) !== FALSE); 

} 

if($line_number and $line_number2){ 
header('Location: alert_anmelden_erfolgreich.php'); 
} 
    else{ 
    header('Location: alert_anmelden_NICHT_erfolgreich.php'); 
    } 
+0

Verwendung '===' oder 'strcmp' statt' strpos' –

Antwort

0

strpos sucht nach einer Teilzeichenfolge in einer Zeichenfolge. Also das Wichtigste zuerst“

strpos('12345','345') 

wird 2 zurückkehren, da der Teil an diesem Index beginnend vorhanden In Ihrem Fall.

strpos('12345','123') 

oder wirklich 1,12,123,1234,12345 werden alle zurückkehren, die Position 0. Wenn nun gleich als Sie false sind Sie im wesentlichen erhalten:

0==`false` 

das stimmt natürlich, weil 0 ein gegossen werden zu false. Als @u_mulder würde die kommentierte Verwendung des vollständigen Gleichheitsoperators === das beheben, aber Ihr Problem nicht lösen! Was Sie wollen, ist strcmp, die 0(false) nur zurückgibt, wenn die Zeichenfolgen identisch sind und verwendet werden können, wie Sie wollten. Sie könnten auch === oder == zwischen den Strings verwenden, da Sie die Zeichenfolge 'less/more' nicht interessieren.

if($line === $search) 
+0

wenn i "strcmp" verwenden, übernimmt er alles. 9 = 123 z.B. – Cashew

Verwandte Themen