Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Kontrola jedného používateľa (napr. Prihlásenie):
Toto je najbežnejší scenár. Skontrolujeme, či sa používateľské meno a heslo zhodujú s záznamom v databáze. Je zásadne, pred porovnaním hashme heslo. Nikdy neukladajte heslá do obyčajného textu!
`` `php
Php
// Databázové poverenia (vymeňte ich za svoje skutočné poverenia!)
$ serverName ="your_serverName";
$ username ="your_username";
$ heslo ="your_password";
$ dbname ="your_dbname";
// Vstup používateľa (dezinfikujte to!)
$ userNameInput =$ _post ["username"];
$ hesloInput =$ _post ["heslo"];
// dezinfikovať vstupy používateľov, aby sa zabránilo injekcii SQL
$ userNameInput =mysqli_real_escape_string ($ conn, $ userNameInput);
$ hesloInput =mysqli_real_escape_string ($ conn, $ passwordInput);
// Vytvorte pripojenie
$ conn =new mysqli ($ servername, $ username, $ heslo, $ dbname);
// Skontrolujte pripojenie
if ($ conn-> connect_error) {
die ("Connection zlyhal:". $ conn-> connect_error);
}
// Pripravte sa a naviazajte
$ STMT =$ conn-> Pripravte ("Vyberte heslo_hash od používateľov, kde používateľské meno =?");
$ STMT-> bind_param ("S", $ userNameInput);
$ stmt-> execute ();
$ result =$ stmt-> get_result ();
if ($ result-> num_rows> 0) {
$ row =$ result-> fetch_assoc ();
$ hashedpassword =$ riadok ["Password_hash"];
// Overte heslo pomocou hesla_verify (vstavaná funkcia hashovania hesla PHP)
if (heslo_verify ($ hesloInput, $ hashedpassword)) {
// Prihláste sa úspešné
echo „Prihláste sa úspešné!“;
} else {
// Nesprávne heslo
echo "nesprávne heslo.";
}
} else {
// Užívateľské meno sa nenašlo
echo "Userne meno nenašlo.";
}
$ STMT-> Close ();
$ conn-> close ();
?>
`` `
Vysvetlenie:
* Databázové poverenia: Nahraďte poverenia zástupných symbolov svojimi skutočnými podrobnosťami o databáze MySQL.
* Vstup používateľa: Tento kód predpokladá, že používateľské meno a heslo sa odosielajú prostredníctvom žiadosti o príspevok. Vždy dezinfikujte vstup používateľa Aby sa zabránilo zraniteľnostiam SQL injekcie. `mysqli_real_escape_string ()` je základný krok, ale pripravené príkazy (tu sa tu používajú) sú oveľa robustnejšie.
* Pripravené vyhlásenie: Pripravené vyhlásenie zabraňuje vstrekovaniu SQL oddelením dotazu SQL od údajov poskytnutých používateľom. Je to rozhodujúce pre bezpečnosť.
* Hashing hesla: Databáza by mala ukladať heslo *Hashes *, nie obyčajné textové heslá. `Password_hash ()` Vytvorí zabezpečený hash a `heslo_verify ()` porovná vstup používateľa s uloženým hashom.
* Manipulácia s chybami: Kód obsahuje základné spracovanie chýb pre pripojenie databázy a zlyhania dotazov.
2. Kontrola viacerých zápasov (napr. Hľadanie tabuľky):
Ak potrebujete nájsť viacero zápasov na základe vstupu používateľa (napríklad hľadanie produktov s konkrétnym názvom), budete musieť prispôsobiť dotaz:
`` `php
Php
// ... (Databázové pripojenie ako je uvedené vyššie) ...
$ searchterm =$ _post ["SearchterM"];
$ searchterm =mysqli_real_escape_string ($ conn, $ searchterm); // dezinfikovať!
$ sql ="Vyberte * z produktov, kde je názov ako '%$ SearchterM%'"; // Jednoduchý príklad - použite pripravené vyhlásenie pre lepšiu bezpečnosť!
$ result =$ conn-> query ($ sql);
if ($ result-> num_rows> 0) {
while ($ row =$ result-> fetch_assoc ()) {
// Spracujte každý zodpovedajúci riadok
Echo "Product:". $ riadok ["name"]. „
„;
}
} else {
echo „nenájdené žiadne výrobky“.;
}
// ... (zatvoriť pripojenie) ...
?>
`` `
Dôležitá poznámka: Vyššie uvedený príklad vyhľadávania používa zreťazenie reťazca, ktorá je zraniteľná voči injekcii SQL, ak `$ Searchterm` nie je dezinfikovaný . Pre bezpečné riešenie ho prepíšte pomocou pripravených vyhlásení. Príklad:
`` `php
$ STMT =$ conn-> Pripravte („Vyberte * z produktov, kde sa páči?“);
$ searchterm ="%". $ Searchterm. "%"; // Pridajte zástupné znaky pre podobne
$ STMT-> bind_param ("S", $ SearchterM);
$ stmt-> execute ();
// ... Zvyšok kódu na zvládnutie výsledkov ...
`` `
Nezabudnite nahradiť tabuľku zástupných symbolov a názvy stĺpcov za svoju skutočnú schému databázy. Vždy uprednostňujte bezpečnosť pomocou pripravených príkazov a správnej dezinfekcie vstupov, aby ste zabránili injekčným útokom SQL. Zvážte použitie parametrizovaných dopytov pre akúkoľvek interakciu s vstupom používateľa a vašej databáze. Pre komplexnejšie scenáre alebo veľké súbory údajov možno budete chcieť preskúmať pokročilejšie techniky, ako sú uložené postupy.