skrypt rejestracji z baza danych <popraw>

0

Mam problem z pewnym kodem...napisalem kod rejestracji uzytkownika na serwerze ,przy pomocy obslugi bazy danych...prosze o sprawdzenie kodu i powiedzenie mi co jest nie tak...co jest w nim zle (chodzi mi o caly kod nie tylko o to z komentarzem). Mozna pisac na GG #1247071. Jestem caly czas dostepny.

funkcje.php - wszystkie funkcje potrzebne do rejestracji

[code]

<? function polacz() { $db=mysql_connect('localhost', 'root', ''); $wynik=mysql_select_db('turniej', $db) or die ("Nie mozna sie poalzcyc"); } function form_rej() { ?> <form action="rejestracja.php" method="POST"> <fieldset>
Login: <input type="text" name="login" size="12">
Gadu-gadu: <input type="text" name="gg" size="12">
Hasło: <input type="password" name="haslo" size="12">
Powtórz hasło: <input type="password" name="haslo2" size="12">
<input type="submit" value="Zarejestruj">
</fieldset> </form> <? }

function rejestracja()
{
form_rej();
$login=$_POST['login'];
$gg=$_POST['gg'];
$haslo=$_POST['haslo'];
$haslo2=$_POST['haslo2'];

if ($haslo != $haslo2)
{
echo "Hasła nie są takie same!";
}
polacz();
$wynik=mysql_query("SELECT login FROM users WHERE login=$login");
$znaleziono=mysql_num_rows($wynik)
if ($znaleziono!=0) //co tutaj jest zle-wyskakuje blad
{
echo "Już taki login istnieje!";
form_rej();
}

$data=date("j/F/Y Hs");
$zapis="INSERT INTO users VALUES ($login, $gg, $haslo, $data)";
$wynik=mysql_query($zapis);
if (!$wynik)
{
echo "Rejestracja zakończona pomyślnie";
exit;
}
else
{
echo ('Rejestracja nie powiodła sie! ');
exit;
}
}
[/code]

rejestracja.php - wywolanie funkcji do rejestracji na stronie www
[code]

<? session_start(); ?> <?php include('naglowek.php'); ?> <? require_once ("funkcje.php"); rejestracja(); //wywolanie funkcji ?> [/code]

?????

0

średnik po $znaleziono=mysql_num_rows($wynik) ;

0

tak..nadal jest blad...
"Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\WebServ\httpd\funkcje.php on line 54" czyli $znaleziono=mysql_num_rows($wynik);

Wyswietla nawet:"Rejestracja zakończona pomy?lnie" a jeszcze nic nie wpisywalem, otworzylem linka

0

a)
sprawdź czy się łączy:

$db=mysql_connect('localhost', 'root', '') or die('Nie mozna sie poalzcyc');
$wynik=mysql_select_db('turniej', $db)
or die ('Blad');

b)
nieodporne na SQL injection: daj mysql_real_escape_string dla każdej zmiennej którą dajesz do zapytania

c)
bez sensu:

if (!$wynik)
{
echo "Rejestracja zakończona pomyślnie";
exit;
}
else
{
echo ('Rejestracja nie powiodła sie! ');
exit;
}
}

jeśli nie powiodła się to wypisz "Rejestracja zakończona pomyślnie" a jak powiodła się to "Rejestracja nie powiodła sie!" ?? :|

a mysql_query nie zwraca czy wstawiono pomyślnie, daj if mysql_affected_rows > 0 powiodla sie else nie powiodla sie

a błąd pewnie dlatego że zapytanie brzmi "SELECT blah blah WHERE login=" daj w cudzysłów to żeby bez niczego było "SELECT blah blah WHERE login=''" i nie dopuść do sytuacji żeby wykonywało się to gdy nie dostarczono danych do formularza, czyli daj np if(!isset($_POST['login'])) return false;

0

dzieki, dziala xD
//edit
jednak cos nie dziala, a mianowicie nie wiem gdzie wstawic ta funkcje isset, zeby wyskakiwal komunikat gdy sie nie uzupelni wszyskich pol

moglbys wstawic ten kawalek w moj kod?

0
cieply napisał(a)

nie wiem gdzie wstawic ta funkcje isset

może dać isset, empty albo po prostu if ($login=="")

<?
function rejestracja()
{
form_rej();
$login=$_POST['login'];
$gg=$_POST['gg'];
$haslo=$_POST['haslo'];
$haslo2=$_POST['haslo2'];

if (($login=="") or ($gg=="") or ($haslo=="") or ($haslo2==""))
{
	echo "Uzupełnij wszystkie pola";
}
else if ($haslo != $haslo2)
{
	echo "Hasła nie są takie same!";
}
else
{
	polacz();
	$login=mysql_real_escape_string($login);
	$wynik=mysql_query("SELECT login FROM users WHERE login='$login'");
	$znaleziono=mysql_num_rows($wynik);
	if ($znaleziono!="0")
	{
		echo "Już taki login istnieje!"; 
		form_rej();
	}

	$data=date("j/F/Y H:i:s");
	$zapis="INSERT INTO users VALUES ($login, $gg, $haslo, $data)";
	$wynik=mysql_query($zapis);
	if (!$wynik)
		{	
	echo "Rejestracja zakończona pomyślnie";
	exit;
		}
	else
		{
	echo ('Rejestracja nie powiodła sie! ');
	exit;
		}
	}
}
?>

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