Proč nefunguje můj kód PHP?


Nejlepší odpověď

Nejdříve nejdříve …

Nikdy nikdy nepředávejte uživatelem zadaná data přímo do databáze. Nikdy není důvod, proč je to dobrý nápad.

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

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

Použitím real\_escape\_string() zabráníte tomu, aby byl váš skript napaden pomocí injekce SQL. Pokud potřebujete použít hodnoty jinde, můžete jim při vytváření dotazu uniknout.

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

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

Udělejte něco podobného pokaždé, když vytvoříte dotaz SQL. Váš INSERT dotaz by měl mít také hodnoty s únikem, a to buď únikem hodnoty uložené v proměnné, nebo únikem při vytváření dotazu.

Proč se vám zobrazuje „dobrá práce“ bez zadávání údajů …

Nikdy se nezajistíte, že ve skutečnosti je vstup. Váš skript se pokusí komunikovat s databází, i když uživatel formulář ještě nevyplnil.

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

// put the rest of your script here

}

?>

Proč se nevytvářejí žádné databázové záznamy.

Hmm ... nejsem si jistý. Zejména proto, že říká, že fungoval .

Zkuste provést výše uvedené změny a poté k této odpovědi přidejte komentář, abyste mi dali vědět, jestli existuje změna a co je tato změna a můžeme odtud přejít.

Zkontrolujte také protokoly serveru, zda tam nejsou nějaké chyby. Pokud to nemůžete udělat nebo jsou chyby deaktivovány, můžete zkusit přidat toto do horní části skriptu:

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

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

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

Mimochodem ...

Atributy vašich štítků for by měly odkazovat na ID prvku.

Máte ...

Měli byste mít ...

Odpověď

php

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

$ connect = mssql\_connect ($ host, $ user, $ pass) nebo die ("Nelze se připojit"); $ database = mssql\_select\_db ($ db, $ connect) nebo die ("Nelze se připojit k vybrané databázi");

if (isset ($ \_POST (["odeslat"]))) {$ email = S\_POST ["e-mail"]; $ křestní jméno = S\_POST ["křestní jméno"]; $ příjmení = S\_POST ["příjmení"]; $ 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:
Jméno:
Příjmení:
Heslo:
stup type = "submit" name = "submit" value = "Register"

?>

takže php co původně jsem vám dal jen příklad, dokonce i jednoduchý echo kód nefunguje. no já jsem psal kód na poznámkový blok ++ a nahrával ho vložením kódu do kompozeru. vidět, bylo mi řečeno, že to musí být nahráno s příponou .php místo hmtl a to je důvod, proč to nefunguje. ale připadá mi to matoucí, tak jak jej připojím k určitému odkazu na mé indexové stránce. prosím o radu a dejte mi vědět, co si myslíte. oceňuji to

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *