Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

PHP paruoštos užklausos (Prepared statements)


fLow

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3119 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

 Kiris, on 12 Oct 2015 - 23:26, said:

Labas, kažkada senai ieškojau informacijos, kaip apsaugoti kodą nuo "SQL INJECTION", ir radau tikrai daug ir suktos informacijos.Pats buvau pradedantysis ir tik pradėjau kurti VVP samp'ui.Man tą informaciją buvo sunku apdoroti, todėl kuriu šią temą, kad padėčiau naujokams bent jau biški apsaugoti sistemas.
Taigi pirmiausia parodysiu kaip atrodo pati papraščiausia užklausa serveriui išgauti kažką apie vartotoją.
 
INDEX.PHP:
 
<!-- pats papraščiausias prisijungimas -->

<form method="post" action="login.php">
  <input type="text" name="username" placeholder="Vartotojo vardas" />
  <input type="password" name="password" placeholder="Slaptažodis" />

  <input type="submit" value="Jungtis">
</form>
Vartotojas įvedęs savo vartotojo vardą ir slaptažodį spaudžia "Jungtis" ir tada ši forma paduoda užklausą serveriui per failą "login.php"
 
login.php:
 
<?php

$connect = new mysqli("localhost","root","password","datatable");//prisijungiame prie duombazes

$username = $_POST['username']; // issaugome ka vartotojas parase formoje | $_POST['username']; reiskia index.php faile name="username"
$password = $_POST['password']; // issaugome ka vartotojas parase formoje | $_POST['password']; reiskia index.php faile  name="password"

//paprasta uzklausa atrodytu taip

$nonpreparedquery = $connect->query("SELECT id FROM users WHERE username='$username' AND password='$password'");
$nonpreparedvalue = $nonpreparedquery->fetch_object();

echo $nonpreparedvalue->id;

// paruosta uzklausa

$preparedstmt = $connect->prepare("SELECT id FROM users WHERE username=? AND password=?");
$preparedstmt->bind_param("ss",$username,$password); // iterpiame vartotojo ivesta teksta vietoje klaustuku (butinai eiles tvarka)
$preparedstmt->execute(); // ivykdome uzklausa
$preparedstmt->bind_result($id); // issaugome gauta rezultata is uzklausos (SELECT id) id galima pavadinti bet kaip , kad ir $neid ir pns, taciau rezultatas bus tas pats
if($preparedstmt->fetch() === true){ // jeigu uzklausa sekmingai ivyko ir vartotojas viska teisingai suvede
   echo $id; // rodome gauta rezultata is duombazes
}
else { // bet kokiu kitu atveju
   echo'Neteisingai suvesti duomenys';
}
?>

Bet kokiu atveju nesu asas, teisiog bandau padėti naujomams, todėl kas matot kokių klaidelių prašome rašykit pataisysiu kodą.
 
 
Tą patį galime ir su INSERT INTO užklausa padaryti.
<?php
$preparedstmt = $connect->prepare("INSERT INTO users (username,password) VALUES (?,?)");
$preparedstmt->bind_param("ss",$username,$password); // iterpiame vartotojo ivesta teksta vietoje klaustuku (butinai eiles tvarka)
$preparedstmt->execute(); // ivykdome uzklausa
?> 

 

Redaguota , nario Kiris
  • Teigiamai 2
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3119 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...