Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Sprawdzanie nicku w rejestracji
Forum PHP.pl > Forum > Przedszkole
Pudi
Mam Plik register.php i chodzi o to żeby przy rejestracji sprawdzało czy dany nick jest zajęty i czy dany mail nie jest zajęty A jak są zajęte to nie można się zarejestrować a jak wolne to mozna
Bardzo prosze o pomoc bo mi to jakos nie wychodzi



Cytat
<?php

$login = $_POST['login'];
$haslo = $_POST['haslo'];
$haslo2 = $_POST['haslo2'];
$email = $_POST['email'];

if ($_POST){

if(!empty($login) AND !empty($haslo) AND !empty($haslo2) AND !empty($email)){

if($haslo != $haslo2){

$info .= 'podane hasla sa rózne<br />';

}else{

if(!ereg("^.+@.+\..+$", $email)){

$info .= 'niepoprawny adres e-mail<br />';

}else{

require_once('config.php');

$login = czysc($login);
$haslo2 = czysc($haslo);
$email = czysc($email);
$avatar = czysc($avatar);
$gadu = czysc($gadu);

$query = "SELECT login FROM users WHERE login=$login";
$result = mysql_query($query);

if(@mysql_num_rows($result) > 1){
$info .= "wybrana nazwa uzytkownika($login) jest juz zajeta<br />";

}else{

$query = "INSERT INTO users (login,haslo,email,data) VALUES ('$login',md5('$haslo2'),'$email',NOW())";
mysql_query($query);

$info .= 'rejestracja zakonczyla sie sukcesem<br />';

}

}

}

}else{

$info .= 'uzupelnij wszystkie pola<br />';

}

}

?>
<html>
<head>
<meta name="generator" content="WebSite PRO 4.3" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<title>Rejestracja</title>
</head>
<body>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<table>

<tr>
<td>login:</td>
<td><input type='text' name='login'></td>
</tr>

<tr>
<td>haslo:</td>
<td><input type='password' name='haslo'></td>
</tr>

<tr>
<td>powtórz haslo:</td>
<td><input type='password' name='haslo2'></td>
</tr>

<tr>
<td>e-mail:</td>
<td><input type='text' name='email'><input type='hidden' name='control' value='1'></td>
</tr>

<tr>
<td><input type='submit' value='zarejestruj'></td>
</tr>

<tr>
<td></td>
<td colspan='2'><?php if(!empty($info)){ echo $info; } ?></td>
</tr>

</table>

</form>

</body>
</html>
blooregard
Piszesz f-cję, która jedzie Ci po wszystkich rekordach i sprawdza, czy w którymś interesujące Cię pola nie mają wartości odczytanej z POST.

Dla przykładu metoda realizująca to zadanie pochodząca z mojego frameworka:
  1. <?php
  2. /**
  3.      * metoda sprawdza, czy w danej tabeli istnieje juz pole o takiej wartosci
  4.      */
  5.     public function checkIsFieldExists(Db $dbo, $table_name , $field_name, $field_value) {
  6.            if (!$field_name || !$field_value || !$table_name) return false;
  7.            $query = "SELECT COUNT(".$field_name.") AS ".$field_name." FROM ".$table_name." WHERE ".$field_name." = '".$field_value."' ";
  8.            $result = $dbo->dboSelectOne($query);
  9.            if ($result[$field_name] > 0) return false;
  10.            return true;
  11.     }//checkIsFieldExists()
  12. ?>

Jako argumenty podaję: nazwę tabeli, w kŧórej chcę szukać, kolumnę oraz wartość, którą ma sprawdzić.
Jeśli znajdzie, zwraca true, co oznacza, że taka wartośc w danej tabeli już istnieje, jeśli false - login czy tam email jest wolny
Fafu
a nie lepiej zamiast tego:
$query = "SELECT login FROM users WHERE login=$login";

dać:
$query = "SELECT login, email FROM users WHERE login=$login OR email=$email";
Pudi
Cytat(Fafu @ 28.07.2009, 05:18:01 ) *
a nie lepiej zamiast tego:
$query = "SELECT login FROM users WHERE login=$login";

dać:
$query = "SELECT login, email FROM users WHERE login=$login OR email=$email";

nie działa a to co kolega wyżej napisał może by działało ale nie wiem gdzie co wstawić
nospor
oczywiscie ze nie dziala, bo nie: login=$login
a: login='$login'

analogicznie z email.
A na przyszosc nie pisz "nie dziala", tylko podaj objaw nie dzialania. troche wlasnej inicjatywy, analizy bledu....

ps: uzywaj wlasciwego bbcode
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.