Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysqli] Zapytanie prepare
vadergb
post 19.08.2009, 12:55:19
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.06.2009

Ostrzeżenie: (0%)
-----


Witam,


Mam maly problem, a mianowicie:

Pobieram dane uzytowknika:

  1. $sql_login = $this->mysqli->prepare ( "SELECT user_id,nick,country,sex FROM users WHERE user_id=? limit 1" );
  2.  
  3. $sql_login->bind_param ( "i", $id );
  4. $sql_login->execute ();
  5. $sql_login->bind_result ( $user_id,$nick,$country,$sex );
  6. $data = $sql_login->fetch ();


Potem moge je odczytac za pomoca echo $user_id;

Chcialbym zrobic to tak:


  1. $sql_login = $this->mysqli->query( "SELECT user_id,nick,country,sex FROM users WHERE user_id=$id limit 1" );
  2.  
  3. $data = $sql_login->fetch_object();

Tzn. Zeby pobieralo mi dane do obieku ktory potem odczytam $data->user_id;

Szukalem i nie moglem znalezc metody aby bylo bezpiecznie(dodanie id za pomoca prepare - wyklucza ataka sql_injection).

Wiadomo mozna przed zapytaniem robic:
$id=(int)$id;
czy
$id=intval($id);


Pytanie czy tworzac takie zapytanie powinnismy robic prepare czy normalne query?

Prepare w takim wypadku powinno byc uzywane do czego?
Powód edycji: [Spawnm] Przeniosłem.
Go to the top of the page
+Quote Post
Fifi209
post 19.08.2009, 12:57:00
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Wystarczy rzutować na int jak sam pokazałeś. winksmiley.jpg
Spełni to Twoje oczekiwania i będzie bezpieczne.

A prepare do stringów bardziej.

Ten post edytował fifi209 19.08.2009, 12:57:18


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
vadergb
post 19.08.2009, 13:33:51
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.06.2009

Ostrzeżenie: (0%)
-----


Cytat(fifi209 @ 19.08.2009, 13:57:00 ) *
Wystarczy rzutować na int jak sam pokazałeś. winksmiley.jpg
Spełni to Twoje oczekiwania i będzie bezpieczne.

A prepare do stringów bardziej.


hmm czyli prepare stosowac do updatow w bazie i insertow?

+ ew. w opcji szukania(np szukamy po nicku)?

a co w przypadku jak np mamy http://domena.pl/Jan_Kowalski

Jan_kowalski to string i robi on za alias uzytkownika.

Wtedy stosowac prepare czy robic to sa pomoca mysql_real_escape_string?


Jeszcze jedno sprawa mnie meczy:

W przypadku odczytywania loginu i hasla z bazy przy logowaniu uzywac prepare czy nie?

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 13:47