Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: sds 30. 06. 2013, 14:35:49

Název: PHP - porovnání stringů
Přispěvatel: sds 30. 06. 2013, 14:35:49
Ahoj,

zkouším si PHP nějaké věci a narazil jsem na zvláštní problém. Mám následující kód, který porovnává data načtená ze souboru a data zadaná uživatelem:

<?php
   $file = fopen("users.txt","r") or exit ("Soubor nenalezen");
         $data = " ";
         $data = fgets($file);
         $kontrola = $_POST["name"] . " " . $_POST["passwd"];
         if ($kontrola != $data)
         {
            echo "Kontrola: " . $kontrola . "
";
            echo "Data: " . $data . "
";
         }
         else
         {
            echo "OK";
         }
      fclose($file);
?>

ačkoli se v obou proměnných ($data, $kontrola) nachází totožné řetězce, php říká, že totožné nejsou. Poradí někdo ?

Díky
Název: Re:PHP - porovnání stringů
Přispěvatel: sds 30. 06. 2013, 14:56:23
problém vyřešen, soubor jsem vytvořil znova a už to funguje. Asi tam byly nějaké skryté znaky
Název: Re:PHP - porovnání stringů
Přispěvatel: Jim 30. 06. 2013, 15:59:45
Rozhodně bych to řešil databází...
Název: Re:PHP - porovnání stringů
Přispěvatel: to_je_jedno 30. 06. 2013, 22:21:11
mb_strlen vs strlen jako uplne zakladni diagnostika :)
Název: Re:PHP - porovnání stringů
Přispěvatel: Aleš Janda 30. 06. 2013, 23:52:44
Citace
$data = fgets($file);

Tady se to načte i s koncem řádku (pokud tam je) a pak by řetězce samozřejmě nesouhlasily.

Každopádně pokud to má sloužit k ověřování uživatelů, je to asi ten nejhorší způsob, jak to udělat (horší už je jen vypsat uživatele a hesla přímo do zdrojáku). správné řešení je databáze a zahashovaná! hesla (včetně soli).