Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rejestracja - sprawdzanie danych w bazie
Forum PHP.pl > Forum > PHP
Strarus
cześć:)
Mam głupi problem... Chciałbym zrobić rejestrację użytkowników. Oczywiście rejestracja wymaga sprawdzania danych w bazie, czy istnieje user o danym loginie, bądź o danym mailu. W jaki sposób najlepiej to zrobić? Na razie zrobiłem coś takiego ale userzy się dodają i tak i tak sad.gif
  1. <?php
  2. if(isset($_POST['login']) && !empty($_POST['login']) && isset($_POST['password']) && !empty($_POST['password']) && isset($_POST['email']) && !empty($_POST['email'])) {
  3.  $login = strip_tags($_POST['login']);
  4.  $password = strip_tags($_POST['password']);
  5.  $email = strip_tags($_POST['email']);
  6.  $ip = $_SERVER['REMOTE_ADDR'];
  7.  $data_rejestracji = date('d.m.Y H:i:s');
  8.  $valid = @mysql_query("SELECT * FORM `users` WHERE `login`='$login'");
  9.  if(empty($valid)) {
  10.    $valid2 = @mysql_query("SELECT * FORM `users` WHERE `email`='$email'");
  11.    if(empty($valid2)) {
  12.      $sql = "INSERT INTO users SET login='$login', password='$password', email='$email', ip='$ip', data_rejestracji='$data_rejestracji'";
  13.    if (@mysql_query($sql)) {
  14.      echo '<p>Dodano usera.</p>';
  15.    } else {
  16.      echo '<p>Bład podczas dodawania danych do bazy: ' .
  17.          mysql_error() . '</p>';
  18.    }
  19.    } else {
  20.      echo 'Istnieje już taki email w bazie';
  21.    }
  22.  } else {
  23.    echo 'Taki login już istnieje w bazie';
  24.  }
  25. }
  26. ?>
Obciąłem połączenie z bazą i inne.
erix
  1. <?php
  2. $valid2 = @mysql_query("SELECT * FORM `users` WHERE `email`='$email'");
  3.   if(empty($valid2)) {
  4. ?>

A wiesz, że przed sprawdzeniem danych zapytania trzeba je najpierw wyciągnąć albo policzyć? $valid(2) przechowuje tylko powodzenie zapytania, a nie ilość/same dane.
Strarus
Teraz zrobiłem tak:
  1. <?php
  2. $valid = @mysql_query("SELECT * FORM `users` WHERE `login`='$login'");
  3.  $validrow = mysql_fetch_array($valid);
  4.  if(empty($validrow)) {
  5.    $valid2 = @mysql_query("SELECT * FORM `users` WHERE `email`='$email'");
  6.    $valid2row = mysql_fetch_array($valid2);
  7.    if(empty($valid2row)) {
  8. ?>

I nadal userzy się dodają...
erix
  1. zobacz, co faktycznie masz w zmiennych
  2. to wszystko da się sprawdzić jednym zapytaniem; (AND)
Strarus
Jakim zapytaniem? Będę wdzięczny za pomoc.
erix
No to właśnie Ci pomagam - przejrzyj sobie kurs PHP + MySQL, bo na razie nie ma klocków, aby zbudować z nich zamek.
Strarus
Za taką pomoc to ja bardzo dziękuję... dry.gif Natknąłem się na coś takiego:
  1. <?php
  2. $result = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_name='$username'");
  3.    if (dbrows($result) != 0) $error = $locale['407']."<br>\n";
  4. ?>

Po przerobieniu wygląda tak:
  1. <?php
  2.    $result = dbquery("SELECT * FROM `users` WHERE `login`='$login'");
  3.    if(dbrows($result) != 0) {
  4.   echo 'Istnieje już taki user';
  5. }    
  6. ?>

User się nie dodaje się wtedy w ogóle!
erix
A takie proste pytanie - rozumiesz, co poszczególne funkcje robią? Jeśli skopiowałeś żywcem te funkcje z jakiegoś skryptu, bez biblioteki, to nie dziw się, że nie dodaje, skoro nie ma takich metod...

Daję Ci podpowiedź: WHERE może sprawdzać jednocześnie kilka warunków.
Strarus
Dzięki. Ten kod jest fragmentem kodu z php-fusion, który nie ma do tego bibliotek.
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.