2017-11-30 2 views
0

Ich habe versucht, eine Seite, wo Sie sich anmelden können und dann ändern Sie Ihren Spitznamen oder/und Passwort. Alles in meiner SQL-Datenbank, aber wenn ich versuche, die ID in der Sitzungsvariablen zu speichern, funktioniert es nicht. Irgendwelche Vorschläge?Php bekommen ID des aktuellen Benutzers funktioniert nicht

Ich benutze XAMPP, Benutzer ist meine Tabelle in Datenbankbenutzer, ich posten nicht Login-Formular-Code, weil es sehr einfach ist.

Alles ist verbunden, Code gibt keine Warnungen oder Fehler.

login.php (Fragment):

$sql = "SELECT * FROM users WHERE nickname = '$myusername' and pass = '$mypassword' and confirmed = 1"; 
    $result = mysqli_query($conn,$sql); 
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC); 

    $count = mysqli_num_rows($result); 

    // If result matched $myusername and $mypassword, table row must be 1 row 

    if($count == 1) { 

     $logged = true; 

     while($row = mysqli_fetch_assoc($result)) { 
      echo "id: " . $row["id"]; 
      $_SESSION['currentId'] = $row["id"]; 
      echo 'Id: ' . $_SESSION['currentId']; 
     } 
    }else { 
    $error = "Your Login Name or Password is invalid"; 
    } 
} 

change.php (ganz):

<?php 
session_start(); 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "Users"; 
$currentId = $_SESSION['currentId']; 

if($currentId<1){echo 'No Id.';} 
else {echo 'CurrentId: '; 
echo $currentId;} 
// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
echo "Connected successfully <br>"; 

if($_SERVER["REQUEST_METHOD"] == "POST") { 
    // username and password sent from form 

    $aCUname = mysqli_real_escape_string($conn,$_POST['CUname']); 
    $aCUpass = mysqli_real_escape_string($conn,$_POST['CUpass']); 

    $sql = "UPDATE users SET nickname = '$aCUname', pass = '$aCUpass' WHERE id = '$currentId';"; 
    $result = mysqli_query($conn,$sql); 
    echo 'Updated successfully.'; 
} 
?> 

Vielen Dank für Hilfe.

+2

Ich für den einen, sehe keine Fehlerbehandlung von irgendwelchen Arten. –

+0

Könnten Sie bitte die Fehlermeldung anzeigen? –

+0

In Ihrem login.php-Code führen Sie zweimal mysql_fetch aus. Der Zeilenzeiger erreicht das Ende einmal, nachdem er einen mysql fetch ausgeführt hat. Also entferne die erste und versuche es. –

Antwort

0

Ich habe eine Lösung. Ich musste nur löschen

$row = mysqli_fetch_array($result,MYSQLI_ASSOC); 

von login.php. Danke an @Shashikumar Misal!

Verwandte Themen