Profil Bearbeiten Richtig Verwenden?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzeigen
arbeit
bedingung
befehl
code
datenbank
datum
email
fehler
feld
formular
http
mache
nutzer
problem
profil
server
speichern
test
url
-
Hallo liebe Community, ich möchte das meine Nutzer ihr Profil Bearbeiten können und habe eine edit.php erstellt mit Folgendem Inhalt
<?php if(!isset($_SESSION['userid'])) { die('Du bist nicht Berechtigt diese Seite zu sehen.<br><br>Bitte zuerst <a href="../index.php">einloggen.'); } //Abfrage der Nutzer ID vom Login $userid = $_SESSION['userid']; $sql = "SELECT * FROM users WHERE id = ".$userid; foreach ($pdo->query($sql) as $row) { echo "BenutzerID:" .$row['id']."<br />"; echo "Benutzername:" .$row['username']."<br />"; echo 'E-Mail: <input type="text" name="email" size="35" value="'.$row['email'].'"><br />'; echo 'Name: <input type="text" name="vorname" size="35" value="'.$row['vorname'].'"><input type="text" name="nachname" size="35" value="'.$row['nachname'].'"><br />'; echo 'Straße, Nr.: <input type="text" name="adresse" size="35" value="'.$row['adresse'].'"><br />'; echo 'PLZ, Ort: <input type="text" name="plz" size="35" value="'.$row['plz'].'"><br />'; echo "Registriert: " .$row['created_at']."<br />"; echo "Premium Kunde?: " .$row['premium']."<br />"; echo "Servertyp: " .$row['servertyp']."<br />"; echo "Serveradresse: " .$row['serveradresse']."<br />"; echo 'Serverpasswort: <input type="text" name="serverpasswort" size="35" value="'.$row['serverpasswort'].'"><br />'; echo '<input type="submit" name="submit" value="Profil Speichern">'; } ?>
Was muss ich jetzt noch hinzufügen damit es auch klappt? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Eingabeformulare gehören für gewöhnlich in ein <form> Tag.
<form action="edit.php" method="post"> <input ... </form>
Dann musst du die Angaben auch noch auslesen mit$Mail=$_POST['email'];
und danach in die Datenbank eintragen.
mylonky schrieb:
echo 'Serverpasswort: <input type="text" name="serverpasswort" size="35" value="'.$row['serverpasswort'].'"><br />';
Ist es notwendig, dass das Passwort im Klartext ist? Andernfalls solltest du es - wie alle Passwörter - nur als Hash speichern.
Beitrag zuletzt geändert: 27.6.2016 23:19:50 von test42test -
Ich glaube ich mache es Falsch ^^"
<?php if(!isset($_SESSION['userid'])) { die('Du bist nicht Berechtigt diese Seite zu sehen.<br><br>Bitte zuerst <a href="../index.php">einloggen.'); } //Abfrage der Nutzer ID vom Login $userid = $_SESSION['userid']; $sql = "SELECT * FROM users WHERE id = ".$userid; foreach ($pdo->query($sql) as $row) { echo '<form action="test.php" method="post">'; echo "BenutzerID:" .$row['id']."<br />"; echo "Benutzername:" .$row['username']."<br />"; echo 'E-Mail: <input type="text" name="email" size="35" value="'.$row['email'].'"><br />'; echo 'Name: <input type="text" name="vorname" size="35" value="'.$row['vorname'].'"><input type="text" name="nachname" size="35" value="'.$row['nachname'].'"><br />'; echo 'Straße, Nr.: <input type="text" name="adresse" size="35" value="'.$row['adresse'].'"><br />'; echo 'PLZ, Ort: <input type="text" name="plz" size="35" value="'.$row['plz'].'"><br />'; echo "Registriert: " .$row['created_at']."<br />"; echo "Premium Kunde?: " .$row['premium']."<br />"; echo "Servertyp: " .$row['servertyp']."<br />"; echo "Serveradresse: " .$row['serveradresse']."<br />"; echo 'Serverpasswort: <input type="text" name="serverpasswort" size="35" value="'.$row['serverpasswort'].'"><br />'; echo '<input type="submit" name="submit" value="Profil Speichern">'; echo '</form>' } ?>
test42test schrieb:
Ist es notwendig, dass das Passwort im Klartext ist? Andernfalls solltest du es - wie alle Passwörter - nur als Hash speichern.
In diesem Falle Ja, das ganze ist für ein UCP ergo haben nur Admins und der User selbst zugriff auf das Profil, mit serverpasswort ist an der stelle also nicht das Benutzerpasswort vom User gemeint (welches als Hash gespeichert wird) sondern ein Vom User Hinterlegtes Passwort damit wir auf seinem Server kommen können ohne vorher ein Neues Anlegen zu müssen falls der User ein Problem hat, Hinterlegt er dort kein Passwort dann ist der Server für gewöhnlich ohne Passwort und Somit öffentlich zugänglich, ergo könnten wir mit einem Hash vom Passwort nicht unsere Arbeit machen -
Wie sieht denn deine test.php aus? Vielleicht liegt es ja daran.
-
Mit dem Hinweis "es geht noch nocht" kommen wir nicht vorwärts
Gibt es eine Fehlermeldung?
Wir das Formular überhaupt angezeigt?
Sind im Formular die Felder gefüllt?
Kommst Du bis zur 'test.php' oder gibt es schon vorher Probleme?
Bitte etwas konkreter!
Beitrag zuletzt geändert: 28.6.2016 9:54:48 von dunkeltuten -
dunkeltuten schrieb:
Gibt es eine Fehlermeldung?
Wir das Formular überhaupt angezeigt?
Sind im Formular die Felder gefüllt?
Kommst Du bis zur 'test.php' oder gibt es schon vorher Probleme?
Zu dem Zeitpunkt noch nicht, jetzt ja
Ja wurde Angezeigt (gab nur noch keine Speicherfunktion)
Ja werden Gefüllt das geht
Ja ich komme ohne Probleme zur Test.php
so, habe alles nach Vermutung eingefügt wie es für mich Richtig klang, leider ohne Erfolg ^^"
Hier der Error:Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) in /home/webpages/lima-city/mylonky/ucp.mylonky.eu/ucp/test.php on line 131
Hier auf Wunsch dementsprechend mal die Ganze Datei
http://pastebin.com/vsGjytbB
Ab Zeile 103. Beginnt das Edit Script
Beitrag zuletzt geändert: 28.6.2016 14:49:15 von mylonky -
Vor und nach $_POST muss ein Punkt, da du es an den String hängst und das Semikolon muss weg.
$sql = "UPDATE [...] email = ".$_POST['email'].",
Übrigens: Erkundige dich bitte über SQL-Injektion.
Du darfst niemals eine Benutzereingabe ungefiltert in die Datenbank schreiben.
Beitrag zuletzt geändert: 28.6.2016 14:59:02 von test42test -
Habe ich jetzt abgeändert, bekomme keine Errors mehr es sieht jetzt so aus http://pastebin.com/afGeVRPY
Leider Funktioniert es dennoch nicht, es wird einfach nicht gespeichert.
test42test schrieb:
Erkundige dich bitte über SQL-Injektion.
werde ich machen, danke für den tipp -
Das liegt daran, dass die Bedingung nicht erfüllt wird:
if(isset($_POST['submit']) AND $_POST['submit']=='Daten ändern'){
Dein Absendebutton hat value="Profil Speichern". -
test42test schrieb:
Das liegt daran, dass die Bedingung nicht erfüllt wird:
if(isset($_POST['submit']) AND $_POST['submit']=='Daten ändern'){
Dein Absendebutton hat value="Profil Speichern".
Leider bringt das abändern in
if(isset($_POST['submit']) AND $_POST['submit']=='Profil Speichern'){
das selbe ergebnis -
Fehler für Fehler kommen wir dem Ziel näher :D
Du sendest den $sql nicht ab, dann kann das auch nicht klappen.
Ich hoffe, ich habe sonst keine übersehen, aber damit müsste es nun endlich klappen. -
test42test schrieb:
Fehler für Fehler kommen wir dem Ziel näher :D
Du sendest den $sql nicht ab, dann kann das auch nicht klappen.
Ich hoffe, ich habe sonst keine übersehen, aber damit müsste es nun endlich klappen.
Mache ich das denn nicht durch das if(isset($_POST['submit'])[...]? -
Übersetzt heißt es:
Wenn ( vorhanden (POST-Daten['mit Namen submit']){dann mache
Du brauchst etwas wie
$result=mysqli_query($db,$sql);
Beitrag zuletzt geändert: 28.6.2016 20:25:38 von test42test -
test42test schrieb:
Übersetzt heißt es:
Wenn ( vorhanden (POST-Daten['mit Namen submit']){dann mache
Du brauchst etwas wie
$result=mysqli_query($db,$sql);
wo baue ich das am besten denn ein? -
Direkt nachdem du deinen $sql Befehl zusammengebaut hast.
Ich möchte dir das Lesen von PHP Literatur empfehlen. Mit deinem aktuellen Wissensstand wirst du zum einen nicht schnell vorran kommen und zum anderen viele Sicherheitslücken produzieren.
Um es zu verdeutlichen:
Durch die von mir angesprochene SQL-Injection Lücke, ist es jedem Angreifer möglich sowohl deine gesamte Datenbank auszulesen, als auch beliebig zu verändern oder zu löschen.
Desweiteren wird bei dir auch XSS möglich sein, was vielleicht für dich nicht die größte Gefährdung darstellt (abgesehen davon, dass alle Zugangsdaten an den Angreifer gehen können), dafür aber jeden Seitenbesucher (dich natürlich dabei auch), da dadurch Viren verteilt werden können. Wobei der Seitenbetreiber die Verantwortung hat. -
Über PHP eine Verbindung zu MySQL Datenbanken herzustellen und darauf zuzugreifen ist kein Hexenwerk.
Aber jeder angehende Programmierer sollte sich da schon selber rein Knien und gewisse Erfahrungen selber machen.
Ich empfehle dir dieses Tutorial
http://www.schattenbaum.net/php/mstart.php
Und wenn etwas nicht so funktioniert wie du es magst zerleg das ganze Ding in kleine Schritte.
Ich bau mir dann nach jedem relevanten Schritt eine Kontrollausgabe ein.
Soll heissen bei jeder Bedingung die ich treffen will hau ich ein echo rein .. dann seh ich ob die Bedingung überhaupt zutrifft und der Programmablauf da landet, wo ich ihn haben will.
Ich lass mir dann relevante variablen auf dem Schirm anzeigen um zu wissen ob der Inhalt der ist, den ich erwarte.
Beispielsweise lasse ich mir den SQL Befehl anzeigen so kann ich evtl. einen Systaxfehler im SQL Befehl erkennen.
Wirklich wenn etwas nicht funktioniert in möglichst kleine Schritte zerlegen. Wenn du weisst wo der Fehler auftaucht ist es sehr viel einfacher zu reagieren.
Sei mir bitte nicht bös .. aber mit dem Stand, den du gerade hast ist es schwer dir zu helfen. Da nichtmal die ersten grundlagen zur Arbeit mit einer Datenbank vorhanden sind.
Wenn du das Tutorial von oben durchgearbeitet hast sieht das schon ganz anders aus Nimm dir mal zwei ganze Tage Zeit dafür. Nicht nur lesen und abtippen, sondern um die einzelnen Schritte zu verstehen. Nur wenn du es verstehst kannst du es auf eigene Problemstellungen abändern.
Sorry, wenn das nicht die Antwort ist, die du hören wolltest. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage