Autor Zpráva
DJ
Profil *
Ahoj,
snažím se vytvořit trvalé přihlášení uživatelů dle http://php.vrana.cz/trvale-prihlaseni.php. Dle tohoto skriptu by se, pokud uživatel zatrhne políčko "Přihlásit trvale", měly uložit údaje o přihlášení do tabulky users_login se sloupci username a token:
     
if(($_POST['set_cookie']))
   {
        $token = md5(uniqid(mt_rand(),true));
        setcookie("permanent_log", "$_SESSION[user_name]:$token", strtotime("+1 month"));
        mysql_query("
          INSERT INTO users_login (username, token)
          VALUES ($_SESSION[user_name], '$token')
        ");
      }

Avšak nic se do databáze neuloží, kde by mohla být chyba? (Dodávám, že podmínka if(($_POST['set_cookie'])) je splněna)
Předem děkuju za odpovědi.
YoSarin
Profil
DJ:
třeba v tom, že $_SESSION['user_name'] není "ouvozovkované":
mysql_query('INSERT INTO users_login (username, token) VALUES ("' . $_SESSION['user_name'] .'", "' . $token . '")');

A hlavně: koukej do php error logu, co se tam píše, používej mysql_error pro vypsání chyby v SQL - budeš pak mít o dost jednodušší práci.
okolojdouci
Profil *
DJ:
A taky by mě překvapilo, kdyby takto použité setcookie fungovalo tak, jak si představuješ. Jak pracovat s uvozovkami, viz YoSarin.
DJ
Profil *
YoSarin
už to funguje, díky
DJ
Profil *
okolojdouci:
A taky by mě překvapilo, kdyby takto použité setcookie fungovalo tak, jak si představuješ. Jak pracovat s uvozovkami, viz YoSarin.
Proč? S cookies si hraju prvně, takže spíš jen slepě důvěřuju návodu, proto by mě tvůj názor zajímal.
YoSarin
Profil
DJ:
okolojdouci asi narážel na použití $_SESSION[user_name] v řetězci. Ono to funguje, ale je to (IMO) poměrně nepřehledné.
Lepší (hezčí) zápis je
"{$_SESSION['user_name']}:$token"
, nebo rovnou
$_SESSION['user_name'] . ':' . $token
Alphard
Profil
Pánové, použité uvozovkování klíčů polí v řetězci bylo naprosto správné. Stačí doplnit uvození celého řetězce v kontextu MySQL.
mysql_query(" 
  INSERT INTO users_login (username, token) 
  VALUES ('$_SESSION[user_name]', '$token') 
"); 
V původním kódu má Jakub id uživatele, takže ho (správně) neuvozoval.
Uživatelské jméno bych raději escapoval.
YoSarin
Profil
Alphard:
použité uvozovkování klíčů polí v řetězci bylo naprosto správné
Ano, to píšu v minulém příspěvku (byť poměrně vágně). A stejně to shledávám nepřehledným (nejsem na to zvyklý).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0