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!!";
}
}
?>
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