Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datenbank per php mit variablen füllen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Datenbank per php mit variablen füllen

    Hallöchen,

    Ich brauche dringend eine Lösung für folgendes Problem:
    Ich hab für meine website eine auf MySQL basierende Login-Seite gebastelt (klappt auch soweit) jetz möchte ich allerdings noch den Usern die Möglichkeit geben ihr Passwort zu ändern. Dazu müsste ich dann die $_POST["Passwort"] variable in die Datenbank einfügen bzw updaten.
    Hab es auch schon versucht, aber der eintrag in der Datenbank ändert sich nicht. Hab schon recht viel sufu benutzt aber habe nix speziell zu meinem Problem gefunden. Wäre super dankbar für schnelle Hilfe!

    Hier mein momentanes script (Die datai heißt PW_change.php):
    Code:
    <?php
    SESSION_START();
    if (isset($_POST["oldpw"]) && isset($_POST["newpw1"]) && isset($_POST["newpw2"]))
    {
    	if ($_POST["oldpw"] == $_SESSION["Passwort"])
    	{
    			if ($_POST["newpw1"] == $_POST["newpw2"])
    			{
    			mysql_connect("localhost","****","****");
    			mysql_select_db("Accounts");
    			$pwnew = $_POST["pwnew1"];
    			$user = $_SESSION["User"];
    		
    			$sqlab = "update `accounts` set `Passwort` = '" . $pwnew . "' where `accounts` . `User` = '" . $User . "'";
    		 
    			 mysql_query($sqlab);
    			 echo "Passwort erfolgreich geändert";
    		 	}
    		 	else
    		 	echo "Passwort neu ist nicht gleich Passwort neu wiederholung.";
    	}
    	else
    	echo "das alte Passwort ist nicht Korrekt.";
    }
    include "session.inc.php";
    ?>
    <html>
    
    <head>
    <title>Passwort ändern</title>
    </head>
    
    <body link="#FF9900" vlink="#FFFF00" text="#FF9900" bgcolor="#000080">
    <form action="PW_change.php" method="POST">
    <p align="center">&nbsp;</p>
    <?php echo "<p align='center'><b><font size='5'>Passwort ändern für: " . $_SESSION['User'] . " </font></b></p>"; ?>
    <div align="center">
      <center>
      <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="55%" id="AutoNumber1">
        <tr>
          <td width="84%">Altes Passwort: </td>
          <td width="50%"> <input type="Password" size="20" name="oldpw"></td>
        </tr>
        <tr>
          <td width="84%">Neues Passwort:</td>
          <td width="50%"> <input type="Password" size="20" name="newpw1"></td>
        </tr>
        <tr>
          <td width="84%">Neues Passwort wiederholen:</td>
          <td width="50%"> <input type="Password" size="20" name="newpw2"></td>
        </tr>
      </table>
      </center>
    </div>
    <p align="center">&nbsp;
    <input type="submit">
    <input type="reset"> </p>
    </form>
    </body>
    
    </html>
    Also meines Wissens nach müsste der Fehler lediglich in dieser Zeile liegen:
    $sqlab = "update `accounts` set `Passwort` = '" . $pwnew . "' where `accounts` . `User` = '" . $User . "'";

    Wenn die also nur jemand berichtigen könnte wär mir schon echt geholfen!

    Vielen Dank im Voraus!


  • #2
    Du setzt $user und verwendest $User.

    ps: passwörter haben innerhalb einer session imho nichts zu suchen!
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Also erstmal danke, habe die Variable jetzt geändert $User und $User stimmen jetz überein .
      Allerdings löst das mein Problem leider auch noch nicht. Wenn ich das Formular ausfülle und Absende ändert sich dennoch nichts in der Datenbank.
      Fällt euch noch ein Fehler auf??

      Kommentar


      • #4
        Laß Dir mal den Wert von $sqlab ausgeben und schalte error-report an.
        Denn ma gucken, was kommt...
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          also hab mir den wert ausgeben lassen:
          update accounts set Passwort = where accounts . User = theonejrm

          dabei ist aufgefallen, dass ich noch unterschiedliche Benennungen im Formular und im PHP code hatte. Jetzt ist die Ausgabe folgendermaßen:
          update accounts set Passwort = 'aa' where accounts . User = 'theonejrm'

          aber in der Datenbank ändert sich immer noch nix.
          PS.: Was meinst du mir error-report? und wie schalte ich den ein?

          Kommentar


          • #6
            PHP-Code:
            $pwnew $_POST["pwnew1"]; 
            vs.
            Code:
            <input type="Password" size="20" name="newpw1">
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Richtig. Das war es was ich meinte mit unterschiedlichen bennenungen. Die habe ich aber mittlerweile korrigiert. vllt hier nochmal mein aktueller code:
              Code:
              <?php
              SESSION_START();
              if (isset($_POST["oldpw"]) && isset($_POST["newpw1"]) && isset($_POST["newpw2"]))
              {
              	if ($_POST["oldpw"] == $_SESSION["Passwort"])
              	{
              			if ($_POST["newpw1"] == $_POST["newpw2"])
              			{
              			mysql_connect("localhost","****","****");
              			mysql_select_db("Accounts");
              			$pwnew = $_POST["newpw1"];
              			$User = $_SESSION["User"];
              		
              			$sqlab = "update accounts set Passwort = '" . $pwnew . "' where accounts . User = '" . $User . "'";
              		 	echo $sqlab; //zu testzwecken
              			 mysql_query($sqlab);
              			 echo "Passwort erfolgreich geändert";
              		 	}
              		 	else
              		 	echo "Passwort neu ist nicht gleich Passwort neu wiederholung.";
              	}
              	else
              	echo "das alte Passwort ist nicht Korrekt.";
              }
              include "session.inc.php";
              ?>
              <html>
              
              <head>
              <title>Passwort ändern</title>
              </head>
              
              <body link="#FF9900" vlink="#FFFF00" text="#FF9900" bgcolor="#000080">
              <form action="PW_change.php" method="POST">
              <p align="center">&nbsp;</p>
              <?php echo "<p align='center'><b><font size='5'>Passwort ändern für: " . $_SESSION['User'] . " </font></b></p>"; ?>
              <div align="center">
                <center>
                <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="55%" id="AutoNumber1">
                  <tr>
                    <td width="84%">Altes Passwort: </td>
                    <td width="50%"> <input type="Password" size="20" name="oldpw"></td>
                  </tr>
                  <tr>
                    <td width="84%">Neues Passwort:</td>
                    <td width="50%"> <input type="Password" size="20" name="newpw1"></td>
                  </tr>
                  <tr>
                    <td width="84%">Neues Passwort wiederholen:</td>
                    <td width="50%"> <input type="Password" size="20" name="newpw2"></td>
                  </tr>
                </table>
                </center>
              </div>
              <p align="center">&nbsp;
              <input type="submit">
              <input type="reset"> </p>
              </form>
              </body>
              
              </html>

              Kommentar


              • #8
                Hier nochmal das ergebnis wenn ich $sqlab ausgeben lasse:
                Code:
                update `accounts` set Passwort = 'aa' where `accounts` . User = 'theonejrm'
                brauche ich wirklich überall die ``?
                sind noch irgendwelche Fehler in der befehlszeile?

                Kommentar


                • #9
                  Wenn Deine Tabelle accounts heißt und die entsprechenden Spalten Passwort und User, sieht das eigentlich korrekt aus.
                  Könnte höchstens noch sein, daß er den DS mit dem Wert theonejrm bei User nicht findet...

                  Achso:
                  PHP-Code:
                  error_reporting(-1);
                  ini_set('display_errors',true); 
                  muß an Anfang Deines Skriptes für Fehler-Report!

                  Die DB-Fehler holst Du Dir mit
                  PHP-Code:
                  mysql_query(...) or die(mysql_error()); 
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #10
                    Naja, ganz glauben möchte ich dir nicht, denn im geposteten Code stehen keine Backticks im SQL Statement.

                    update `accounts` set Passwort = 'aa' where `accounts` . User = 'theonejrm'
                    PHP-Code:
                    $sqlab "update accounts set Passwort = '" $pwnew "' where accounts . User = '" $User "'"
                    Setze das error_reporting hoch und schau, welche Fehler wirklich auftreten:
                    PHP-Code:
                    error_reporting(-1);
                    ini_set("display_errors"1); 
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Jaaa $sqlab stimmt tatsächlich!
                      Allerding ist mir nicht aufgefallen das ich noch eine falsche bezeichnung meiner datenbank hatte! Auf dem webserver hatte die einen anderen namen als bei meinen tests mit xampp -.-
                      Aber auf jeden fall vielen dank für eure Hilfe!
                      Immerhin hatte ich ja auch noch einige andere Fehler die ich jetz endlich behoben habe
                      Nochmals Danke

                      Kommentar


                      • #12
                        DANKE euch allen!! $sqlab stimmte aber jetzt bereits wie Arne sagte
                        Aber mein letzter fehler war noch in dem namen meiner datenbank -.-
                        Da ich vorher die seite vorher mit xampp getestet hatte und auf dem webserver jetzt aber einen Datenbanknamen vorgegeben bekam... und hab natürlich vergessen das zu aktuallisieren ^^
                        naja jetzt jedenfalls funktioniert es!
                        Nochmal vielen dank füür eure Hilfe!!

                        Kommentar

                        Lädt...
                        X