wake-up-neo.com

Sitzungsvariablen funktionieren nicht PHP

Hier ist der Code meiner Anmeldeseite, auf dem das Anmeldeskript die Authentizität des Benutzers überprüft und dann mithilfe der Header-Funktion zur Eingangsseite weiterleitet.

<?php
session_start();

include_once('config.php');
$user=htmlentities(stripslashes($_POST['username']));
$password=htmlentities(stripslashes($_POST['password']));
// Some query processing on database    

if(($id_user_fetched<=$id_max_fetched) && ($id_user_fetched!=0)){
$_SESSION['loggedIn'] = 'yes';
    header("Location:http://xyz/inbox.php?u=$id_user_fetched");
    //echo 'Login Successful';
    }else{
        echo 'Invalid Login';
        echo'<br /> <a href="index.html">Click here to try again</a>';
        }
}else{
    echo mysqli_error("Login Credentials Incorrect!");
    }
?>

Die inbox.php-Seite sieht folgendermaßen aus:

<?php
session_start(); 
echo 'SESSION ='.$_SESSION['loggedIn'];
if($_SESSION['loggedIn'] != 'yes'){
echo $message = 'you must log in to see this page.';
//header('location:login.php');
}
 //REST OF THE CODE

?>

Mit dem obigen Code zeigt die inbox.php immer die Ausgabe: SESSION = Sie müssen sich anmelden, um diese Seite anzuzeigen. Dies bedeutet, dass entweder die Sitzungsvariable nicht eingerichtet wird oder die inbox.php die Sitzungsvariable nicht abrufen kann. Wohin gehe ich falsch?

10
Arihant
  1. Stellen Sie sicher, dass session_start(); aufgerufen wird, bevor Sitzungen aufgerufen werden. Eine sichere Wette wäre es also, es am Anfang Ihrer Seite, unmittelbar nach dem <?php-Tag vor der Eröffnung, zu setzen. Stellen Sie außerdem sicher, dass sich vor dem <?php-Tag keine Leerzeichen/Tabulatoren befinden.
  2. Beenden Sie nach der header-Umleitung das aktuelle Skript mit exit(); (Andere haben auch session_write_close(); und session_regenerate_id(true) vorgeschlagen, Sie können diese auch ausprobieren, aber ich würde exit(); verwenden).
  3. Stellen Sie sicher, dass Cookies in dem Browser aktiviert sind, mit dem Sie sie testen.
  4. Stellen Sie sicher, dass register_globals ausgeschaltet ist. Sie können dies in der php.ini-Datei und auch mit phpinfo() überprüfen. Siehe this , um das Gerät auszuschalten.
  5. Stellen Sie sicher, dass Sie die Sitzung nicht gelöscht oder gelöscht haben.
  6. Stellen Sie sicher, dass der Schlüssel in Ihrem $_SESSION Superglobal-Array nirgendwo überschrieben wird.
  7. Stellen Sie sicher, dass Sie zur gleichen Domäne umleiten. Die Weiterleitung von einem www.yourdomain.com nach yourdomain.com führt die Sitzung also nicht weiter.
  8. Stellen Sie sicher, dass Ihre Dateierweiterung .php ist (dies geschieht!).

PHP Sitzung nach Umleitung verloren

25
revo

Ich hatte das gleiche Thema für eine Weile und es fiel mir sehr schwer, es herauszufinden. Mein Problem war, dass ich die Site für eine Weile mit den Sitzungen arbeiten ließ, und dann brach alles zusammen.

Anscheinend muss Ihr session_save_path () für mich/var/lib/php5/über korrekte Berechtigungen verfügen (der Benutzer, der php ausführt, zB www-data benötigt Schreibzugriff auf das Verzeichnis). Ich habe es versehentlich geändert und die Sitzungen komplett unterbrochen.

Führen Sie Sudo chmod -R 700 /var/lib/php5/ und dann Sudo chown -R www-data /var/lib/php5/ aus, damit der PHP-Benutzer Zugriff auf den Ordner hat.

8
Vadman

Wenn Ihr Sitzungspfad nicht ordnungsgemäß funktioniert, können Sie die Funktion session.save_path(path/to/any folder); als alternativen Pfad ausprobieren. Wenn dies funktioniert, können Sie Ihren Hostinganbieter nach dem Standardpfadproblem fragen.

3
Ashraf Ali

Wenn Sie ein Verbindungsskript verwenden, vergessen Sie nicht, session_start(); auch bei der Verbindung zu verwenden. Bevor Sie dieses Problem bemerken, hatten Sie einige Probleme.

2

Ich habe gerade mit dem Hosting-Service gesprochen, es war ein Problem an ihrem Ende. Er sagte: "Ihr Konto session.save_path wurde nicht festgelegt, da ein Problem auftritt. Ich habe es jetzt für Sie festgelegt."

Und danach funktioniert es gut :)

1
Arihant

Der andere wichtige Grund, warum Sitzungen nicht funktionieren können, ist das Spielen mit den Sitzungs-Cookie-Einstellungen, z. Setzen Sie die Lebensdauer des Sitzungscookies aufgrund eines einfachen Fehlers oder eines anderen Entwicklers aus einem Grund auf 0 oder andere niedrige Werte. 

session_set_cookie_params(0)

Ich hatte ein ähnliches Problem und mit der Cookie-Domain:

    ini_set('session.cookie_domain', '.domain.com');

die Domäne war falsch eingerichtet, daher wurden alle Sitzungen ignoriert, da das Benutzer-Cookie nie richtig gesetzt wurde. Ich hoffe, dies hilft jemandem.

0
talsibony

Ich stand auch vor dem gleichen Problem, dass ich die folgenden Schritte zur Behebung des Problems durchgeführt habe

  1. Ich habe die Datei /etc/php.ini bearbeitet und den Pfad session.save_path = "/ var/lib/php/session" gesucht

2 Danach wurde die unter * chown root.Apache/var/lib/php/session * .__ angegebene Berechtigung geändert. Diese Schritte lösen mein Problem

0
Aman Shukla

Ich bin heute auf dieses Problem gestoßen. Das Problem hat mit $ config ['base_url'] zu tun. Ich habe bemerkt, dass htpp: //www.domain.com und http://example.com das Problem war. Um dies zu beheben, setzen Sie Ihre base_url immer auf http://www.example.com

0
Devqxz