2016-04-19 28 views
-2

Sitzung funktioniert nicht in meinem Code. Ich habe ein Login-Formular, und wenn ein Benutzer auf db die die Seite umleitet ihn in main.php aber es funktioniert nichtPHP-Sitzung funktioniert nicht, wenn auf einer anderen Seite umleiten

//index.php 
<?php 
session_start(); 
include('connect.php'); 

if(isset($_POST['submit'])){ 

    $username = mysqli_real_escape_string($dbCon, $_POST['username']); 
    $password = mysqli_real_escape_string($dbCon, $_POST['password']); 

    $sql = "select username, password from users where username='$username'"; 
    $res = mysqli_query($dbCon, $sql); 
    if(!$res){ 
     die(mysqli_errno); 
    } 

    while ($row = mysqli_fetch_assoc($res)){ 
     $usr = $row['username']; 
     $pass = $row['password']; 
    } 

    if($username == $usr && $password == $pass){ 
     $_SESSION["username"] = $username; 
     header("Location: main.php"); 
     exit(); 
    } else { 
     $error = "Invalid username or password"; 
    } 

} 
?> 

und hier ist mein main.php

//main.php 
<?php 

if(isset($_SESSION["username"])) { 
    $username = $_SESSION["username"]; 
} else { 
    header('Location: index.php'); 
    die(); 
} 

?> 

dank

+1

'session_start() zu umleiten;' fehlt in ' main.php ', um Sitzungen zu verwenden, sollten Sie es vor –

+0

starten Sicherlich' index.php' muss Fehler erzeugen, werfen Sie einen Blick in Ihr PHP-Fehlerprotokoll hin und wieder – RiggsFolly

+0

Dank kmlnvm das war das Problem – Rafael

Antwort

0

Verwenden Sie session_start(); in der Spitze main.php für die Lösung Ihres Problems.

0

Ihr Code ist in vielen Aspekten falsch. Zuerst bricht es die allererste Regel von SOLID. Verantwortlichkeit eins. Sie können nicht dieselbe Klasse verwenden, um Datensätze aus der Datenbank zu laden und einen bestimmten Benutzer anzumelden. Sie müssen Repositories verwenden, um fast alles zu verarbeiten, was aus der Datenbank kommt, und was moderne PHP-Apps tun, ist ein ORM, das mit Ihren Modellen und Ihrer Datenbank arbeitet.

Das zweite Problem ist mit Ihrer Abfrage. Sie testen, ob die angegebenen Daten gültig sind, die von der Anfrage stammen, indem Sie prüfen, ob der angegebene Benutzername existiert. Das ist in vielerlei Hinsicht falsch und ich gehe nicht ins Detail. Um sich an einem Benutzer anzumelden, sollten Sie auch sein Passwort eingeben und dieses Passwort sollte gehashed werden.

Aber selbst wenn die Abfrage richtig war, durchläuft man jeden Datensatz, der aus der Datenbank kommt, während man diese Daten in 2 Variablen eines höheren Bereichs speichert und auf diese Weise mit Daten des letzten Benutzers vergleicht, mit dem der Benutzername übereinstimmt .

Und nicht zuletzt rufen Sie nicht session_start(); in Ihren Skripten.

Machen Sie Ihren Code PSR-04 kompatibel, so dass Sie Composer verwenden können, um Ihre Abhängigkeiten zu laden.

0

Dies wird in folgenden Weise durchgeführt,

1.Set Sitzungswert nach session_start()

2.Use Kopf Funktion

if($username == $usr && $password == $pass){ 
    session_start(); 
    $_SESSION["username"] = $username; 
    header('location: main.php'); 

    exit(); 
} else { 
    $error = "Invalid username or password"; 
} 
Verwandte Themen