Video Tutorial - PHP Registrierung | Loginsystem

Hi,

ja, es dürfen keine Informationen an den Client gesendet werden bevor der header gesetzt ist. Du kannst also entweder den ganzen Output buffern (ob_start()) und erst dann ausgeben, oder du achtest darauf, dass keine Ausgabe in der Logik stattfindet.

Ich vermute mal, dass es an
PHP:
echo $db->error;

liegt, wenn du diese Zeile nicht wieder auskommentiert/entfernt hast ;)
 
Hallo, Danke erstmal für das tolle Tutorial! :)

Leider klappt es bei mir noch nicht so ganz. Ich kriege folgenden Fehler:
Parse error: syntax error, unexpected T_BOOLEAN_OR in C:\xampp\htdocs\registration_logic.php on line 6

Zeile 6 beinhaltet:
PHP:
if(!isset($_POST['username'])) || !isset($_POST ['pass']) || !isset($_POST ['email']) || !isset($_POST ['fullname'])  ||

Habe noch fullname als Feld zusätzlich, alles andere sollte eigentlich gleich sein.
Was habe ich denn übersehen? :rolleyes:
 
Zuletzt bearbeitet:
Parse error: syntax error, unexpected T_BOOLEAN_OR in C:\xampp\htdocs\registration_logic.php on line 6

Zeile 6 beinhaltet:
PHP:
if(!isset($_POST['username'])) || !isset($_POST ['pass']) || !isset($_POST ['email']) || !isset($_POST ['fullname'])  ||

Bei dem if - Statement hast du 1. falsch gesetzte Klammern und 2. am Ende ein || (=oder) das keinen Sinn ergibt. ;)
 
Hallo, Danke für den Hinweis - da waren die Augen wohl schon müde ;)

Leider erscheint nun die Fehlermeldung:

PHP:
$stmt = $db ->prepare($sql);

Fehler:
Notice: Undefined variable: db in C:\xampp\htdocs\registration_logic.php on line 42
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\registration_logic.php on line 42


Keine Verbindung zur Datenbank?
 
Der Fehler besagt, dass die Variable $db gar nicht definiert wurde und somit ein Benutzen als Objekt unmöglich ist!

Ich habe nicht deinen Code / des Tutorials zur Hand. Kannst du vielleicht einen Link geben oder ich suche kurz unter den Tutorials?

//Edit Leider ist beim Video-Tutorial der Code nicht als Text mitgeliefert. Also am einfachsten wäre es, wenn du einfach deinen Code posten würdest.
 
Die registration_logic:

PHP:
<?php

if(!isset($_POST['submit'])) return;

// Übeprüfen ob Daten vollständig eingegeben sind
if (!isset($_POST['username'])||!isset($_POST['pass'])||!isset($_POST['email'])||!isset($_POST['fullname'])||
empty($_POST['username'])||empty($_POST['pass'])||empty($_POST['email'])||empty($_POST['fullname'])) {

    $error_msg = "Das Formular wurde nicht vollständig ausgefüllt.";
	return;
}

// Passwörter überprüfen
if($_POST['pass'] [0] !== $_POST['pass'] [1])
{
	$error_msg = "Die Passwörter stimmen nicht überein.";
	return;
}

// Hash-Code generieren und Benutzername prüfen
$_POST['pass'] = hash('sha256', $_POST['pass'] [0].$salt);
if(strlen ($_POST['username']) > 50)
{
	$error_msg = "Der Benutzername ist zu lang.";
	return;
}
// Leerzeichen entfernen
$_POST['username'] = trim($_POST['username']);

if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{ 
	$error_msg = "Die E-Mail Adresse ist ungültig";
	return;
}

$sql = 'INSERT INTO
			users
			(full_name, users_name, password, email)
		VALUES
			(?, ?, ?, ?)';

$stmt = $db->prepare($sql);

$stmt->bind_param('ssss', $_POST['fullname'], $_POST['username'], $_POST['pass'], $_POST['email']);

if(!$stmt->execute())
{
	$error_msg = "Es ist ein Fehler aufgetreten";
	return;
}
$stmt->close();

$success_msg = "Das Benutzerkonto wurde erfolgreich angelegt";
$error_msg = "Das Benutzerkonto wurde erfolgreich angelegt";

?>

Danke schon mal für die Mühe! :)
 
Du erstellst auch nirgends im Code ein neues PDO-Objekt.

Beispiel für MySQL:
PHP:
$db = new PDO("mysql:host=localhost;dbname=MyLoginDB", 'user', 'password');
 
Hallo,

dachte es reicht die connect.php die ich eingebunden hab wie in dem Video-Tutorial:

PHP:
<?php

   $mysqlhost="localhost";
   $mysqluser="x";
   $mysqlpasswd="x";
   $mysqldbname="x";
   $mysqltable="users";
   $mysqlpwd="password";
   $mysqlname="users_name";

   $link = @mysql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);
   if ($link == FALSE) {
     echo "<p><b>Keine Verbindung zur Datenbank.";
     echo "Bitte versuchen Sie es später noch einmal.</b></p>\n";
     exit();
   }
   
   mysql_select_db($mysqldbname);
   $salt = "njegrngjen45344rgujiernguier756jeruige3453ruigeriugn";
    
?>

Muss ich also so wie du geschrieben hast $db definieren?
Das kam im Video leider nicht vor
 
Wieso nutzt der Ersteller des Videotutorials (m0pad?) auf ein mal eine persistene MySQL-Verbindung und im vorherigen Skript das PDO-Layer?

Naja, du kannst ja diesen Code vorerst auskommentieren und meinen oben geposteten Code anhängen.
 
Zurück