2016-07-21 10 views
-3

Ich habe eine Datenbank namens "Mitglieder" mit einer Tabelle namens "Benutzer". Die Benutzertabelle hat eine ID-Spalte, die bei jedem Hinzufügen eines neuen Benutzers automatisch erhöht wird. Ich möchte die ID des angemeldeten Benutzers abrufen und diese einzelne Datenzeile anzeigen. Dies ist mein Login-Code:Anzeige bestimmter Daten von SQL-Datenbank

<?php 
    session_start(); 
    // Connect to server and select databse. 
    mysql_connect("localhost", "root", "")or die("cannot connect"); 
    mysql_select_db("members")or die("cannot select DB"); 
    // username and password sent from form 
    $prepreemail=$_POST['email']; 
    $prepremypassword=$_POST['mypassword']; 
    $preemail = stripslashes($prepreemail); 
    $premypassword = stripslashes($prepremypassword); 
    $email = mysql_real_escape_string($preemail); 
    $mypassword = mysql_real_escape_string($premypassword); 
    $sql="SELECT * FROM users WHERE email='$email' and password='$mypassword'"; 
    $result=mysql_query($sql); 


    // Mysql_num_row is counting table row 
    $count=mysql_num_rows($result); 
    // If result matched $myusername and $mypassword, table row must be 1 row 
    if($count==1){ 
    // Register $myusername, $mypassword and redirect to file "login_success.php" 
    header ("location:home.html"); 
    } 
    else 
    { 
    header ("location:sign_in.php"); 
    } 
    ?> 

Das ist mein Anmeldecode lautet:

<?php 
    session_start(); 
    $con = mysql_connect("localhost","root",""); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 

    mysql_select_db("members", $con); 

    $sql="INSERT INTO users (name, email, address, dob, password) 
    VALUES 
    ('$_POST[name]','$_POST[email]','$_POST[address]','$_POST[dob]','$_POST[mypassword]')"; 

    if (!mysql_query($sql,$con)) die('Error: ' . mysql_error()); 
    $_SESSION['userID'] = "SELECT id from users"; 

    { 
     header ("Location: sign_in.php"); 
     exit; 
    } 

    mysql_close($con) 
    ?> 

Und das ist meine Anzeige Code Benutzerdaten:

<?php 
    session_start(); 
    // Create connection 
    $conn = new mysqli("localhost", "root", "", "members"); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    $userID = $_SESSION['userID']; 
    $sql = "SELECT name, email, address, dob FROM users WHERE `users`.`id`=$userID"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     echo "<table><tr><th>Name</th><th>Email</th><th>Address</th><th>DOB</th></tr>"; 
     // output data of each row 
     while($row = $result->fetch_assoc()) { 
      echo "<tr><td>".$row["name"]."</td><td>".$row["email"]."</td><td>".$row["address"]."</td><td>".$row["dob"]."</td></tr>"; 
     } 
     echo "</table>"; 
    } else { 
      echo "<p>No Details</p><style>p{color: #336699; font-size: 20pt; font-family: Gulim; font-weight: bold; align: center; padding: 10px; position: absolute; top: 250; left: 600; z-index: 2; border-spacing: 0px;}</style> "; 
    } 
    $conn->close(); 
    ?> 

Aus irgendeinem Grund ist es nicht ist Arbeiten, jemand bitte helfen!

+0

Was bekommen Sie jetzt? – Saurabh

+0

Fehlende Überprüfung auf Fehler. – Drew

+0

der Sign-up-Chunk auf der Einfügung ist klassische Second-Level-Sql-Injektion – Drew

Antwort

0

Eigentlich hat Ihr Code mehrere Fehler ... und nicht Ihre Fragen löschen ... Ich denke, einige Änderungen für Ihre Fragen und Code benötigt.Bitte setzen Sitzungsvariable beim Abrufen von Informationen aus der Datenbank.

<?php 
session_start(); 
// Connect to server and select databse. 
mysql_connect("localhost", "root", "")or die("cannot connect"); 
mysql_select_db("members")or die("cannot select DB"); 
// username and password sent from form 
$prepreemail=$_POST['email']; 
$prepremypassword=$_POST['mypassword']; 
$preemail = stripslashes($prepreemail); 
$premypassword = stripslashes($prepremypassword); 
$email = mysql_real_escape_string($preemail); 
$mypassword = mysql_real_escape_string($premypassword); 
$sql="SELECT * FROM users WHERE email='$email' and password='$mypassword'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 
// Register $myusername, $mypassword and redirect to file "login_success.php" 
    $row=mysql_fetch_array($result); 
    $_SESSION['id']=$row['id']; 
    if($_SESSION['id']) 
    { 
header ("location:home.php"); 
    } 
} 
else 
{ 
header ("location:sign_in.php"); 
} 
?> 

In dieser ID der eingeloggten Person wird in $ _SESSION ['id'] gespeichert. Sie können diesen Wert in Ihrer PHP-Seite erhalten home.php wie unten

<?php 
session_start(); 
$logid=$_SESSION['id']; 
echo $logid; 

Bitte wie unten einige Änderungen in Ihrem Display Benutzerdaten Code vornehmen.

<?php 
session_start(); 
// Create connection 
$conn = new mysqli("localhost", "root", "", "members"); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$userID = $_SESSION['id']; 
$sql = "SELECT name, email, address, dob FROM users WHERE `users`.`id`=$userID"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
echo "<table><tr><th>Name</th><th>Email</th><th>Address</th><th>DOB</th></tr>"; 
    // output data of each row 
while($row = $result->fetch_assoc()) { 
     echo "<tr><td>".$row["name"]."</td><td>".$row["email"]."</td><td>".$row["address"]."</td><td>".$row["dob"]."</td></tr>"; 
    } 

echo "</table>"; 
} else { 
echo "<p>No Details</p><style>p{color: #336699; font-size: 20pt; font-family: Gulim; font-weight: bold; align: center; padding: 10px; position: absolute; top: 250; left: 600; z-index: 2; border-spacing: 0px;}</style> "; 
} 
$conn->close(); 
+1

Vielen Dank, es ist so arbeitet jetzt!!!!!! –

+0

Bitte markieren und up-vote die Antwort, wenn es für Sie gearbeitet hat. Danke – Aswathy