Witam, mam problem, gdyż rejestrując się mogę zrobić dużo kont o tym samym nicku... nie da się potwierdzać ( chyba przez to że się źle rejestrują userzy:D ) i logować... Plik db.php jest prawidłowo napisany więc nie przez to...
Daje wam kody kilku plików rejestracji (pliki z formularzami pomijam [np. logowanie, rejestracja, itd.] ) :
to kod pliku rejestr2.php:
<?php
if ($_POST['koniec']) {
include 'db.php'; // połączenie się z bazą danych
/*
CREATE TABLE `user` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`login` VARCHAR(30) NOT NULL,
`pass` VARCHAR(30) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`data` VARCHAR(20) NOT NULL,
`aktywny` TINYINT(1) DEFAULT 0,
PRIMARY KEY (`id`)
);
*/
$login = $_POST['login'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
$email = $_POST['email'];
$email2 = $_POST['email2'];
if (strlen($login) < 3 or
strlen($login) > 30
) { $komunikat = 'Błędny login lub puste pole';} if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) { $komunikat = 'Błędny adres email';} if (strlen($pass) < 6 or
strlen($pass) > 30
) { $komunikat = 'Błędne hasło lub puste pole';} if ($email == $email2 ) { $komunikat = 'Emaile nie zgadzają się';}
if ($pass == $pass2) { $komunikat = 'Hasła nie zgadzają się';}
$wynik = mysql_query("SELECT * FROM user WHERE login='$login'"); if (mysql_num_rows($wynik) <> 0
) { $komunikat = "Ten login jest zajety";}
$wynik = mysql_query("INSERT INTO $tabela VALUES('', '$login', '$pass', '$email', '$data', '0')");
if ($wynik) {
$list="Witaj $login!
Dane do zalogowania:
Login: $login
Haslo: takie jakie podałeś przy rejestracji
Aby aktywować swoje konto kliknij w link: #STRONKA#/logow/potwierdz.php?user=$login
Dziękuje za rejestracje, administrator strony";
mail($email, "Link Aktywacyjny", $list,"From: <Admin@STRONKA>");
$komunikat = "<p>Dziękuję za rejestracje ".$login."! W ciagu nabliższych 5 minut dostaniesz wiadomość e-mail z linkiem aktywacyjnym konta.</p> <br> Aktywuj konto i <a href='formularz.php'>Zaloguj się</a>";
} else { echo 'Nie zarejestrowałeś się, spróbuj ponownie!'; } }
?>
to kod potwierdz.php:
<? include('head.php'); ?>
<?php
include('db.php');
$login = $_GET['user'];
/*
mysql_query("UPDATE user SET aktywny=1 WHERE login=$login ");
if(mysql_affected_rows()==0)
{
print'Aktywacja ukończona pomyślnie. Możesz już korzystać z naszego serwisu. <a href="formularz.php">Zaloguj się!</a>';
}
else
{
print'Podano nieistniejącego użytkownika!';
}
*/
WHERE login=$login and aktywny=1");
echo '<span class="powodzenie">Aktywowałeś już swoje konto.</span>'; } else {
// $wynik = mysql_query("UPDATE $tabela
// SET aktywny='1', data=NOW() WHERE login=$login and aktywny=0");
WHERE login=$login and aktywny=1");
echo '<span class="powodzenie">Dziękujemy. Rejestracja została zakończona poprawnie. Możesz się teraz zalogować.</span>'; }
}
// jeżeli został wprowadzony zły link, wyświetla się błąd
echo '<p>Aktywowanie konta nie powiodło się.</p>'; }
?>
<? include('foot.php'); ?>
to kod login.php:
<?php
if ($_POST['koniec']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
include('db.php');
// sprawdzanie czy to nie jest admin
include("admin.php");
$login = $_POST['login'];
$pass = $_POST['pass'];
if ($login == $adl) {
if ($pass == $adp) {
$_SESSION['loged'] = $login;
$_SESSION['rang'] = "admin";
echo '<meta http-equiv="Refresh" content="0 url=admp.php" >'; }
}
login='$login' and pass='$pass' and aktywny=0");
// jeżeli nie aktywował konta
$komunikat = 'To konto nie jest aktywne!<br>Musisz je aktywowac by sie zalogowac!<br>Wejdz na E-mail, odszukaj wiadomość z linkiem aktywacyjnym i aktywuj konto.<br>';
}
// użytkownika loguje
login='$login' and pass='$pass' and aktywny=1");
$_SESSION["login"] = $informacja["login"];
header('Location: index.php '); } else {
echo 'Zostały wprowadzone nieprawidłowe dane!'; }
$_SESSION['loged'] = $login;
$_SESSION['rang'] = "user";
}
?>