Witam, na początku chcę zaznaczyć, że jestem początkującym webmasterem i przepraszam za głupie pytania, ale to dla mnie duży problem. Znalazłem w sieci skrypt rejestracji i logowania, ale brakuje mi pewnego przekierowania i nie wiem, co i gdzie wstawić. Mam następujące piki:
logowanie.php
rejestracja.php
zmiana-danych.php
przypomnienie.php
weryfikacja.php
do tego jest jeszcze plik połączenia z bazą danych db.php
Mój problem jest następujący: po wykonaniu logowania testowego wszystko wydaje się w porządku, ale kiedy próbuję się zalogować używając innego loginu i hasła, wyskakuje mi komunikat że hasło i login jest nieprawidłowy. Tutaj powinno być przekierowanie do rejestracji, a nie nie przekierowuje. Wiem że chodzi o wpisanie tylko jednej linijki, ale bardzo proszę o pomoc jakoś życzliwą osobę. Niech mi ktoś wskaże, co gdzie wpisać. Mam też problem z ustawieniem kodowania. W pliku logowanie.php wszystko jest dobrze, a na stronie wyskakują krzaczki i nie mogę sformatować formularza na swoje potrzeby. Proszę o pomoc i z góry dziękuję.
[php]
logowanie.php
Kod PHP:
session_start(); // rozpoczÄ_cie sesji
if (!isset($_SESSION['login'])) { // dostÄ_p dla niezalogowanego uĹźytkownika
if ($_POST['wyslane']) { // jeĹźeli formularz zostaĹ_ wysĹ_any, to wykonuje siÄ_ poniĹźszy skrypt
include 'db.php'; // poĹ_Ä_czenie siÄ_ z bazÄ_ danych
$tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
$login = $_POST["login"];
$haslo = $_POST["haslo"];
$haslo = md5($haslo); // szyfrowanie podanego hasĹ_a
$wynik=mysql_query("SELECT * FROM $tabela WHERE
login='$login' and haslo='$haslo' and status=0");
// jeĹźeli uĹźytkownik zarejestrowaĹ_ siÄ_, a nie aktywowaĹ_ swojego konta, to wyĹ_wietla siÄ_ komunikat
if (mysql_num_rows($wynik) == 1) {
$informacja = mysql_fetch_array($wynik);
echo '<p>Nie aktywowałeś jeszcze swojego konta. Aby to zrobić, wejdź w swoją skrzynkę odbiorczą, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto.</p>';
exit;
}
// jeĹźeli wszystko jest dobrze, uĹźytkownik siÄ_ loguje
$wynik=mysql_query("SELECT * FROM $tabela WHERE
login='$login' and haslo='$haslo' and status=1");
if (mysql_num_rows($wynik) == 1) {
$informacja = mysql_fetch_array($wynik);
$_SESSION["login"] = $informacja["login"];
header('Location: index.php ');
} else {
echo '<p>Zostały wprowadzone nieprawidłowe dane. Wypełnij formularz ponownie.</p>';
}
mysql_close($polaczenie);
}
// tworzenie formularza HTML
echo <<< KONIEC
<p style="text-align:left"></p><font size=2; color="#0000ff"><b> REJESTRACJA/LOGOWANIE</font></b>
<br>
<br>
<form action="logowanie.php" method="post">
<input type="hidden" name="wyslane" value="TRUE" />
<p> <span style="color:#0000ff">Login:</span> <input type="text" name="login" /></p>
<p> <span style="color:#0000ff">Hasło: </span><input type="password" name="haslo" /></p>
<p><input type="submit" value="Zaloguj się" /></p>
</form>
KONIEC;
} else {
header('Location: / '); // zalogowany uĹźytkownik zostaje przekierowany na stronÄ_ gĹ_ĂłwnÄ_
}
if ($_GET["wylogowanie"] == "tak") {
// niszczenie sesji uĹźytkownika
session_unset();
session_destroy();
header('Location: / '); // przekierwanie na stronÄ_ gĹ_ĂłwnÄ_
}
rejestracja.php
Kod PHP:
session_start(); // rozpoczĂ__cie sesji
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 = '6Ld83r0SAAAAAP1CMPSwPazjG-6QLO9J8RpyZjTT '; // prywatny klucz reCAPTCHA
$publickey = '6Ld83r0SAAAAALNYbNZEBieqh5k3KVad4we8Bmbb'; // 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 '<p>ProszĂ__ poprawny wprowadziĂ__ login (od 3 do 30 znakÄ_Ĺ_w).</p>';
} else {
$wynik = mysql_query("SELECT * FROM $tabela WHERE login='$login'");
if (mysql_num_rows($wynik) <> 0) {
$blad++;
echo '<p>Podana nazwa uĚźytkownika zostaÄš_a juĚź zajĂ__ta.</p>';
}
}
if (strlen($haslo) < 6 or strlen($haslo) > 30 ) {
$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'");
if (mysql_num_rows($wynik) <> 0) {
$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 VALUES('', '$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod', NOW(), '')");
if ($wynik) {
$list = "Witaj $login !
Kliknij w poniĚźszy link, aby aktywowaĂ__ swoje konto. http://smuklasylwetka.home.pl/weryfikacja.php?weryfikacja=potwierdz&kod=$kod";
mail($email, "Rejestracja uĚźytkownika", $list, "From: <[email protected]>");
echo '<p>DziĂ__kujemy za rejestracjĂ__! W ciĂ__gu nabliĚźszych 5 minut dostaniesz wiadomoÄš_Ă__ e-mail z dalszymi wskazÄ_Ĺ_wkami rejestracji.</p>';
mysql_close($polaczenie);
exit;
}
}
mysql_close($polaczenie);
}
// tworzenie formularza HTML
echo <<< KONIEC
<form action="rejestracja.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
echo <<< KONIEC
<p><input type="submit" value="wyÄš_lij" /></p></form>
KONIEC;
} else {
header('Location: / '); // zalogowany uĚźytkownik zostaje przekierowany na stronĂ__ gÄš_Ä_Ĺ_wnĂ__
}
Kod PHP:
session_start();
include 'db.php'; // poĹ_Ä_czenie siÄ_ z bazÄ_ danych
$tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
if (isset($_SESSION['login'])) { // dostÄ_p dla zalogowanego uĹźytkownika
if ($_POST['wyslane']) { // jeĹźeli formularz zostaĹ_ wysĹ_any, to wykonuje siÄ_ poniĹźszy skrypt
// filtrowanie treĹ_ci wprowadzonych przez uĹźytkownika
$email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
$haslo = $_POST["haslo"];
$haslo2 = $_POST["haslo2"];
// system sprawdza czy prawidĹ_owo zostaĹ_y wprowadzone dane
if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+.)+[a-z]{2,4}$", $email)) {
$blad++;
echo '<p>ProszÄ_ wprowadziÄ_ poprawnie adres email </p>';
}
$wynik = mysql_query("SELECT * FROM $tabela WHERE login='{$_SESSION["login"]}'");
if ($wynik) {
$informacja = mysql_fetch_array($wynik);
if ($email !== $informacja['email']) {
$wynik = mysql_query("SELECT * FROM $tabela WHERE email='$email'");
if (mysql_num_rows($wynik) <> 0) {
$blad++;
echo '<p> Podany adres e-mail jest juĹź zajÄ_ty.</p>';
}
}
}
if ($haslo) {
if (strlen($haslo) < 6 or strlen($haslo) > 30) {
$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/>';
}
// jeĹźeli bĹ_Ä_d nie wystÄ_piĹ_, to dane zostajÄ_ prawidĹ_owo zapisane z bazie MySQL
if ($blad == 0) {
if ($haslo == false) {
$wynik = mysql_query("UPDATE $tabela
SET email='$email' WHERE login='{$_SESSION['login']}'");
} else {
$haslo = md5($haslo); // szyfrowanie hasla
$wynik = mysql_query("UPDATE $tabela
SET haslo='$haslo', email='$email' WHERE login='{$_SESSION['login']}'");
}
if ($wynik) {
echo '<p>Dane zostaĹ_y zmienione</p>';
} else {
echo '<p>Dane nie zostaĹ_y zmienione</p>';
}
}
}
$wynik = mysql_query("SELECT * FROM $tabela WHERE
login='{$_SESSION["login"]}'");
if ($wynik) {
$informacja = mysql_fetch_array($wynik);
// tworzenie formularza HTML z danymi uĹźytkownika
echo <<< KONIEC
<form action="zmiana-danych.php" method="post">
<input type="hidden" name="wyslane" value="TRUE" />
<p>Login: <input type="text" name="login" disabled="disabled" value="{$informacja['login']}" /></p>
<p>Adres e-mail: <input type="text" name="email" value="{$informacja['email']}" /></p>
<p>HasĹ_o: <input type="password" name="haslo" /></p>
<p>PowtĂłrz hasĹ_o: <input type="password" name="haslo2" /></p>
<p><input type="submit" value="wyĹ_lij" /></p>
KONIEC;
}
mysql_close($polaczenie);
} else {
header('Location: / '); // niezalogowany uĹźytkownik zostaje przekierowany na stronÄ_ gĹ_ĂłwnÄ_
}
przypomnienie.php
Kod PHP:
session_start(); // rozpoczÄ_cie sesji
if (!isset($_SESSION['login'])) { // dostÄ_p dla niezalogowanego uĹźytkownika
include 'db.php'; // poĹ_Ä_czenie siÄ_ z bazÄ_ danych
$tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
if ($_POST['wyslane']) { // jeĹźeli formularz zostaĹ_ wysĹ_any, to wykonuje siÄ_ poniĹźszy skrypt
$login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))), ENT_QUOTES); // filtrowanie $_POST['login']
$hasloodszyfrowane = uniqid(rand()); // tworzenie nowe hasĹ_a
$haslo = md5($hasloodszyfrowane); // szyfrowanie hasĹ_a
// uĹźytkownikowi zostaje zmienione hasĹ_o, ktĂłre system wygenerowaĹ_
// jeĹźeli podanego loginu nie ma w bazie, wyĹ_wietla siÄ_ komunikat
$wynik = mysql_query("UPDATE $tabela
SET haslo='$haslo' WHERE login='$login' and status=1");
$wynik = mysql_query("SELECT * FROM $tabela
WHERE login='$login' and status=1");
if (mysql_num_rows($wynik) == 1) {
$informacja = mysql_fetch_array($wynik);
$email = $informacja["email"];
$list="Twoje nowe wygenerowane hasĹ_o to: $hasloodszyfrowane";
mail($email, "Przypomnienie hasla", $list, "From: <[email protected]>");
echo '<p>Nowe hasĹ_o zostaĹ_o wysĹ_ane na adres e-mail wykorzystany podczas rejestracji konta.</p>';
} else {
echo '<p>UĹźytkownik o podanym loginie nie istnieje!</p>';
}
mysql_close($polaczenie);
}
// tworzenie formularza HTML
echo <<< KONIEC
<form action="przypomnienie.php" method="post">
<input type="hidden" name="wyslane" value="TRUE" />
<p>Login: <input type="text" name="login" /></p>
<p><input type="submit" value="wyĹ_lij" /></p>
KONIEC;
} else {
header('Location: index.php '); // zalogowany uĹźytkownik zostaje przekierowany na stronÄ_ gĹ_ĂłwnÄ_
}
Kod PHP:
if ($_GET['weryfikacja'] == 'potwierdz') {
include 'db.php'; // poĹ_Ä_czenie siÄ_ z bazÄ_ danych
$tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
$kod = htmlspecialchars(stripslashes(strip_tags(trim($_GET['kod']))), ENT_QUOTES); // filtrowanie $_GET['kod']
// 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
$wynik = mysql_query("SELECT * FROM $tabela
WHERE kod='$kod' and status=1");
if (mysql_num_rows($wynik) == 1) {
echo '<p>AktywowaĹ_eĹ_ juĹź swoje konto.</p';
exit;
} else {
$wynik = mysql_query("DELETE FROM $tabela
WHERE data<=DATE_SUB(NOW(),INTERVAL 2 DAY) and status=0");
$wynik = mysql_query("UPDATE $tabela
SET status='1', data=NOW() WHERE kod='$kod' and status=0");
$wynik = mysql_query("SELECT * FROM $tabela
WHERE kod='$kod' and status=1");
if (mysql_num_rows($wynik) == 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
if (!$kod or mysql_num_rows($wynik)<>1) {
echo '<p>Aktywowanie konta nie powiodĹ_o siÄ_.</p>';
}
mysql_close($polaczenie);
}
Mój problem jest następujący: po wykonaniu logowania testowego wszystko wydaje się w porządku, ale kiedy próbuję się zalogować używając innego loginu i hasła, wyskakuje mi komunikat że hasło i login jest nieprawidłowy. Tutaj powinno być przekierowanie do rejestracji, a nie nie przekierowuje. Wiem że chodzi o wpisanie tylko jednej linijki, ale bardzo proszę o pomoc jakoś życzliwą osobę. Niech mi ktoś wskaże, co gdzie wpisać. Mam też problem z ustawieniem kodowania. W pliku logowanie.php wszystko jest dobrze, a na stronie wyskakują krzaczki i nie mogę sformatować formularza na swoje potrzeby. Proszę o pomoc i z góry dziękuję.
[php]