Sitat av
Nikon01
Jeg har trim i AJAX hvis det hjelper i variablene eller bør man gjøre det i PHP i tillegg?
Alt som gjøres på klient-siden kan du gå ut fra ikke er sikkert. All input må valideres på server før du lagrer noe (på server har du kontroll, klient har du ikke kontroll over).
Sitat av
Nikon01
Nå gjelder det egentlig å skjønne seg på echo meldingene her så kan man endelig begynne å rense koden litt å implementere sikkerhetsmekanismer.
Ser nå litt på koden min og har da liksom dette:
Kode
if(mysqli_num_rows($sql) > 0) {
$row = mysqli_fetch_assoc($sql);
if($username == $row['username']) {
echo 1;
} elseif($email == $row['email']) {
echo 2;
}
} else {
echo 3;
}
Jeg vil jo her ha 1 echo for at brukernavn eksistere, epost eksisterer og at noe feil har skjedd, f.eks tilkobling til databasen og en echo som sier at alt gikk bra.
Det denne gjør er å echo 3 uansett om jeg tar samme brukernavn, samme epost eller om alt går igjennom.
Regner jo med at denne if statementen her kanskje skal kjøres før $stmt->execute() kjører. Har prøvd både før og etter, men fortsatt bare echo 3.
Kjenner jeg må slutte å ha 4-6 års opphold fra et språk, for da glemmer man det bare
Det virker mer fornuftig å sjekke om e-post/brukernavn finnes før du kjører insert-setningen. Kan være greit å lage deg noen hjelpefunksjoner for ting du gjør ofte:
- load_user_by_mail (kan brukes for å sjekke om en bruker finnes)
- load_user_by_username (kan brukes for å sjekke om en bruker finnes)
- delete_user
Om du ønsker å returnere JSON kan du gjøre sånn her:
Kode
header('Content-Type: application/json');
echo json_encode(["message": "Brukernavn finnes"]);