[php] logowanie w php - nie wiem czemu nie działa

0

Witam wałkuję już drugi wieczór ten skrypt więc może jest coś co przeoczyłem bo najzwyczajniej w świecie nie loguje się za pomocą danych które na 150% są w bazie danych ;)

plik dwa.php odbiera dane z formularza logowania w jeden.php

<?
session_start();
session_destroy();
/*sami wiecie nie mogę wam tu wszystkiego podać ;)*/
mysql_connect('SUPERTAJNE','SUPERTAJNE','SUPERTAJNE');
mysql_select_db('SUPERTAJNE');

$has=$_POST['haslo'];
$has=md5($has);
$uzytkownik=$_POST['uzytkownik'];
$sql = "SELECT * FROM gracze WHERE nazwa='".$_POST['uzytkownik']."' AND haslo='".$has."' LIMIT 1";
$result = mysql_query($sql) or exit("Nie pobrałem");


if (mysql_num_rows($result)) 
{
  echo "cokolwiek";
  session_register("uzytkownik");
  header("location:glowna.php"); 
  exit;
}
  else
{
 
  echo "Nieprawidłowa nazwa użytkownika lub hasło";
  echo "<br>";
  echo $uzytkownik;
  echo "<br>";
  echo $has;
  echo "<br>";
  echo $sql;
  echo "<br>";
  echo $result;
}

zalogować się można na sloboda.[yoyo].pl/jeden.php
loginem: piwo i hasłem: test

są one poprawne niestety zachowują się jakby nie były. Nie wiem gdzie jest błąd;/

0

ROTFLSOA#1

0

taa dzięki za treściwą wypowiedź...

0

A co Ci zwraca zapytanie wpisane z palca "SELECT * FROM gracze WHERE nazwa='piwo' AND haslo='098f6bcd4621d373cade4e832627b4f6' LIMIT 1" w phpMyAdminie. Na pewno masz w bazie hasło zahashowane md5?
Tak btw to chyba powinno być

$sql = "SELECT * FROM gracze WHERE nazwa=`".$_POST['uzytkownik']."` AND haslo=`".$has."` LIMIT 1";

a nie

$sql = "SELECT * FROM gracze WHERE nazwa='".$_POST['uzytkownik']."' AND haslo='".$has."' LIMIT 1";

czyli to cos pod znakiem~ a nie apostrof.
btw 2
$sql = "SELECT * FROM gracze WHERE nazwa="<b>.$_POST['uzytkownik']</b>." AND haslo=".$has." LIMIT 1";
to pogrubione jest bardzo brzydkie:) odsyłam do mysql_escape_string lub htmlspecialchars etc.

0

A jeszcze dla wyjaśnienia. Takie przekazanie jest bardzo brzydkie jak napisał poprzedzający kolega, bo naraża Cię na SQL Injection.

0

Witam, wiem już gdzie był problem.
Pole hasło miało ograniczenie do 20 znaków a md5 przecież jest 32bitowy <facepalm>
poza tym zaszły też małe zmieny w pliku dwa.php dotyczące wstawiania znaku cudzysłowu przed wartością i za nią ( inaczej myśli że to po prostu jakaś kolumna tabeli)
może przyda się jeszcze komuś:

<?
session_start();
session_destroy();
/*sami wiecie nie mogę wam tu wszystkiego podać ;)*/
mysql_connect('TAJNE','TAJNE','TAJNE');
mysql_select_db('TAJNE');

$has=$_POST['haslo'];
$has=md5($has);
$uzytkownik=mysql_escape_string($_POST['uzytkownik']);
$sql = "SELECT * FROM gracze WHERE nazwa=\"".$uzytkownik."\" AND haslo=\"".$has."\" LIMIT 1";
echo $sql;
echo "<br>";
$result = mysql_query($sql) or exit("Nie pobrałem");


if (mysql_num_rows($result)) 
{
  echo "cokolwiek";
  session_register("uzytkownik");
  header("location:glowna.php"); 
  exit;
}
  else
{
 
  echo "Nieprawidłowa nazwa użytkownika lub hasło";
  echo "<br>";
  echo $uzytkownik;
  echo "<br>";
  echo $has;
  echo "<br>";
  echo $sql;
  echo "<br>";
  echo $result;
}
0

Bosh, ten "znaczek":

Jest zarezerwowany do kolumn...
0
Demonical Monk napisał(a)

Bosh, ten "znaczek":

Jest zarezerwowany do kolumn...

problem zażegnany, patrz dwa posty wyżej. można zamknąć temat.

0

A ja wspomnę, że użycie session_register jest już niezalecane.

http://fi2.php.net/session_register napisał(a)

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.

1 użytkowników online, w tym zalogowanych: 0, gości: 1