Gästebuch php MySQL Error

  • PHP

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Link.

    Gästebuch php MySQL Error

    Hallo,
    Ich arbeite gerade an einer art Gästebuch mit php und MySQL und bekomme einen Error bei dem Versuch den Text in die Datenbank aufzunehmen. Wäre echt gut wenn mir da jemand helfen könnte.

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. $pdo = new PDO('mysql:host=localhost;dbname=users', 'root', '#######');
    4. if(isset($_GET['login'])) {
    5. $email = $_POST['email'];
    6. $passwort = $_POST['passwort'];
    7. $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
    8. $result = $statement->execute(array('email' => $email));
    9. $user = $statement->fetch();
    10. if ($user !== false && password_verify($passwort, $user['passwort'])) {
    11. $_SESSION['userid'] = $user['id'];
    12. //hier
    13. if(!$error) {
    14. $eintrag = $_POST['eintrag']
    15. $statement = $pdo->prepare("INSERT INTO gaestebuch (email, eintrag) VALUES (:email, :eintrag)");
    16. $result = $statement->execute(array('email' => $email, 'eintrag' => $eintrag));
    17. if($result) {
    18. $showFormular = false;
    19. } else {
    20. echo 'ERROR<br>';
    21. }
    22. }
    23. //bis hier
    24. } else {
    25. $errorMessage = "email or password wrong<br>";
    26. }
    27. }
    28. ?>
    29. <!DOCTYPE html>
    30. <html>
    31. <head>
    32. <title>Geastebuch</title>
    33. </head>
    34. <body>
    35. <?php
    36. if(isset($errorMessage)) {
    37. echo $errorMessage;
    38. }
    39. ?>
    40. <form action="?login=1" method="post">
    41. E-Mail:<br>
    42. <input type="email" size="40" maxlength="250" name="email"><br>
    43. Password:<br>
    44. <input type="password" size="40" maxlength="250" name="passwort"><br><br>
    45. Text:<br>
    46. <input type="password" height="50" width="70" name="eintrag"><br>
    47. <br>
    48. <input type="submit" value="Posten">
    49. </form>
    50. </body>
    51. </html>


    Verschoben. ~Thunderbolt
    Bilder
    • datenbank1.PNG

      158,29 kB, 1.920×780, 124 mal angesehen
    • datenbank12.PNG

      166,39 kB, 1.920×724, 90 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Eugen1763 schrieb:

    und bekomme einen Error bei dem Versuch den Text in die Datenbank aufzunehmen
    Meine Glaskugel ist leider kaputt. Was für ein Fehler kommt?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Vllt. die SQL Schlüsselwörter mit ` markieren? Und dieses ":email" habe ich noch nie gesehen... Ich kenn mich jetzt nicht sonderlich gut mir SQl aus, aber wie wär es wenn du die Variable mit PHP in den SQL command einfügst? Dabei würde ich dich noch hinweise, deinen Script Injections sicher zu gestallten.

    SQL-Abfrage

    1. SELECT * FROM `users` WHERE `email` = $email

    Wie @Trade schon erwähnt hat, wäre eine Fehlermeldung von grosser Hilfe.
    schlüsselwörter mit ´ zu markieren is ned zwingend nötig.

    Fehlermeldung wär nice damit wir dir helfen können
    Auf der Suche nach Coding-Kursen auf Lence.at

    Eugen1763 schrieb:

    isset($_GET['login']

    Eugen1763 schrieb:

    email = $_POST['email'];
    Ist Schwachsinn. Zuerst frägst du eine GET Variable ab, dann holst du dir die Mail-Adresse und das PW aus der POST-Variable raus. Das kann nicht gehen. ENTWEDER ODER.

    Zeit mal den HTML Teil her (also wo du die Form deklariert hast, in der der User die Eingeben macht) (nichg gesehen *augen-rol*)
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    @Radinator Das ist so nicht ganz richtig, das funktioniert.

    PHP-Quellcode

    1. <?php
    2. echo $_GET['foo'].' | '.$_POST['bar'];
    3. ?>


    Spoiler anzeigen

    Quellcode

    1. $ curl 'http://localhost:8080/get-post.php?foo=123' -v --data "bar=456"
    2. * STATE: INIT => CONNECT handle 0x600057820; line 1397 (connection #-5000)
    3. * Added connection 0. The cache now contains 1 members
    4. * Trying ::1...
    5. * TCP_NODELAY set
    6. * STATE: CONNECT => WAITCONNECT handle 0x600057820; line 1450 (connection #0)
    7. * Connected to localhost (::1) port 8080 (#0)
    8. * STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600057820; line 1557 (connection #0)
    9. * Marked for [keep alive]: HTTP default
    10. * STATE: SENDPROTOCONNECT => DO handle 0x600057820; line 1575 (connection #0)
    11. > POST /get-post.php?foo=123 HTTP/1.1
    12. > Host: localhost:8080
    13. > User-Agent: curl/7.50.3
    14. > Accept: */*
    15. > Content-Length: 7
    16. > Content-Type: application/x-www-form-urlencoded
    17. >
    18. * upload completely sent off: 7 out of 7 bytes
    19. * STATE: DO => DO_DONE handle 0x600057820; line 1654 (connection #0)
    20. * STATE: DO_DONE => WAITPERFORM handle 0x600057820; line 1781 (connection #0)
    21. * STATE: WAITPERFORM => PERFORM handle 0x600057820; line 1791 (connection #0)
    22. * HTTP 1.1 or later with persistent connection, pipelining supported
    23. < HTTP/1.1 200 OK
    24. < Date: Wed, 23 Nov 2016 09:33:31 GMT
    25. * Server Apache/2.4.6 (Win32) PHP/5.4.17 is not blacklisted
    26. < Server: Apache/2.4.6 (Win32) PHP/5.4.17
    27. < X-Powered-By: PHP/5.4.17
    28. < Content-Length: 9
    29. < Content-Type: text/html
    30. <
    31. * STATE: PERFORM => DONE handle 0x600057820; line 1955 (connection #0)
    32. * multi_done
    33. * Curl_http_done: called premature == 0
    34. * Connection #0 to host localhost left intact
    35. * Expire cleared
    36. 123 | 456


    Das $_GET hat nichts mit der Art des Requests zu tun: $_GET

    gabriel-b schrieb:

    Und dieses ":email" habe ich noch nie gesehen
    Damit sind wohl Prepared Statements gemeint: php.net/manual/de/pdo.prepared-statements.php Nur hat der TE hier die Parameter an die Platzhalter nicht per bindParam gebunden, sondern sie der Execute-Funktion übergeben.
    @Eugen1763: Kannst du mal von deinem Statement den $queryString zu posten? Oder endlich mal auf die Forderung von Trade und gabriel-b eingeben und uns die Fehlermeldung zeigen?

    quote='slice','http://www.vb-paradise.de/index.php/Thread/120647-Gästebuch-php-MySQL-Error/?postID=1049126#post1049126']Das $_GET hat nichts mit der Art des Requests zu tun[/quote]Ok. Aussage zurück gezogen!
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    @Eugen1763 Du hast in Zeile 17 kein Semikolon am Ende.

    @KingTimon Backticks sollte man schon verwenden. Es nicht zu machen nur weil es auch geht, macht's nicht richtig. Vor allem kriegst du Probleme, wenn der Name des Feldes gleich einer existierenden MySQL-Funktion ist (time, now, count, ...). dba.stackexchange.com/a/23130 zum extra nachlesen.

    @Radinator Blödsinn. In den meisten Fällen arbeitet man mit GET um den content zu spezifizieren der geladen werden soll. Und verwertbare Daten (aus Formularen o.ä.) werden via POST geschickt, weil sicherer.

    Wie wär's mal mit konstruktiven Posts? Zu faul sein um den Code zu lesen aber fleißig für den eigenen Postcount kommentieren läuft bei euch.

    Link :thumbup:
    Hello World