• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP system logowania - błąd mysqli_real_escape_string() expects parameter 1 to be mysqli

Object Storage Arubacloud
0 głosów
611 wizyt
pytanie zadane 6 maja 2017 w PHP przez Bartlomiej Bywalec (2,480 p.)

Cześć mam problem robiłem podobnie z instrukcją Pana Mirosława i mam taki problem:

 


Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, object given in C:\xampp\htdocs\projekt\panel.php on line 16

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, object given in C:\xampp\htdocs\projekt\panel.php on line 17
Adrianlolek123string(45) "select * from admin where user='' AND pass=''" 0

http://wklej.org/id/3105823/

Powie mi ktoś co źle zrobiłbym?:) Dziękuję.

1 odpowiedź

0 głosów
odpowiedź 6 maja 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 7 maja 2017 przez Bartlomiej
 
Najlepsza
Patrząc na resztę kodu widać, używasz PDO, więc skąd nagle próbujesz użyć funkcji z mysqli_? To nie ma prawa zadziałać.

Zamiast tego użyj bindowania w PDO, bezpieczniejsze i lepsze.
komentarz 6 maja 2017 przez Bartlomiej Bywalec (2,480 p.)

W sensie że np:

 $dbh->bindValue(':id', $id, PDO::PARAM_INT )

i pozniej np :id  w zapytanie SQL tak?

komentarz 6 maja 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Tak, coś takiego.
komentarz 7 maja 2017 przez Bartlomiej Bywalec (2,480 p.)
edycja 7 maja 2017 przez Bartlomiej

Mam pytanie zrobiłem cos takiego:

<?php

	session_start();
	
	require 'database.php';

	$login = $_POST['login'];
	$password = $_POST['password'];
	
	$login = htmlentities($login, ENT_QUOTES, "UTF-8");
	$password = htmlentities($password, ENT_QUOTES, "UTF-8");
	
	
	$pdo = Database::connect();
	$sql = ('SELECT * from admin WHERE user = :login AND pass = :status');
	$query = $pdo->prepare($sql);
	$query ->bindValue(':login', $login, PDO::PARAM_STR);
	$query ->bindValue(':password', $password, PDO::PARAM_STR);
	$query->execute(array());
	$findUser = $query->rowCount();
		if($findUser>0){
			$_SESSION['inside'] = true;
			$data = $query->fetch(PDO::FETCH_ASSOC);
			$_SESSION['name'] = $data['name'];
			header('Location: crude.php');							
		}
			else {
				$_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!!</span>';
			}
				
echo $login;
echo $password;
var_dump($sql);
echo $findUser;
		

I mam taki blad

 

 

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\xampp\htdocs\projekt\panel.php on line 19
Adrianlolek123string(58) "SELECT * from admin WHERE user = :login AND pass = :status" 0

 

Wiem ze odnosi sie do tej linijki

$query->execute(array());

"żadne parametry nie zostały powiązane" tzn??

Z góry dziękuje za odpowiedź

komentarz 7 maja 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
$sql = ('SELECT * from admin WHERE user = :login AND pass = :status');

Masz tutaj parametry o nazwie :login i :status, a bindujesz :login i :password - prawdopodobnie to jest problemem.

komentarz 7 maja 2017 przez Bartlomiej Bywalec (2,480 p.)

Sorry zmienialem pare razy probujac roznie i dlatego :D ale blad wciaz ten sam

 


Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\xampp\htdocs\projekt\panel.php on line 19
Adrianlolek123string(60) "SELECT * from admin WHERE user = :login AND pass = :password" 0

 

Co teraz??

komentarz 7 maja 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)

Hmm, może coś z tym pustym arrayem?

$query->execute(array());

On tu w zasadzie niepotrzebny, bo wszystko bindujesz już wcześniej. Spróbowałbym po prostu tak:

$query->execute();

 

komentarz 7 maja 2017 przez Bartlomiej Bywalec (2,480 p.)
Okej dzieki działa i mowisz ze ten sposob jest wporzadku jak na czysty php do logowania ???
komentarz 7 maja 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Bindowanie jest bardzo w porządku, bo zapytanie wysyła osobno i wartości podstawia osobno, dzięki czemu atak sql injection jest niemożliwy.

Zły jest za to sposób przechowywania hasła - nie powinno się tego absolutnie robić jako czysty tekst, a jako nieczytelny dla nikogo hash - http://php.net/manual/en/function.password-hash.php i http://php.net/manual/en/function.password-verify.php
komentarz 7 maja 2017 przez Bartlomiej Bywalec (2,480 p.)
Okej a mam jeszcze jedno pytanie da rade zrobic domyslna wartosc value w inpucie czy nie??

Bo probowalem tak:

<input type="file" name="plik" value="C:\Users\Turqus\Desktop\aktywacja.png"/><br/>

i tak:

  <input type="file" name="plik" value="aktywacja.png"/><br/>

I nie dziala
komentarz 7 maja 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Da radę, ale nie dla inputu typu file. Z tego co mi wiadomo ze względów bezpieczeństwa nie można ustawić domyślnej wartości - co by było, jakby ktoś ustawił jakiś Twój super tajny plik i wysłał automatycznie taki formularz? :P
komentarz 7 maja 2017 przez Bartlomiej Bywalec (2,480 p.)
Oki rozumiem :D dzieki

Podobne pytania

0 głosów
1 odpowiedź 466 wizyt
+1 głos
1 odpowiedź 579 wizyt
–4 głosów
2 odpowiedzi 525 wizyt

92,632 zapytań

141,500 odpowiedzi

319,878 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...