Permalänk
Medlem

PHP "edit page"

Tjenare Sweclockers!
Jag håller på och göra en sida, och allt funkar bra förutom när man vill "editera" sin profil, det går att editera men om man vill tex bara editera sitt namn så ändrar den alla andra grejer också, förstår inte riktigt vad problemet är.
Tack på förhand!

<?php include 'connect.php'; include 'header.php'; echo '<form method="post" action=""> Förnamn: <br><input type="text" name="fnamn"><br> Efternamn: <br><input type="text" name="enamn"><br> Lösenord: <br><input type="password" name="pw1"><br> Lösenord igen: <br><input type="password" name="pw2"><br> Email: <br><input type="text" name="email1"><br> Email igen: <br><input type="text" name="email2"><br> Kön: <br>Man<input type="radio" name="kon" value="Man">Kvinna<input type="radio" name="kon" value="Kvinna"><br> <input type="submit" value="Upddatera" name="Uppdatera"> </form>'; $fnamn = $_POST['fnamn']; $enamn = $_POST['enamn']; $kon = $_POST['kon']; $pw1 = $_POST['pw1']; $pw2 = $_POST['pw2']; $email1 = $_POST['email1']; $email2 = $_POST['email2']; if(isset($_POST['Uppdatera'])){ if(isset($fnamn)){ $input = "UPDATE users SET fnamn='$fnamn' where user_name='$_SESSION[user_name]'"; mysql_query($input); } if(isset($enamn)){ $input = "UPDATE users SET enamn='$enamn' where user_name='$_SESSION[user_name]'"; mysql_query($input); } if(isset($kon)){ $input = "UPDATE users SET kon='$kon' where user_name='$_SESSION[user_name]'"; mysql_query($input); } if(isset($pw1) && isset($pw2)){ if($pw1 == $pw2){ $input = "UPDATE users SET user_pass='$pw1' where user_name='$_SESSION[user_name]'"; mysql_query($input); } elseif($pw1 != $pw2){ echo 'Lösenorden du fyllde i stämde inte överens.'; } } if(isset($email1) && isset($email2)){ if($email1 == $email2){ $input = "UPDATE users SET user_email='$email1' where user_name='$_SESSION[user_name]'"; mysql_query($input); } elseif ($email1 != $email2){ echo 'Emailen du skrev stämde inte överens.'; } } if(mysql_query) { echo "<br>Din profil är nu uppdaterad!"; } } ?>

Permalänk
Medlem

Nu gissar jag bara, men isset är nog fel väg att gå, tror alla är satta. Men de du inte har ändrat är satta till värdet de hade på editsidan (tom sträng?). Så du ska nog kolla längden istället.

Installera en debugger annars så går felsökning lätt som en plätt

Permalänk
Medlem

testa med !empty istället för isset

Visa signatur

BOOOM

Permalänk
Medlem
Skrivet av tobiasr:

testa med !empty istället för isset

Underbart! tack så grymt mycket!

Permalänk
Medlem

Föresten så har jag en fråga till, jag har krypterat alla lösenord på min sida med sha1 och jag har tänkt att göra en "glömt lösenord" sida men när man då får mailet så kommer lösenordet som sha1, så jag undrar om det går att få det till vanlig text igen?

Permalänk
Medlem
Skrivet av CSGAM3R:

Föresten så har jag en fråga till, jag har krypterat alla lösenord på min sida med sha1 och jag har tänkt att göra en "glömt lösenord" sida men när man då får mailet så kommer lösenordet som sha1, så jag undrar om det går att få det till vanlig text igen?

Nej, det är liksom hela poängen med att hasha dem. Sätt istället om lösenordet på sidan till något random och skicka ut det till användaren så får denne logga in och byta själv.

Permalänk
Medlem

isset kommer vara true på alla din checkar då ALLA inputs POSTAS och således är satta. De är dock TOMMA många av dem, men de existerar i post datan. !empty() är det du vill använda istället.

Är detta något du komemr köra publikt eller en egen liten stängd site? Annars uppmanar jag dig att titta på XSS och SQL injection, två attackvectorer som din kod är sårbar för.

Visa signatur

Gigabyte Aorus Master | 32gb DDR4 3466MHZ CL14 | Ryzen 3950X | 3080Ti
En lång rad Intel system som barnen fått som speldatorer, VR-dator, massa bärbara, servrar, RPi's och andra boxar :P

Permalänk
Medlem
Skrivet av inquam:

isset kommer vara true på alla din checkar då ALLA inputs POSTAS och således är satta. De är dock TOMMA många av dem, men de existerar i post datan. !empty() är det du vill använda istället.

Är detta något du komemr köra publikt eller en egen liten stängd site? Annars uppmanar jag dig att titta på XSS och SQL injection, två attackvectorer som din kod är sårbar för.

Är inte så jätte kunnig inom allt med databaser osv ännu, så jag måste fråga vad är XSS? och vad kan vara sårbart?

Permalänk
Medlem
Skrivet av Rådström:

Nej, det är liksom hela poängen med att hasha dem. Sätt istället om lösenordet på sidan till något random och skicka ut det till användaren så får denne logga in och byta själv.

Okejokej, hur skulle man kunna göra det isf? .md5(user_pass) eller?

Permalänk
Skrivet av CSGAM3R:

Är inte så jätte kunnig inom allt med databaser osv ännu, så jag måste fråga vad är XSS? och vad kan vara sårbart?

Du bör använda mysql_real_escape_string

... om jag inte är helt ute och cyklar.

Visa signatur
Permalänk
Medlem

XSS står för Cross-Site-Scripting och både det och SQL Injections är enkelt förklarat sätt att tvinga din kod att köra saker som du inte tänkt dig. Säkerhetshål helt enkelt. Med din kod ovan så skulle jag exempelvis, beroende på rättigheterna på databasanvändaren du ansluter med, kunna ändra namn på ALLA användare i databasen i ett svep. Ändra ALLAS lösenord osv, osv. Med en subquery eller liknande så skulle man med stor sannolikhet även kunna tömma dina tabeller på data.

Visa signatur

Gigabyte Aorus Master | 32gb DDR4 3466MHZ CL14 | Ryzen 3950X | 3080Ti
En lång rad Intel system som barnen fått som speldatorer, VR-dator, massa bärbara, servrar, RPi's och andra boxar :P

Permalänk
Medlem
Skrivet av inquam:

XSS står för Cross-Site-Scripting och både det och SQL Injections är enkelt förklarat sätt att tvinga din kod att köra saker som du inte tänkt dig. Säkerhetshål helt enkelt. Med din kod ovan så skulle jag exempelvis, beroende på rättigheterna på databasanvändaren du ansluter med, kunna ändra namn på ALLA användare i databasen i ett svep. Ändra ALLAS lösenord osv, osv. Med en subquery eller liknande så skulle man med stor sannolikhet även kunna tömma dina tabeller på data.

Det lät ju dock inte för kul om det skulle hända, hur förebygger man detta då?
Grymt tacksam för svar btw

Permalänk
Medlem

läs på om mysql escape string som rensar informationen som kommer från textfälten på sql-frågor. Men även html entities som gör att man inte i gästböcker och sådan kan köra html-kod och roliga javascript.

Glömt lösenordsfunktionen ska helt random generera ett lösenord som sedan mejlas till användarens mejl. Den ska även md5-hashas och ersätta den gamla hashen i databasen. För extra säkerhet på de sparade lösenorden kan du läsa på om hur man saltar lösenorden.