• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Login id bekommen und übergeben Fehler

Dixnes

Neues Mitglied
Hallo erstmal,
Ich weiß nicht genau wie ich mein Problem beschreiben soll... Aber ich bei meiner Seite Ein Login/regestrierung gemacht mit php.
Jetzt habe ich eine noch eine Seite erstellt, in die man Werte eintragen kann, wie name/email und diese werden dann in einer DB gespeichert.
Jetzt habe ich die id eines users (DB-name: users) und will nur die Werte aus Der 2. DB(name: accv)haben, die mit der eingeloggten Id übereinstimmen.

1. DB-name: users (id,username,email,password),
2. DB-name: accv (id,NameS,NameA,,Email,Password,#users_id)

Code:

// LOGIN
if (isset($_POST['login_user'])) {
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);

if (empty($username)) {
array_push($errors, "Username is required");
}
if (empty($password)) {
array_push($errors, "Password is required");
}

if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT (username,password) FROM users WHERE username='$username' AND password='$password' ";

$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) {
$_SESSION['username'] = $username;
$_SESSION['user_id'] = $results->fetch_object()->id; <----- hier hole ich mir die id
$_SESSION['success'] = "You are now logged in";
header('location: index.php');
}else {
array_push($errors, "Wrong username/password combination");
}
}
}

?>

Code:
Nun setze ich die Werte in die DB ein

<?php
session_start();
$con = mysqli_connect('localhost','root','');
if(!$con)
{
echo 'Not Connected To Server';
}
if (!mysqli_select_db ($con,'test'))
{
echo 'Database Not Selected';
}
$NameS = $_POST ['NameS'];
$NameA = $_POST['NameA'];
$Email = $_POST['Email'];
$Password = $_POST['Password'];
$UserId = $_SESSION['user_id'];


$sql = "insert into accv(NameS,NameA,Email,Password,users_id) values ('$NameS','$NameA','$Email','$Password', '$UserId')";
if (!mysqli_query($con,$sql))
{
echo 'Not Inserted';
}
else
{
echo 'Inserted Successfully';
}
header("refresh:1; url=gmail.php");

?>

Code: list.php
Jetzt gebe ich dir Daten auf der Seite wieder
<?php

session_start();
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$a = 1;
Line: 33 $sql = "SELECT NameS, NameA, Email, Password FROM accv WHERE users_id=".$_SESSION['user_id'];
Line: 34
foreach ($pdo->query($sql) as $row) {
echo "<b><i>".$a."</i></b>: <b>Webside Name:</b> <i>".$row['NameS']."</i>; </br> <b>Account name:</b> <i>".$row['NameA']."</i>; </br><b>Email:</b> <i>".$row['Email']."</i>;</br> <b>Passwort: </b><i>".$row['Password']."</i> </br> </br> ";
$a = $a + 1;
}

(Notice: Undefined index: user_id in C:\xampp\htdocs\AccountV2\list.php on line 33
Das sind die Fehler die ausgegeben wurden
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\AccountV2\list.php on line 34 )

Danke schon mal im vorraus :)
Lg
 
Werbung:
"SELECT (username,password) FROM users WHERE username='$username' AND password='$password' ";

Wo selektierst du die ID? Nirgendwo!

Richtig debuggen

  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Zurück
Oben