Autor Zpráva
Enko
Profil *
Ahoj, hledám řešení na následující:
mám trvalé přihlášení pomocí cookie do které ukládám id uživatele(tj jeho emailovou adresu) a nějaký hash
Dělám to následovně
<?php

$_SESSION["auth_login"] = mysql_real_escape_string(urlencode($_POST["email"])); //nick uživatele
$token = md5(uniqid(mt_rand(), true));

setcookie("trvale_prihlaseni", "$_SESSION[auth_login]:$token", strtotime("+1 month"));
mysql_query("
  INSERT INTO tabulka_users_logged
  (id_uzivatel, token)
  VALUES ('$_SESSION[auth_login]', '$token')

//timto si overuji, zda ma uzivatel nastavenou cookie pro automaticke prihlaseni
  list($id_uzivatel, $token) = explode(":", $_COOKIE["trvale_prihlaseni"], 2);
  if(mysql_result(
    mysql_query("
      SELECT COUNT(*)
      FROM tabulka_users_logged
      WHERE id_uzivatel = " . mysql_real_escape_string($id_uzivatel) . "
      AND token = '" . mysql_real_escape_string($token) . "'
    "), 0)){
      $_SESSION["logged"] = true;
      $_SESSION["auth_login"] = $id_uzivatel; //nick uživatele
  }


?>
Do DB se mi emailova adresa ulozi takto: prijmeni.jmeno%40gmail.com
Ale do cookie se mi to ulozi takto: prijmeni.jmeno%2540gmail.com //tzn ze se prevede znak procenta na url_encode

Jde nejak tomuto zabránit nebo jak to udělat jinak?
Darker
Profil
Enko:
Jde nejak tomuto zabránit nebo jak to udělat jinak?
Nepoužívej urlencode. Nebo použij místo setcookie setrawcookie.
Enko
Profil *
Darker:
Tak už to mám vyřešené, díky tomu, že jsem napsal tento příspěvek jsem na to přišel :)
na řádku #18 mi chyběly apostrofy, takže chyba byla v neověření v DB

Přesto díky :)

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