MySQL und PhP: 500 bei setzten eines wertes

  • PHP

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

    MySQL und PhP: 500 bei setzten eines wertes

    Ich habe eine Tabelle namens login unf eine db namens login.
    Ich habe 4 Spalten:
    ID|USER|PASSWORT|VALI (alles klein)

    auch die verbindung zur db klappt eigentlich.

    Doch wenn ich weiter mache und den wert setzen will bekomme ich nur 500 Fehler, obwohl die Syntax richtig ist.
    Was fehlt mir? :/

    PHP-Quellcode

    1. <?php
    2. if (isset($_GET["u"])){
    3. $mail = $_GET["m"];
    4. $user = $_GET["u"];
    5. $password = $_GET["p"];
    6. $verbindung = mysql_connect("localhost", "user", "pw");
    7. mysql_select_db("login");
    8. $sql = "UPDATE login SET vali='1' WHERE user='$user')";
    9. if ($conn->query($sql) === TRUE) {
    10. mysql_close($verbindung);
    11. echo "Your Verifyed <a href=\"login.php\">Login</a>";
    12. } else {
    13. echo "Sth went wrong!";
    14. };
    15. } else {
    16. echo "What are you doing here?";
    17. };
    18. ?>
    Du hast vergessen deine Variable in den String richtig einzubinden. Um einen String mit dem Inhalt einer Variable zu verknüpfen, musst du den Punkt (.) verwenden.

    Schau dir mal das Query an,
    Ganz zu schweigen von der Angriffsfläche die du jedem ScriptKiddy bietest (SQL Injection)

    Lg Radinator
    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
    Hi,

    an dem Code ist viel mehr kaputt.

    - Vergiss mysqli und verwende PDO
    - Benutzereingaben müssen escaped werden. Wie @Radinator schon sagte, so lässt sich leicht SQL-Injection ausführen und deine Datenbank hacken.
    - Was macht die schließende Klamemr in Zeile 10?
    - GET ist für sensible Daten schonmal Mist - mach das mit POST
    - Auf user zu prüfen geht zwar, ist aber ungeil. Dafür wär ne autoincrement ID eigentlich da

    Hau den ganzen Code zum Teufel und mach' es ordentlich.

    Grobes Beispiel

    PHP-Quellcode

    1. <?php
    2. $db = 'datenbankname';
    3. $user = 'benutzername';
    4. $pass = 'kennwort';
    5. $pdo = false;
    6. $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
    7. try{
    8. $pdo = new PDO('mysql:host=localhost;dbname=' . $db . ';charset=utf8', $user, $pass, $options);
    9. $this->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    10. }catch(Exception $e){
    11. exit("<p>Verbindung zur Datenbank fehlgeschlagen!</p>");
    12. }
    13. if(isset($_POST['submit'])){
    14. if(trim($_POST['user']) != '' && trim($_POST['pass']) != ''){
    15. if($pdo->exec("UPDATE `login` SET `vali` = '1' WHERE `user` = " . $pdo->quote($_POST['user']))){
    16. echo "Erfolgreich";
    17. }else{
    18. echo "Fehlgeschlagen:<br>";
    19. echo print_r($pdo->errorInfo(), 1);
    20. }
    21. }
    22. }
    23. ?>


    So in etwa die Richtung. Normal hat man dafür auch ne eigene Klasse und alles aber was soll's.

    Versuch es mal so und melde dich dann erneut falls dabei etwas nicht klappt oder Fragen auftauchen.


    Link :thumbup:
    Hello World