PHP dizge karşılaştırma zorluğu

0 Cevap php

Ben bir php programlama atama ile bir arkadaş yardımcı çalışılıyor. O dosyadan şifreleri ve kullanıcı adları okumak ve bir kullanıcı adı ($ user) ve şifre ($ parola) bir kullanıcının kimliğini doğrulamak için bir forma girilen bunları karşılaştırmak gerekiyor. (Basit, hiçbir güvenlik olursa olsun, sadece akademik)

Sorun dizeleri karşılaştırma. Ben ==, === kullanarak ve strcmp ama hiçbir şey düzgün görünüyor arasında ileri ve geri gittin. Herhangi bir düşünce?

Bu okunan ediliyor metin dosyası:

UserData.txt

test:pass
testa:pass2
testb:pass4
testc:pass6

<?php

$fh = fopen("UserData.txt", "r") or die("Can't open file");

$line = "";
$line_length = 0;
$div = 0;
$accounts = array();

while($line = fgets($fh)) {
    $div = strpos($line, ":"); //positing of ":" dividing username and password
    $line_length = strlen($line); //Total length of username + : + password line entry

    $accounts[substr($line, 0, $div)] = substr($line, $div + 1, $line_length);
}

foreach ($accounts as $key => $value) {
    if(($user === $key) && ($password === $value)) {
        echo "MATCH - user/pass correct<br/>";
        //Just needs to echo the above line if user/pass correct
    }
}

?>

HTML Dosya:

<form name="myform" method="GET" action="login.php">
Please Login to order
User Name:
<input type="text" name="user" value="" size="10"/>
Password:
<input type="password" name="password" value="" size="10"/>
<input type="submit" name="submit" value="Log In" >

Güncel login.php dosyası:

<?php

$lines = file('UserData.txt', FILE_IGNORE_NEW_LINES);
foreach ($lines as $line)
{
  $arr = explode(':', $line);
  if ($arr[0]==$user && $arr[1]==$password)
  {
     echo "MATCH - user/pass correct<br/>";
  } else {
     echo "NO<br />";
  }
}

echo "<br />";
var_dump($user);
echo "<br />";
var_dump($password);
echo "<br />";
echo phpversion();
?>

Çıktı:

NO
NO
NO
NO

string(4) "test" 
string(4) "pass" 
4.4.9

0 Cevap