[PhP] Problem z rejestracją - mpm1122 - 29-12-2011
Witam mam dosyć dziwny problem . Mam skrypt rejestracji oto on :
Kod: <?php
ob_start();
session_start(); // rozpoczęcie sesji
?>
<?php include('header.php'); ?>
<h2>» 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
RE: [PhP] Problem z rejestracją - kancik - 29-12-2011
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 Ale jeżeli dodajesz kolumnę do owej tabeli , to i treść zapytania musi się zmienić. najlepiej stosować zapis
Kod PHP: INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
Nawet przy zmianie struktury tabeli nadal powyższy kod działa , oczywiście dla operacji dodania nowych kolumn.
RE: [PhP] Problem z rejestracją - mpm1122 - 29-12-2011
Ogólnie nawet jak dam pustą kolumnę bez żadnych danych to skrypt przestaje mi działać .
RE: [PhP] Problem z rejestracją - kancik - 29-12-2011
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.
|