tutorials.de Buch-Aktion 05/2012
Seite 4 von 5 ErsteErste 12345 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
60
ZUGRIFFE
4292
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #46
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    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.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  2. #47
    VincentVega20 VincentVega20 ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    Die registration_logic:

    PHP-Code:
    <?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!
     

  3. #48
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Du erstellst auch nirgends im Code ein neues PDO-Objekt.

    Beispiel für MySQL:
    PHP-Code:
    $db = new PDO("mysql:host=localhost;dbname=MyLoginDB"'user''password'); 
    VincentVega20 bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  4. #49
    VincentVega20 VincentVega20 ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    Hallo,

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

    PHP-Code:
    <?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
     

  5. #50
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    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.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  6. #51
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Die Verbindungsherstellung ist die PHP-MySQL-Extension, der Rest PDO.
    Kann nicht gehen.
    Wenn das im Video auch so ist...
    Die Zeile von Comfreek macht im Grunde das Gleiche.
    Zugangsdaten anpassen, einfügen.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  7. #52
    VincentVega20 VincentVega20 ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    Hab ich die Zeile nun vor $stmt = $db->prepare($sql); gesetzt, nun erhalte ich die Fehlermeldung:

    Fatal error: Call to undefined method PDOStatement::bind_param() in C:\xampp\htdocs\registration_logic.php on line 47

    Och man
     

  8. #53
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Die Funktion heißt bindParam.

    Ich glaube, ich sollte mir mal das Tutorial komplett anschauen...
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  9. #54
    Avatar von m0dpad
    m0dpad m0dpad ist offline Mitglied Gold
    Registriert seit
    Mar 2011
    Beiträge
    122
    Ja das heißt, dass die Variable in der eigentlich das Datenbankobjekt instanziiert sein sollte nicht definiert ist.

    Also irgendwo fehlt $db = new Mysqli(...); oder irgendein Script wird nicht richtig eingebunden.
     
    Ideen oder Vorschläge für Video Tutorials ? Einfach Feedback geben!
    Mein Blog für Video Tutorials, vor allem PHP.

  10. #55
    VincentVega20 VincentVega20 ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    Hm okay, irgendwie habe ich das in deinem Video-Tutorial leider nicht gefunden/übersehen.
    Gibts auf deinem Blog das Tutorial nochmal in Schriftform?
    EDIT: Hab`s schon

    Hab nun BindParam korrigiert, aber gleich der nächste Fehler
    Warning: PDOStatement::bindParam() expects parameter 3 to be long, string given in C:\xampp\htdocs\registration_logic.php on line 47

    Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\xampp\htdocs\registration_logic.php on line 49
    Geändert von VincentVega20 (18.01.12 um 18:37 Uhr)
     

  11. #56
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Sorry, es gibt auch bei MySQLi eine bind_param-Funktion! (Ich bin davon ausgegangen, dass es PDO wäre.)

    Das erklärt dann auch die Config-Datei.

    Versuche mal folgenden Code:
    PHP-Code:

    <?php 

       $mysqlhost
    ="localhost"
       
    $mysqluser="x"
       
    $mysqlpasswd="x"
       
    $mysqldbname="x";
     
       
    $db = new MySQLi($mysqlhost$mysqluser$mysqlpasswd$mysqldbname);
        
       
    $salt "njegrngjen45344rgujiernguier756jeruige3453ruigeriugn"
         
    ?>
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  12. #57
    VincentVega20 VincentVega20 ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    Nichts funktioniert, hab den Code jetzt komplett verworfen - da ist wohl nichts mehr zu retten.

    Hab nun die 3 Files von http://staticfloat.com/2011/03/01/lo...enutzerkonten/.
    Leider bringt er mir selbst da den Fehler:

    Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\registration_logic.php on line 50
     

  13. #58
    Avatar von Raisch
    Raisch Raisch ist offline extraordinary bit
    Registriert seit
    Aug 2011
    Ort
    Berlin
    Beiträge
    333
    Zitat Zitat von VincentVega20 Beitrag anzeigen
    Nichts funktioniert, hab den Code jetzt komplett verworfen - da ist wohl nichts mehr zu retten.

    Hab nun die 3 Files von http://staticfloat.com/2011/03/01/lo...enutzerkonten/.
    Leider bringt er mir selbst da den Fehler:

    Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\registration_logic.php on line 50
    Dann poste mal Line 50 und den Teil wo das Object erstellt wird...

    Gruß
     

  14. #59
    Avatar von Raisch
    Raisch Raisch ist offline extraordinary bit
    Registriert seit
    Aug 2011
    Ort
    Berlin
    Beiträge
    333
    Zitat Zitat von VincentVega20 Beitrag anzeigen
    PHP-Code:
    $stmt->bind_param('sssi'$_POST['username'], $_POST['pass'], $_POST['email'], $user_ip); 
    1. poste die Zeile wo das $stmt Objekt erstellt wird ($stmt = $objDB->prepare(...))!
    2. ist dein Aufruf von bind_param falsch...

    Der Aufbau sollte, mMn, so sein:
    PHP-Code:
    $objDB = new mysqli/* */ );

    $objStmt $objDB->prepare'INSERT INTO table VALUES (?, ?, ?, ?, ?)' );

    $objStmt->bind_param'sssi'$username$pass$email$ip );

    $username $objDB->real_escape_string$_POST['username'] );
    $pass     $objDB->real_escape_string$_POST['pass'] );
    $email    $objDB->real_escape_string$_POST['email'] );
    $ip       $objDB->real_escape_string$user_ip );

    $objStmt->execute(); 
    Gruß
     

  15. #60
    Avatar von m0dpad
    m0dpad m0dpad ist offline Mitglied Gold
    Registriert seit
    Mar 2011
    Beiträge
    122
    Zitat Zitat von Raisch Beitrag anzeigen
    PHP-Code:
    $username $objDB->real_escape_string$_POST['username'] );
    $pass     $objDB->real_escape_string$_POST['pass'] );
    $email    $objDB->real_escape_string$_POST['email'] );
    $ip       $objDB->real_escape_string$user_ip ); 
    Das macht der Treiber sowieso, ist daher nicht notwendig.
     
    Ideen oder Vorschläge für Video Tutorials ? Einfach Feedback geben!
    Mein Blog für Video Tutorials, vor allem PHP.

Ähnliche Themen

  1. Loginsystem: Problem mit Tutorial!
    Von UnoDosTres im Forum PHP
    Antworten: 16
    Letzter Beitrag: 14.09.05, 16:32
  2. Antworten: 7
    Letzter Beitrag: 29.06.05, 20:38
  3. Frage zu Tutorial "LoginSystem" > Erstellung?
    Von Ingo41 im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 20.12.04, 17:59
  4. Frage zum Tutorial Loginsystem
    Von Tucker im Forum PHP
    Antworten: 4
    Letzter Beitrag: 21.08.04, 12:41

Stichworte