2016-04-10 8 views
0

Ich kann erfolgreich anmelden und der Benutzer kann angezeigt werden ... Aber ich mache hier etwas falsch, ich kann den Namen des Benutzers nicht anzeigen. Hier ist die Form, ich versucht:PHP Echo Anzeige Name nicht Benutzer

<?php 
include("dbconfig.php"); 
session_start(); 
if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
// username and password received from loginform 
$name=mysqli_real_escape_string($dbconfig,$_POST['name']); 
$username=mysqli_real_escape_string($dbconfig,$_POST['username']); 
$password=mysqli_real_escape_string($dbconfig,$_POST['password']); 

$sql_query="SELECT id FROM user WHERE username='$username' and password='$password'"; 
$result=mysqli_query($dbconfig,$sql_query); 
$row=mysqli_fetch_array($result,MYSQLI_ASSOC); 
$count=mysqli_num_rows($result); 


// If result matched $username and $password, table row must be 1 row 
if($count==1) 
{ 
$_SESSION['login_user']=$username; 

header("location: home.php"); 
} 
else 
{ 
$error="Useri ose passwordi gabim!"; 
} 
} 
?> 

und hier ist der desplay Code:

<?php 
if(!isset($_SESSION['login_user'])) 
{ 
header("Location: login.php"); 
} 
else 
{ 
$name=$_SESSION['login_user']; 
?> 
Welcome <?php echo $name;?> 
<?php 
} 
?> 

Was bin ich kann mir jemand helfen? Vielen Dank!

+0

Normalerweise würden Sie die Benutzer-ID in der Sitzung speichern und holen, was Sie bei jedem Laden der Seite benötigen. In Ihrem Code speichern Sie den Anzeigenamen in der Sitzung, so dass Sie später beim Abrufen denselben und nicht den tatsächlichen Namen erhalten (der nicht einmal in der Sitzung gespeichert wird) – JimL

+0

vergessen Sie 'session_start();' in Ihrem zweiten Teil (desplay) –

+0

überprüfen Sie, ob Sie eine serssion_start() in der home.php starten – PacMan

Antwort

1

Von dem, was ich verstehe, Sie versuchen, den Benutzernamen und nicht den Benutzernamen in der Willkommensnachricht anzuzeigen.

Zunächst sehen Sie, dass Sie nicht einmal den Namen des Benutzers abrufen. Also musst du das zusammen mit der ID holen.

Betrachtet wird das Feld "Name" in Ihrer Datenbank.

können Sie Ihre Abfrage ändern:

$sql_query="SELECT id, name FROM user WHERE username='$username' and password='$password'"; // Add name along with id 
$result = mysqli_query($dbconfig,$sql_query); 
$row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
$count = mysqli_num_rows($result); 

if($count==1) { 

    $_SESSION['User']['username'] = $username;  // Change this 
    $_SESSION['User']['name']  = $row['name']; // Add this 
    header("location: home.php"); 
} else { 
    /* Other code */ 
} 

jetzt Ihre Anzeige-Code:

<?php 
    session_start(); 
    if(!isset($_SESSION['User'])) { 
     header("Location: login.php"); 
    } else { 
     $name = $_SESSION['User']['name']; 
    ?> 
    Welcome <?php echo $name;?> 
    <?php } ?> 

Hoffnung, das hilft.

+0

Danke, du hast meinen Tag ^. ^. –

+0

Bitte erstellen Sie keine SQL-Anweisungen direkt aus Benutzereingaben. Informieren Sie sich über [SQL Injection] (https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet). – mkluwe