Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Sprawdzanie nicku w rejestracji
Pudi
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 3.03.2009
Skąd: WLKP

Ostrzeżenie: (10%)
X----


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>


Ten post edytował nospor 28.07.2009, 07:42:47
Go to the top of the page
+Quote Post
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Fafu
post
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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";


--------------------
http://rafal.brzezinski.me - skrypty, tutoriale i inne.
Jeśli udało Ci się rozwiązać problem podziękuj osobom, które ci pomogły.
Go to the top of the page
+Quote Post
Pudi
post
Post #4





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 3.03.2009
Skąd: WLKP

Ostrzeżenie: (10%)
X----


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ć
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:46