Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[PhP] Problem z rejestracją
#1
Exclamation 
Witam mam dosyć dziwny problem . Mam skrypt rejestracji oto on :
Kod:
<?php
ob_start();
session_start(); // rozpoczęcie sesji
?>

<?php include('header.php'); ?>

<h2>&raquo; Zarejestruj się</h2>
<div class="content">

<?php

if (!isset($_SESSION['login'])) { // dostęp dla zalogowanego użytkownika

    include 'inc/db.php'; // połączenie się z bazą danych
    $tabela = 'rejestracja'; // zdefiniowanie tabeli MySQL
    include 'inc/recaptchalib.php'; // dołączenie modułu reCAPTCHA
    $privatekey = ""; // prywatny klucz reCAPTCHA
    $publickey = ""; // publiczny klucz reCAPTCHA

if ($_POST["wyslane"]) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt

        // filtrowanie treści wprowadzonych przez użytkownika
        $login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))), ENT_QUOTES);
        $haslo = $_POST["haslo"];
        $haslo2 = $_POST["haslo2"];
        $email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
        $email2 = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email2"]))), ENT_QUOTES);
        $imie = htmlspecialchars(addslashes(strip_tags(trim($_POST["imie"]))), ENT_QUOTES);
        $nazwisko = htmlspecialchars(addslashes(strip_tags(trim($_POST["nazwisko"]))), ENT_QUOTES);
        $resp = recaptcha_check_answer ($privatekey,
                $_SERVER["REMOTE_ADDR"],
                $_POST["recaptcha_challenge_field"],
                $_POST["recaptcha_response_field"]);

        // system sprawdza czy prawidło zostały wprowadzone dane
        if (strlen($login) < 3 or strlen($login) > 30 or !eregi("^[a-zA-Z0-9_.]+$", $login)) {
            $blad++;
            echo '<span class="blad">Proszę poprawny wprowadzić login (od 3 do 30 znaków).</span>';
        } else {
            $wynik = mysql_query("SELECT * FROM $tabela WHERE login='$login'");
            if (mysql_num_rows($wynik) <> 0) {
                $blad++;
                echo '<span class="blad">Podana nazwa użytkownika została już zajęta.</span>';
            }
        }
        if (strlen($haslo) < 6 or strlen($haslo) > 30 ) {
            $blad++;
            echo '<span class="blad">Proszę poprawnie wpisać hasło (od 6 znaków do 30 znaków).</span>';
        }
        if ($haslo !== $haslo2) {
            $blad++;
            echo '<span class="blad">Podane hasła nie są ze sobą zgodne.</span>';
        }
        if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
            $blad++;
            echo '<span class="blad">Proszę wprowadzić poprawnie adres email.</span>';
        } else {
            $wynik = mysql_query("SELECT * FROM $tabela WHERE email='$email'");
            if (mysql_num_rows($wynik) <> 0) {
                $blad++;
                echo '<span class="blad">Podany adres e-mail jest już zajęty.</span>';
            }
        }
        if ($email !== $email2) {
            $blad++;
            echo '<span class="blad">Podane adresy e-mail nie są ze sobą zgodne.</span>';
        }
        if (!$resp->is_valid) {
            $error = $resp->error;
            echo '<span class="blad">Proszę wpisać poprawnie wyrazy z obrazka.</span>';
            $blad++;
        }

        // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
        if ($blad == 0) {

            $haslo = md5($haslo); // zaszyfrowanie hasla
            $kod = uniqid(rand()); // tworzenie unikalnego kodu dla użytkownika

            $wynik = mysql_query("INSERT INTO $tabela VALUES('', '$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod', NOW(),)");
          

           if ($wynik) {
                $list = "Witaj $login !
                Kliknij w poniższy link, aby aktywować swoje konto. http://www.mpm1122.xaa.pl/weryfikacja.php?weryfikacja=potwierdz&kod=$kod";
                mail($email, "Rejestracja uzytkownika", $list, "From: <[email protected]>");
                echo '<p>Dziekujemy za rejestracje! W ciągu nablizszych 5 minut dostaniesz wiadomosc e-mail z dalszymi wskazowkami rejestracji.</p>';
                mysql_close($polaczenie);
                exit;
            }
        }
        mysql_close($polaczenie);
    }

    // tworzenie formularza HTML
    echo <<< KONIEC
    
    <div class="formularz">
    <form class="form" action="rejestracja.php" method="post">
    <input type="hidden" name="wyslane" value="TRUE" />
            
            <p>
                Pola oznaczone gwiazdką <span class="req">*</span> to pola wymagane.
            </p>
    
            <p>
                <div class="label"><label for="imie">Imię</label></div>
                <input type="text" name="imie" id="imie" />
            </p>

            <p>
                <div class="label"><label for="nazwisko">Nazwisko</label></div>
                <input type="text" name="nazwisko" id="nazwisko" />
            </p>

            <p>
                <div class="label"><label for="login">Login <span class="req">*ten sam co na serwerze</span></label></div>
                <input type="text" name="login" id="login" />
            </p>
    
            <p>
                <div class="label"><label for="haslo">Hasło <span class="req">*</span></label></div>
                <input type="password" name="haslo" id="haslo" />
            </p>
    
            <p>
                <div class="label"><label for="haslo2">Powtórz hasło <span class="req">*</span></label></div>
                <input type="password" name="haslo2" id="haslo2" />
            </p>
    
            <p>
                <div class="label"><label for="email">Email <span class="req">*</span></label></div>
                <input type="text" name="email" id="email" />
            </p>
    
            <p>
                <div class="label"><label for="email2">Powtórz email <span class="req">*</span></label></div>
                <input type="text" name="email2" id="email2" />
            </p>
            <p> Rejestracja jest równoznaczna z akceptacją  <a href="../pp.php">Polityki Prywatności</a>.
            </p>
KONIEC;
   echo '<div class="recaptcha">';
   echo recaptcha_get_html($publickey); // wyświetlanie reCAPTCHA
   echo '</div>';
   echo <<< KONIEC
   <p class="submit">
      <input type="submit" value="Zarejestruj mnie" />
   </p></form>
KONIEC;

} else {
    header('Location: /index.php');
}
?>

</div>
<?php include('footer.php'); ?>
A to struktura sql tabeli :
Kod:
CREATE TABLE `rejestracja` (
      `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      `imie` VARCHAR(100) NOT NULL,
      `nazwisko` VARCHAR(100) NOT NULL,
      `login` VARCHAR(30) NOT NULL,
      `haslo` VARCHAR(50) NOT NULL,
      `email` VARCHAR(100) NOT NULL,
      `kod` VARCHAR(32) NOT NULL,
      `data` DATETIME NOT NULL,
      `status` TINYINT(1) DEFAULT 0,
      
      PRIMARY KEY (`id`)
)

Wszystko pięknie działa , ale w ostatnim czasie postanowiłem dodać avatary dla userów i zaczęło się piekło . Normalnie dodałem w sql kolumnę avatar niestety skrypt rejestracji przestał działać . Myślę że wina jest w tej części kodu :
Kod:
$wynik = mysql_query("INSERT INTO $tabela VALUES('', '$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod', NOW(),)");

I myślę nad zmianą go na :
PHP MySQL Insert Into coś takiego :
Kod:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
niestety nie jestem dobry w te klocki i proszę was o pomoc , chodzi i aby można było dodać nowe kolumny , a skrypt nadal by działał . Dziękuję za pomoc Smile
Odpowiedz
#2
Kod PHP:
$wynik mysql_query("INSERT INTO $tabela VALUES('', '$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod', NOW(),)"); 
przeciez jest zwracany błąd skoro nie działa Smile Ale jeżeli dodajesz kolumnę do owej tabeli , to i treść zapytania musi się zmienić. najlepiej stosować zapis
Kod PHP:
INSERT INTO table_name (column1column2column3,...)
VALUES (value1value2value3,...) 
Nawet przy zmianie struktury tabeli nadal powyższy kod działa , oczywiście dla operacji dodania nowych kolumn.
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Odpowiedz
#3
Ogólnie nawet jak dam pustą kolumnę bez żadnych danych to skrypt przestaje mi działać .
Odpowiedz
#4
a błąd ? wystepuje jakis ? co my wrozki ? w tym zapytaniu co dajesz po NOW() jest nie potrzebny przecinek. moze pokaz nowe zapytanie lub co zmieniles.
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Question Logowanie i rejestracja MatixYo 13 8,621 06-05-2011, 20:02
Ostatni post: kancik
  problem z rejestracja bartek91286 0 1,234 06-01-2011, 02:05
Ostatni post: bartek91286
Cool Rejestracja i Logowanie użytkowników strona45 1 2,729 09-09-2009, 06:07
Ostatni post: Labsta.com

Skocz do:


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