Dlaczego mój kod PHP nie działa?


Najlepsza odpowiedź

Najpierw najważniejsze…

Nie nigdy nie przekazuj danych dostarczonych przez użytkownika bezpośrednio do bazy danych. Nie ma powodu, dla którego to dobry pomysł.

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

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

Użycie real\_escape\_string() uchroni twój skrypt przed włamaniem za pomocą wstrzyknięcia SQL. Jeśli chcesz użyć wartości w innym miejscu, możesz zmienić ich znaczenie podczas tworzenia zapytania.

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

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

Zrób coś podobnego za każdym razem, gdy tworzysz zapytanie SQL. Twoje zapytanie INSERT powinno również zawierać wartości ucieczki, albo przez zmianę znaczenia zmiany znaczenia dla wartości przechowywanej w zmiennej lub zmianę znaczenia zmiany znaczenia podczas tworzenia zapytania.

Dlaczego widzisz „dobrą robotę” bez wprowadzania danych…

Nigdy nie upewniasz się, że faktycznie jest wejściem. Twój skrypt będzie próbował wejść w interakcję z bazą danych, nawet jeśli użytkownik nie wypełnił jeszcze formularza.

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

// put the rest of your script here

}

?>

Dlaczego nie są tworzone żadne rekordy bazy danych.

Hmm… Nie jestem pewien. Zwłaszcza, że ​​jest napisane, że zadziałało .

Spróbuj wprowadzić powyższe zmiany, a następnie opublikuj komentarz do tej odpowiedzi, aby dać mi znać, czy jest zmiana i jaka jest ta zmiana, i możemy przejść od tego momentu.

Sprawdź również dzienniki serwera, aby zobaczyć, czy nie ma tam błędów. Jeśli nie możesz tego zrobić lub błędy są wyłączone, możesz spróbować dodać to na początku skryptu:

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

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

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

Przy okazji…

Atrybuty for etykiet powinny wskazywać na identyfikator elementu.

Masz…

Powinieneś mieć…

Odpowiedź

php

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

$ connect = mssql\_connect ($ host, $ user, $ pass) or die ("Nie można się połączyć"); $ database = mssql\_select\_db ($ db, $ connect) or die ("Nie można połączyć się z wybraną bazą danych");

if (isset ($ \_POST (["submit"]))) {$ email = S\_POST ["e-mail"]; $ firstname = S\_POST ["imię"]; $ lastname = S\_POST ["nazwisko"]; $ 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:
Imię:
Nazwisko:
Hasło:
nput type = "submit" name = "submit" value = "Register"

?>

więc php co de pierwotnie podałem, że był to tylko przykład, nawet prosty kod echa nie działa. cóż, pisałem kod w notatniku ++ i przesyłałem go, wklejając kod do kompozera. zobacz, powiedziano mi, że musi być załadowany z rozszerzeniem .php zamiast hmtl i to jest powód, dla którego nie działa. ale wydaje mi się to zagmatwane, więc jak mogę dołączyć to do określonego łącza na mojej stronie indeksu. pls porady i daj mi znać, co myślisz. doceniam to

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *