Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Rejestracja uzytkownika
#1
Witajcie napotkałem pewien problem, z którym walczę od wczoraj.

Mam bardzo trywialną formę do rejestracji uzytkownika w moim systemie.

drzewo systemu wygląda następująco:
mamy index.php - w którym zaincludowałem config do bazy danych (parametry połączenia) i sekcje main - includowana forma do logowania i forma do rejestracji.

forma rejestracji wygląda tak:
Kod PHP:
function rejestruj($komunikat="")
{
    
$tab['imie']=$_POST['imie'];
    
    echo 
"$komunikat<br>";
    echo 
"<form action='rejestruj.php' method='post'>";
    echo 
'Imie: <input type="text" name="imie" value="'.$tab['imie'].'"><br>';
    echo 
'Nazwisko: <input type="text" name="nazwisko"><br>';
    echo 
"Adres: <input type='text' name='adres'><br>";
    echo 
"Email: <input type='text' name='email'><br>";
    echo 
"Login: <input type='text' name='login'><br>";
    echo 
"Haslo: <input type='password' name='haslo'><br>";
    echo 
"Powtorz haslo: <input type='password' name='haslo2'><br>";
    echo 
"<input type=hidden value='1' name='send'>";
    echo 
"<input type=submit value='Zarejestruj mnie'>";
    echo 
"</form>";
}

if(isset(
$_POST["send"]))
{    

    
$imie='';
    if(!empty(
$_POST["login"]) && !empty($_POST["haslo"])){    
        
$query mysql_query("SELECT login FROM  `klienci` WHERE  `login` LIKE  '".$_POST["login"]."'");
        
        
        if(
mysql_num_rows($query)!=NULL)
        {
            
rejestruj("Uzytkownik o podanym loginie juz istnieje!!!");
        }
        else
        {
        
        

                    
mysql_query(
                    
"INSERT INTO `klienci` 
                    (
                    `id_klienta`, 
                    `imie`, 
                    `nazwisko`, 
                    `data_ur`, 
                    `nip`, 
                    `regon`, 
                    `adres`, 
                    `email`, 
                    `login`, 
                    `haslo`, 
                    `aktywne`
                    ) 
                    VALUES 
                    (
                    NULL ,  
                    '"
.$_POST["imie"]."',  
                    '"
.$_POST["nazwisko"]."',
                    NULL,  
                    NULL,  
                    NULL,  
                    '"
.$_POST["adres"]."',
                    '"
.$_POST["email"]."',
                    '"
.$_POST["login"]."',
                    '"
.md5($_POST["haslo"])."',
                    '0'
                    );"
);
                    echo 
"Rejestracja przebiegla pomyslnie. Mozesz teraz przejsc do <a href='#'>strony glownej</a> i sie zalogowac.";
            
        }
    }
    else 
rejestruj("Nie uzupelniono wszystkich pol!!!");
}
else 
rejestruj(); 

Wszystko, ok poza tym żę po wypelnieniu wszystkich pól rejestracji i kliknięciu submita, wywala mi warninga:
Cytat:Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\psi_sys\include\moduly\rejestruj.php on line 30

+ monit o udanej rejestracji, do bazy nie dodaje mi rekordu.
Połączenie z bazą jest ok
Odpowiedz
#2
Poczytaj o różnicach między cudzysłowami a apostrofami. Masz w tym zapytaniu błąd SELECT login FROM `klienci` WHERE `login` LIKE '".$_POST["login"]."'.

Filtruj dane!
Odpowiedz
#3
(07-06-2011, 15:17)Pedro84 napisał(a): Poczytaj o różnicach między cudzysłowami a apostrofami. Masz w tym zapytaniu błąd SELECT login FROM `klienci` WHERE `login` LIKE '".$_POST["login"]."'.

Filtruj dane!

hmmm... w php my adminie sprawdziłem te zapytanie - przechodzi.
W php zmieniłem na:

$login = $_POST["login"];
SELECT login FROM `klienci` WHERE `login` LIKE '".$login"'

i dalej warning jest, do bazy sie nie dodaje rekord...

Wiem, wiem z filtrowaniem, na razie nie daje filtrowania aby sobie nie "oczernić" kodu
Mam przygotowaną funkcje, która mi będzie filtrować dane POSTy - wiec nie martw sie o to ;]
Odpowiedz
#4
A co Ci zwraca zapytanie w phpmyadmin jak podasz jakiś przykładowy login?
Odpowiedz
#5
SELECT login
FROM `klienci`
WHERE `login` LIKE 'admin'
LIMIT 0 , 30

Zwraca dany login - admin
Pokaż rekordy 0 - 0 (1 wszystkich, Wykonanie zapytania trwało 0.0007 sekund(y))
Odpowiedz
#6
Takie ostrzeżenie oznacza, że zapytanie nie zwraca poprawnych wyników.

Zdebuguj zapytanie (wstaw je do echo i zobacz jakie zapytanie Ce generuje)
Odpowiedz
#7
hmmmmm... kurde wrzuciłem je do vardumpa i wywalił mi

"null"

pliczki systemu:
http://www.speedyshare.com/files/28850851/system.rar

nie mam pojęcia dlaczego zwraca mi nulla ...
Odpowiedz
#8
A wstaw takie zapytanie:
Kod:
$query = mysql_query("SELECT login FROM  `klienci` WHERE  `login` LIKE  '".$_POST['login']."'");
Odpowiedz
#9
dalej to samo - "null"

a var_dump dla $query to "boolean false"

kurde przyczyna może leżeć może w tym pliku w ogóle sie nie łączy z bazą...
może coś źle po includowałem ?
zapytania są poprawne.
Odpowiedz
#10
echo mysql_error(); i podaj komunikat z tej funkcji.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Pozyskanie danych użytkownika bez potrzeby logowania tndek 0 1,905 03-11-2012, 04:32
Ostatni post: tndek
Smile profil użytkownika Smarth 1 2,047 11-05-2012, 01:25
Ostatni post: mateo
  Logowanie i rejestracja - includowanie toma5z 3 4,367 22-06-2011, 03:03
Ostatni post: mateo
  [mysql]przypisanie wartosci bazy do uzytkownika begginer 12 8,905 10-02-2011, 05:59
Ostatni post: begginer
Question PDO+PHP+MyQL(rejestracja) sej87 0 1,666 15-01-2009, 20:24
Ostatni post: sej87

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl