Šta je novo?

PHP login problem

eatmyshorts

Slavan
Učlanjen(a)
04.06.2005
Poruke
547
Poena
319
Evo ovako, posto sam pocetnik u PHP vodama treba mi mala pomocj. Napravio sam sledecju html formu:

<form name="login" action="loginto.php" method="post" >
<input type="text" name="kor_ime" maxlength="30" />
<input type="password" name="loznaja" maxlength="30" /></td>
<input type="submit" value="Submit" />
</form>


u kojoj se unose korisnicko ime i lozinka, a nakon sto se klikne na submit ucitava se stranica login.php koja sadrzi samo sledecji kod:

<script language="php">
$db_host = "localhost";
$db_user = "sergio";
$db_pass = "vladar";
$db_name = "majstori";

//Povezivanje sa MySQL DBMS-om
$link = mysql_connect($db_host, $db_user, $db_pass);

//Biranje baze podataka
mysql_select_db($db_name, $link);

//formulisanje upita i slanje na izvrsenje
$query = "SELECT username FROM spisakMajstora" .
"WHERE username = \"$kor_ime\" " .
"AND password = \"$loznaja\" ";
$result = mysql_query($query, $link);

//Provera broja redova u skupu rezultata upita. Ako su korisnicko ime i lozinka u datoteci upit cje dati 1 red rezultata
//U suprotnom mysql_num_rows cje vratiti nula redova
if (mysql_num_rows($result) == 0)
header("Location: accessdenied.php");
else
header("Location: loginsuccess.php");
</script>


Napravljena je i baza pod imenom majstori, a tabela koja sadrzi korisnicka imena i lozinke se zove spisakMajstora. Kada ukucam neko korisnicko ime i lozinku (bez obzira da li se nalazi u bazi ili ne) dobijam sledecje obavestenje:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\FoxServ\www\loginto.php on line 21

Warning: Cannot add header information - headers already sent by (output started at C:\FoxServ\www\loginto.php:21) in C:\FoxServ\www\loginto.php on line 22


Line 21 je if (mysql_num_rows($result) == 0)

Zna li neko u cemu je fora?
 
nije ti prosao upit

PHP:
 $query = "SELECT username FROM spisakMajstora" .
"WHERE username = \"$kor_ime\" " .
"AND password = \"$loznaja\" ";

probaj ovako mada je u principu skoro isto 🙂

PHP:
$query = "SELECT username FROM spisakMajstora WHERE username = '$kor_ime' AND password = '$loznaja'";
ako nece da radi ehuj $query cisto da vidis sta je sastavio 🙂

ili uradi 'vako

PHP:
$result = mysql_query($query) or die(mysql_error());

pa ce lepo da ti kaze gde ne valja

takodje bi trebao da uvuces prvo promenljive sa forme pod pretpostavkom da ti je register globas iskljucen kao sto bi i trebao da bude :type:

tako da bi $kor_ime trebao da bude
PHP:
$kor_ime = $_POST['kor_ime']
🙂

takodje bi trebao da eskejpujes to sto koristis sa forme da bi sprecio sql injectove sa mysql_real_escape_string funkcijom pa onda to izgleda nest ovako

PHP:
$kor_ime = mysql_real_escape_string($_POST['kor_ime']);

a password bi bilo pozeljno cuvati enkodovane u bazi sa npr. md5 algoritmom


druga greska (za header...) nastaje zato sto je php ispisao prvu gresku, kada koristis header/setcookie/... funckije ne smes nista da saljes u output pre proziva takvih funckija 🙂

a proveri i da li se se uspesno nakonektovao na bazu (...or die/print_r()) :wave:

i koristi neku drugu boju za kod
 
PHP:
 $query = "SELECT username FROM spisakMajstora" .
"WHERE username = \"$kor_ime\" " .
"AND password = \"$loznaja\" ";
=
PHP:
$query = "SELECT username FROM spisakMajstoraWHERE username = \"$kor_ime\" AND password = \"$loznaja\" ";
!=
PHP:
$query = "SELECT username FROM spisakMajstora WHERE username = '$kor_ime' AND password = '$loznaja'";

zbog radi "spisakMajstoraWHERE"
 
@mitic
to je to, greska je bila u tome sto su spojene reci spisakMajstora i WHERE, medjutim sada mi u svakom slucaju izbacuje stranu accessdenied.php, bez obzira da li ime i lozinka postoje u bazi.

@JoeKuboj
Kada ubacim:
$kor_ime = mysql_real_escape_string($_POST['kor_ime']);

Onda dobijam sledecju poruku:
Fatal Error: Call to undefined function: mysql_real_escape_string() in:C:\Foxserv\www\loginto.php on line 14
 
paaa jedino ako imas neku stariju verziju php-a :trust:

Kod:
[B]mysql_real_escape_string[/B]

(PHP 4 >= 4.3.0, PHP 5, PECL mysql:1.0)

mysql_real_escape_string — Escapes special characters in a string for use in a SQL statement

http://www.php.net/mysql_real_escape_string


a ovo sto ti dalje ne radi, ehuj upit pa vidi na sta lici 🙂
 
- proveri da li je register_globals on
- uvek preporuka da iskljucis magic quotes pa da rucno sve escapujes
- da nisi passworde ubacivao sa PASS() tj. PASSWORD()?
 
register_globals je off. Evo zaposlio sam drugara da mi pomogne da ovo resim :d
 
moras da im pristupas preko $_POST-a, kao sto napisah par postova iznad :smash:
 
Nazad
Vrh Dno