View Single Post
Limited edition
Moff's Avatar
TS skriver jo at han eller hun ønsker å få system opp å kjøre før de implementerer sikkerhetstiltakene vi har foreslått.

Feilen ligger på linje 13. Du bruker mysql_query() med spørringen din i, og dette vil kjøre spørringen og returnere resultatet til $sql. Du behandler deretter $sql som om det er en string med en SQL-spørring i, ved å mate den inn i prepare(). Det er der det feiler, for $sql er resultatet av spørringen du allerede har kjørt, ikke en spørring i string-format.

Parameter-count i bind_param() er også feil, du har 4 parametre, men binder kun 2.

Du trenger altså å gjøre disse endringene:

Kode

// Linje 13:
$sql = 'INSERT INTO login (username, password, email, country) VALUES (?, ?, ?, ?)'; // <- Nå begynner du sikkert å se hvorfor jeg anbefaler PDO med named parameters her...

// Linje 18:
$stmt->bind_param('ssss', $username, $hashed_password, $email, $country);
Som pinkrabbitz skriver, så har du også validering av e-post og brukernavn etter at spørringen kjører, så det har ingen effekt. Jeg ville også implementert vask av $country, så du vet sånn ca. hva slags data du får inn der.
Sist endret av Moff; 2. mai 2019 kl. 01:36.