![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 7.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Otóż mam system rejestrujący użytkownika. Mam utworzoną tabelę w bazie danych. Problemem jest że przyjmuje ona jedynie pierwszego użytkownika. Przy próbie rejestracji drugiego, zgodnie z kodem rejestrującym, wyskakuje mi błąd iż dana nazwa użytkownika i e-mail istnieje. Z poziomu phpmyadmin z którego korzystam normalnie są zapisywane dane kolejnych użytkowników. Nie wiem na czym błąd polega. Uprzedzę iż są to moje pierwsze kroki w PHP i MySQL. W razie jakiś wątpliwości proszę pytać.
Będę wdzięczny za wszelką pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 729 Pomógł: 346 Dołączył: 4.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
A my bylibyśmy wdzięczni za kod, bo bez niego nic nie zrobimy. Najpewniej masz użytkownika na sztywno wpisanego w sql, ale bez kodu możemy jedynie gdybać.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 7.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o kod który wysyła dane do bazy?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
kod który odpowiada za rejestracje użytkownika
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 7.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Funkcje Rejestracji:
CODE <?php // A file with the database host, user, password, and selected database include_once('odpowiedni_plik'); // A string used for md5 encryption. You could move it to a file // outside the web tree for more security. $supersecret_hash_padding = 'A string that is used to pad out short strings for md5 encryption.'; function user_register() { // This function will only work with superglobal arrays, because // I'm not passing in any values or declaring globals global $supersecret_hash_padding; // Are all vars present and passwords match? if (strlen($_POST['user_name']) <= 25 && strlen($_POST['password1']) <= 25 && ($_POST['password1'] == $_POST['password2']) && strlen($_POST['email']) <= 50 && validate_email($_POST['email'])) { // Validate username and password if (account_namevalid($_POST['user_name']) || strlen($_POST['password1'] >= 6)) { $user_name = strtolower($_POST['user_name']); $user_name = trim($user_name); // Don't need to escape, because single quotes aren't allowed $email= $_POST['email']; // Don't allow duplicate usernames or emails $query = "SELECT user_id FROM user WHERE user_name = '$user_name' OR email = '$email'"; $result = mysql_query($query); if ($result && mysql_num_rows($result) > 0) { $feedback = 'ERROR - Username or email address already exists'; return $feedback; } else { $first_name = $_POST['first_name']; $last_name = $_POST['last_name']; $password = md5($_POST['password1']); $user_ip = $_SERVER['REMOTE_ADDR']; // Create a new hash to insert into the db and the confirmation email $hash = md5($email.$supersecret_hash_padding); $query = "INSERT INTO user (user_id, user_name, first_name, last_name, password, email, remote_addr, confirm_hash, is_confirmed, date_created) VALUES (NULL, '$user_name', '$first_name', '$last_name', '$password', '$email', '$user_ip', '$hash', 0, NOW())"; $result = mysql_query($query); if (!$result) { $feedback = 'ERROR - Database error'; return $feedback; } else { // Send the confirmation email $encoded_email = urlencode($_POST['email']); $mail_body = <<< EOMAILBODY Thank you for registering at Example.com. Click this link to confirm your registration: http://strona/confirm.php?hash=$hash&...6;encoded_email Once you see a confirmation message, you will be logged into Example.com EOMAILBODY; mail ($email, 'Example.com Registration Confirmation', $mail_body, 'From: noreply@example.com'); // Give a successful registration message $feedback = 'YOU HAVE SUCCESSFULLY REGISTERED. You will receive a confirmation email soon'; return $feedback; } } } else { $feedback = 'ERROR - Username or password is invalid'; return $feedback; } } else { $feedback = 'ERROR - Please fill in all fields correctly'; return $feedback; } } function account_namevalid() { // must have at least one character if (strspn($_POST['user_name'],"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-") == 0) { return false; } // must contain all legal characters if (strspn($_POST['user_name'],"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_") != strlen($_POST['user_name'])) { return false; } // min and max length if (strlen($_POST['user_name']) < 5) { return false; } if (strlen($_POST['user_name']) > 25) { return false; } // illegal names if (eregi("^((root)|(bin)|(daemon)|(adm)|(lp)|(sync)|(shutdown)|(halt)|(mail)|(news)|( uucp)|(operator)|(games)|(mysql)|(httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ft p)|(irc)|(debian)|(ns)|(download))$", $_POST['user_name'])) { return false; } if (eregi("^(anoncvs_)", $_POST['user_name'])) { return false; } return true; } function validate_email($email) { return (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.' . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email)); } function user_confirm() { // This function will only work with superglobal arrays, because // I'm not passing in any values or declaring globals global $supersecret_hash_padding; // Verify that they didn't tamper with the email address $new_hash = md5($_GET['email'].$supersecret_hash_padding); if ($new_hash && ($new_hash == $_GET['hash'])) { $query = "SELECT user_name FROM user WHERE confirm_hash = '$new_hash'"; $result = mysql_query($query); if (!$result || mysql_num_rows($result) < 1) { $feedback = 'ERROR - Hash not found'; return $feedback; } else { // Confirm the email and set account to active $email = $_GET['email']; $hash = $_GET['hash']; $query = "UPDATE user SET email='$email', is_confirmed=1 WHERE confirm_hash='$hash'"; $result = mysql_query($query); return 1; } } else { $feedback = 'ERROR - Values do not match'; return $feedback; } } ?> Ten kod odpowiada przesłanie danych do bazy. W kolejnym kodzie jest jedynie formularz i potwierdzenie, nie przesyłam, ponieważ łączenie i wszystko działa sprawnie, problem jednak jest z tym że nie chce więcej niż jednego użytkownika mi dodać do bazy, bo inaczej pisze że taki e-mail bądź nazwa użytkownika już istnieją. Możliwe że ja czegoś w bazie danych nie zrobiłem. Bo po za utworzeniem tabeli i odpowiednich pól nie bardzo wiedziałem jakie typy itd. Jeżeli to od tego zależy to proszę pisać. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 309 Pomógł: 56 Dołączył: 3.11.2006 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Zrób albo screenshota albo wyeksportuj tabele i wrzuć kod tutaj.
Chodzi mi o pola w tabeli i ich rodzaj. Bo skrypt widzę gotowy, więc raczej powinien działać. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 7.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Oto zrzut ekranu pokazującego tabelę user.
LINK Ktoś jest mi w stanie pomóc z tym problemem? Myślę że wynika on po prostu z konfiguracji tabeli, więc prosiłbym o sprawdzenie odnośnika do zrzutu z ekranu ze strukturą tabeli. Ponawiam prośbę o pomoc, podałem kod i zrzut ekranu na którym tabela. Bardzo mi jest to potrzebne. Proszę o jakąś SOLIDARNOŚĆ wyrażoną poprzez pomoc. Baza danych przyjmuje tylko pierwszego użytkownika. Nie wiem czy powinienem coś zmienić w tabeli, czy jak? Z poziomu poleceń w phpmyadmin wchodzą też inni, a tu nic. Więc może błąd w kodzie? Ponawiam prośbę o pomoc, podałem kod i zrzut ekranu na którym tabela. Bardzo mi jest to potrzebne. Proszę o jakąś SOLIDARNOŚĆ wyrażoną poprzez pomoc. Baza danych przyjmuje tylko pierwszego użytkownika. Nie wiem czy powinienem coś zmienić w tabeli, czy jak? Z poziomu poleceń w phpmyadmin wchodzą też inni, a tu nic. Więc może błąd w kodzie? Dobra, działa, dziękuję za 106 wyświetleń jak do tej pory, przy czym dwa posty pytające i dobre chęci w kwestii pomocy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:58 |