Witam otóż mam kod formularza z captcha i wysyłką maila do aktywacji konta. Wszystko działa cudnie poza tym że nie zapisuje przesłanych danych do bazy.
Tutaj kod formularza:
<?php
if (!isset($_SESSION['login'])) { // dostęp dla zalogowanego użytkownika
include 'db.php'; // połączenie się z bazą danych
$tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
require_once('recaptchalib.php'); // dołączenie modułu reCAPTCHA
$privatekey = '6Le6g8ASAAAAADdI4eX26AV2y21vatJQbdG0Gb02 '; // prywatny klucz reCAPTCHA
$publickey = '6Le6g8ASAAAAAO6_sXwwQOR0QdJUY4diRmkie1WG '; // 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
$haslo = $_POST["haslo"];
$haslo2 = $_POST["haslo2"];
$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 '<p>Proszę poprawny wprowadzić login (od 3 do 30 znaków).</p>'; } else {
$wynik = mysql_query("SELECT * FROM $tabela WHERE login='$login'"); $blad++;
echo '<p>Podana nazwa użytkownika została już zajęta.</p>'; }
}
$blad++;
echo '<p>Proszę poprawnie wpisać hasło (od 6 znaków do 30 znaków). </p>'; }
if ($haslo !== $haslo2) {
$blad++;
echo '<p> Podane hasła nie są ze sobą zgodne. </p>'; }
if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) { $blad++;
echo '<p> Proszę wprowadzić poprawnie adres email.</p>'; } else {
$wynik = mysql_query("SELECT * FROM $tabela WHERE email='$email'"); $blad++;
echo '<p> Podany adres e-mail jest już zajęty.</p>'; }
}
if ($email !== $email2) {
$blad++;
echo '<p> Podane adresy e-mail nie są ze sobą zgodne.</p>'; }
if (!$resp->is_valid) {
$error = $resp->error;
echo '<p>Proszę wpisać poprawnie wyrazy z obrazka.</p>'; $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 (imie, nazwisko, login, haslo, email, kod) VALUES('$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod')"); if ($wynik) {
$list = "Witaj $login !
Kliknij w poniższy link, aby aktywować swoje konto. <a href="http://bystrydesign.pl/nieruchomosci/weryfikacja.php?weryfikacja=potwierdz&kod=$kod";" target="_blank">http://bystrydesign.pl/nieruchomosci/weryf...#036;kod";</a>
mail($email, "Rejestracja użytkownika", $list, "From: <kontakt@twoja-strona.pl>"); echo '<p>Dziękujemy za rejestrację! W ciągu nabliższych 5 minut dostaniesz wiadomość e-mail z dalszymi wskazówkami rejestracji.</p>'; }
}
}
// tworzenie formularza HTML
<form action="udodaj.php" method="post">
<input type="hidden" name="wyslane" value="TRUE" />
<p>Imię: <input type="text" name="imie" /></p>
<p>Nazwisko: <input type="text" name="nazwisko" /></p>
<p>Login*: <input type="text" name="login" /></p>
<p>Hasło*: <input type="password" name="haslo" /></p>
<p>Powtórz hasło*: <input type="password" name="haslo2" /></p>
<p>Adres e-mail*: <input type="text" name="email" /></p>
<p>Powtórz adres e-mail*: <input type="text" name="email2" /></p>
KONIEC;
echo recaptcha_get_html
($publickey); // wyświetlanie reCAPTCHA
<p><input type="submit" value="wyślij" /></p></form>
KONIEC;
} else {
header('Location: / '); // zalogowany użytkownik zostaje przekierowany na stronę główną }
?>
A tutaj kod weryfikacji:
<?php
if ($_GET['weryfikacja'] == 'potwierdz') {
include 'db.php'; // połączenie się z bazą danych
$tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
// jeżeli kod znajduje się URL, skrypt najpierw patrzy czy użytkownik ma aktywne konto
// jeżeli nie ma, wtedy zmienia się jego status, jeżeli nie upłynęło 48 godzin od rejestracji
WHERE kod='$kod' and status=1");
echo '<p>Aktywowałeś już swoje konto.</p'; } else {
WHERE data<=DATE_SUB(NOW(),INTERVAL 2 DAY) and status=0");
SET status='1', data=NOW() WHERE kod='$kod' and status=0");
WHERE kod='$kod' and status=1");
echo '<p>Dziękujemy. Rejestracja została zakończona poprawnie. Możesz się teraz zalogować.</p>'; }
}
// jeżeli został wprowadzony zły link, wyświetla się błąd
echo '<p>Aktywowanie konta nie powiodło się.</p>'; }
}
?>
Co powinienem poprawić(IMG:
style_emoticons/default/questionmark.gif) Próbowałem na kilka sposobów + googlowałem.