Heim > Backend-Entwicklung > PHP-Tutorial > Warum ist mein Cookie „Benutzername2' leer, obwohl es mit setcookie() in PHP gesetzt wurde?

Warum ist mein Cookie „Benutzername2' leer, obwohl es mit setcookie() in PHP gesetzt wurde?

Mary-Kate Olsen
Freigeben: 2024-11-22 00:15:11
Original
518 Leute haben es durchsucht

Why is my 'username2' cookie blank despite setting it using setcookie() in PHP?

Fehlerbehebung bei leeren Cookies bei der Sitzungsverarbeitung

In der vorgestellten PHP-Funktion umfasst der Benutzervalidierungsprozess das Setzen von Cookies für „Benutzername“ und „ Benutzername2‘ mit setcookie(). Beim Abrufen des Cookies „Benutzername2“ bleibt es jedoch leer. Dieses Problem kann aus verschiedenen Gründen auftreten.

Unvollständige Cookie-Konfiguration

Stellen Sie sicher, dass die gesamte setcookie()-Konfiguration die erforderlichen Parameter enthält:

  • Expires-Parameter: Geben Sie die Ablaufzeit in einem gültigen Format an. Der bereitgestellte Code legt einen Ablauf von 365 Tagen fest, aber das empfohlene Format ist time() n, wobei n die Anzahl der Sekunden ist.
  • Pfadparameter: Wie in der Lösung vorgeschlagen, Einstellung path = / stellt sicher, dass das Cookie für die gesamte Website gilt, nicht nur für das aktuelle Verzeichnis.

Ausgabe Änderung

Beachten Sie die Warnung im PHP-Handbuch: „Cookies müssen vor der Ausgabe Ihres Skripts gesendet werden.“ Vermeiden Sie Echos vor dem Setzen von Cookies, um zu verhindern, dass bereits Header gesendet werden. Geben Sie im angegebenen Code echo $_COOKIE['username2']; Ausfahrt(); sollte vor dem Header platziert werden („Location: ../new.php“); Zeile.

Validate-Funktionsoptimierung

Die Funktion „validateUser()“ sollte nur zum Festlegen der Sitzung und Umleitung verwendet werden, ohne jegliche Logik oder Datenbankabfragen. Erwägen Sie die Erstellung einer separaten Funktion für die Benutzervalidierung und einer weiteren für das Setzen von Cookies.

Beispiel

Eine optimierte Version der Funktion „validateUser()“ und der Cookie-Einstellung:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

// User validation function

function validateUser($username) {

    session_regenerate_id ();

    $_SESSION['valid'] = 1;

    $_SESSION['username'] = $username;

}

 

// Cookie setting function

function setCookies($username, $password) {

    setcookie('username', $username, time() + 60 * 60 * 24 * 365, '/');

    setcookie('password', $password, time() + 60 * 60 * 24 * 365, '/');

}

 

// Function call

if(mysql_num_rows($queryreg) != 0){

    $row = mysql_fetch_array($queryreg,MYSQL_ASSOC);

    $hash = hash('sha256', $row['salt'] . hash('sha256', $password));

    if($hash == $row['password']) {

        if($row['confirm'] == 1){

            setCookies($username, $password);

            validateUser($username);

        }

    }

}

Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum ist mein Cookie „Benutzername2' leer, obwohl es mit setcookie() in PHP gesetzt wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage