Hvorfor fungerer min PHP-kode ikke?


Bedste svar

Første ting først …

Giv ikke nogensinde brugerleverede data direkte til databasen. Der er aldrig en grund til, at det er en god idé.

$name = mysqli\_real\_escape\_string($mysqli, $\_POST["name"]);

$pass = mysqli\_real\_escape\_string($mysqli, $\_POST["password"]);

Brug af real\_escape\_string() forhindrer, at dit script bliver hacket med en SQL-injektion. Hvis du har brug for at bruge værdierne andre steder, kan du undslippe det, når du opretter din forespørgsel.

$name = $\_POST["name"];

$sql = "SELECT * FROM users WHERE username = "".mysqli\_real\_escape\_string($mysqli, $name).""";

Gør noget lignende hver gang du opretter en SQL-forespørgsel. Din INSERT forespørgsel skal også have værdier undgået, enten ved at slippe for værdien, der er gemt i variablen, eller undgå den, når du opretter forespørgslen.

Hvorfor ser du “godt job” uden at indtaste data …

Du sørger aldrig for, at der faktisk er input. Dit script vil prøve at interagere med databasen, selvom brugeren endnu ikke har udfyldt formularen.

if(isset($\_POST["username"]) && isset($\_POST["password")) {

// put the rest of your script here

}

?>

Hvorfor der oprettes ingen databaseposter.

Hmm ... Jeg er ikke sikker. Især da det siger, at det fungerede .

Prøv at foretage ændringerne ovenfor, og send en kommentar til dette svar for at fortælle mig, om der er en ændring, og hvad denne ændring er, og vi kan gå derfra.

Kontroller også dine serverlogfiler for at se, om der er nogen fejl der. Hvis du ikke kan gøre det, eller hvis fejl er deaktiveret, kan du prøve at tilføje dette øverst i dit script:

ini\_set("error\_reporting", E\_ALL);

ini\_set("html\_errors", true);

ini\_set("display\_errors", "stdout");

Forresten ...

Dine labels for -attributter skal pege på elementets ID.

Du har…

Du skulle have…

Svar

php

$ host = "AAAAAA"; $ user = "AAAAA"; $ pass = "AAAAAA"; $ db = "AAAAA";

$ connect = mssql\_connect ($ host, $ user, $ pass) eller die ("Kan ikke oprette forbindelse"); $ database = mssql\_select\_db ($ db, $ connect) eller die ("Kan ikke oprette forbindelse til den valgte database");

hvis (isset ($ \_POST (["send")))) {$ email = S\_POST ["e-mail"]; $ fornavn = S\_POST ["fornavn"]; $ efternavn = S\_POST ["efternavn"]; $ pwd = S\_POST ["pwd"];

if trim($firstname) == "" || trim($lastname)=="" || trim($pwd)== ""

{

echo "You must enter both a firstname, lastname and password!!";

}

else

{

$sql = "INSERT INTO users ([email],[first\_name],[last\_name],[password])VALUES("$email","$firstname","$lastname","$pwd")";

$result = mssql\_query($sql);

if(!$result)

{

echo mssql\_error();

exit;

}

mssql\_free\_result($result);

mssql\_close();

echo "Data successfully inserted!!";

}

}

E-mail:
Fornavn:
Efternavn:
Adgangskode:
nput type = "send" navn = "send" værdi = "Registrer"

?>

så php co de jeg oprindeligt gav dig, var bare et eksempel, selv en simpel ekkokode fungerer ikke. godt jeg hv har skrevet koden på notesblok ++ og uploadet den ved at indsætte koden i kompozer. se jeg fik at vide, at det skal uploades med .php udvidelse i stedet for hmtl, og det er grunden til, at det ikke fungerer. men jeg finder det forvirrende, så hvordan knytter jeg det til et bestemt link på min indeksside. råd og lad mig vide, hvad du synes. værdsætter det

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *