Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Logowanie i rejestracja
Forum PHP.pl > Forum > Przedszkole
bubolski
Witam. Jest to gotowy skrypt z neta. Tworzy konto, dopisuje do bazy danych, jednak jest problem z zalogowaniem i na kazdej podstronie wywala mi problem z poleceniem session_start();

Oto stronka http://localizer.pl

a oto kody plików

logowanie.php

  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php
  2. if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
  3.  
  4.     if ($_POST['wyslane']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  5.  
  6.         include 'db.php'; // połączenie się z bazą danych
  7.         $tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
  8.  
  9.         $login = $_POST["login"];
  10.         $haslo = $_POST["haslo"];
  11.  
  12.         $haslo = md5($haslo); // szyfrowanie podanego hasła
  13.  
  14.         $wynik=mysql_query("SELECT * FROM $tabela WHERE
  15.         login='$login' and haslo='$haslo' and status=0");
  16.  
  17.         if (mysql_num_rows($wynik) == 1) {
  18.             $informacja = mysql_fetch_array($wynik);
  19.             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>';
  20.             exit;
  21.         }
  22.         $wynik=mysql_query("SELECT * FROM $tabela WHERE
  23.         login='$login' and haslo='$haslo' and status=1");
  24.  
  25.         if (mysql_num_rows($wynik) == 1) {
  26.             $informacja = mysql_fetch_array($wynik);
  27.             $_SESSION["login"] = $informacja["login"];
  28.             header('Location: http://www.localizer.pl/index.php ');
  29.         } else {
  30.             echo '<p>Zostały wprowadzone nieprawidłowe dane</p>';
  31.         }
  32.         mysql_close($polaczenie);
  33.     }
  34.     echo <<< KONIEC
  35.  
  36.     <form action="logowanie.php" method="post">
  37.     <input type="hidden" name="wyslane" value="TRUE" />
  38.  
  39.     <p>Login: <input type="text" name="login" /></p>
  40.     <p>Hasłp: <input type="password" name="haslo" /></p>
  41.  
  42.     <p><input type="submit" value="zaloguj" /></p>
  43.  
  44.     </form>
  45. KONIEC;
  46.  
  47. } else {
  48.     header('Location: / ');
  49. }
  50.  
  51. if ($_GET["wylogowanie"] == "tak") {
  52.     // niszczenie sesji użytkownika
  53.     session_unset();
  54.     session_destroy();
  55.     header('Location: / '); // przekierwanie na stronę główną
  56. }
  57.  
  58. ?><!--c2--></div><!--ec2-->


rejestracja

  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php
  2.  
  3.  
  4. if (!isset($_SESSION['login'])) {
  5.  
  6.     include 'db.php';
  7.     $tabela = 'uzytkownik';
  8.     require_once('recaptchalib.php');
  9.     $privatekey = '6LddDb4SAAAAANmedHf6eLfJMKosTX2zA';
  10.     $publickey = '6LddDb4SAAAAAEsLkjBq-1u5BgPMm1vnu';
  11.  
  12.     if ($_POST["wyslane"]) {
  13.  
  14.         $login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))), ENT_QUOTES);
  15.         $haslo = $_POST["haslo"];
  16.         $haslo2 = $_POST["haslo2"];
  17.         $email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
  18.         $email2 = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email2"]))), ENT_QUOTES);
  19.         $imie = htmlspecialchars(addslashes(strip_tags(trim($_POST["imie"]))), ENT_QUOTES);
  20.         $nazwisko = htmlspecialchars(addslashes(strip_tags(trim($_POST["nazwisko"]))), ENT_QUOTES);
  21.         $resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
  22.         if (strlen($login) < 3 or strlen($login) > 30 or !eregi("^[a-zA-Z0-9_.]+$", $login)) {
  23.             $blad++;
  24.             echo '<p>Proszę poprawnie wprowadzić login (od 3 do 30 znaków).</p>';
  25.         } else {
  26.             $wynik = mysql_query("SELECT * FROM $tabela WHERE login='$login'");
  27.             if (mysql_num_rows($wynik) <> 0) {
  28.                 $blad++;
  29.                 echo '<p>Podana nazwa użytkownika została już zajęta.</p>';
  30.             }
  31.         }
  32.         if (strlen($haslo) < 6 or strlen($haslo) > 30 ) {
  33.             $blad++;
  34.             echo '<p>Proszę poprawnie wpisać hasło (od 6 znaków do 30 znaków). </p>';
  35.         }
  36.         if ($haslo !== $haslo2) {
  37.             $blad++;
  38.             echo '<p> Podane hasła nie są ze sobą zgodne. </p>';
  39.         }
  40.         if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+.)+[a-z]{2,4}$", $email)) {
  41.             $blad++;
  42.             echo '<p> Proszę wprowadzić poprawnie adres email.</p>';
  43.         } else {
  44.             $wynik = mysql_query("SELECT * FROM $tabela WHERE email='$email'");
  45.             if (mysql_num_rows($wynik) <> 0) {
  46.                 $blad++;
  47.                 echo '<p> Podany adres e-mail jest już zajęty.</p>';
  48.             }
  49.         }
  50.         if ($email !== $email2) {
  51.             $blad++;
  52.             echo '<p> Podane adresy e-mail nie są ze sobą zgodne.</p>';
  53.         }
  54.         if (!$resp->is_valid) {
  55.             $error = $resp->error;
  56.             echo '<p>Proszę wpisać poprawnie wyrazy z obrazka.</p>';
  57.             $blad++;
  58.         }
  59.         if ($blad == 0) {
  60.  
  61.             $haslo = md5($haslo); // zaszyfrowanie hasla
  62.             $kod = uniqid(rand()); // tworzenie unikalnego kodu dla uĹĽytkownika
  63.  
  64.             $wynik = mysql_query("INSERT INTO $tabela VALUES('', '$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod', NOW(), '')");
  65.             if ($wynik) {
  66.                 $list = "Witaj $login !
  67.                 Kliknij w poniższy link, aby aktywować swoje konto. http://www.localizer.pl/weryfikacja.php?weryfikacja=potwierdz&kod=$kod";
  68.                 mail($email, "Rejestracja użytkownika", $list, "From: <localizer.pl>");
  69.                 echo '<p>Dziękujemy za rejestrację! W ciągu nabliższych 5 minut dostaniesz wiadomość e-mail z dalszymi wskazówkami rejestracji.</p>';
  70.                 mysql_close($polaczenie);
  71.                 exit;
  72.             }
  73.         }
  74.         mysql_close($polaczenie);
  75.     }
  76.     echo <<< KONIEC
  77.  
  78.     <form action="rejestracja.php" method="post">
  79.     <input type="hidden" name="wyslane" value="TRUE" />
  80.  
  81.     <p>Imię: <input type="text" name="imie" /></p>
  82.     <p>Nazwisko: <input type="text" name="nazwisko" /></p>
  83.     <p>Login*: <input type="text" name="login" /></p>
  84.     <p>Hasło*: <input type="password" name="haslo" /></p>
  85.     <p>Powtórz hasło*: <input type="password" name="haslo2" /></p>
  86.     <p>Adres e-mail*: <input type="text" name="email" /></p>
  87.     <p>Powtórz adres e-mail*: <input type="text" name="email2" /></p>
  88.     echo recaptcha_get_html($publickey); // wyĹ›wietlanie reCAPTCHA
  89.     echo <<< KONIEC
  90.  
  91.     <p><input type="submit" value="wyślij" /></p></form>;
  92.  
  93. } else {
  94.     header('Location: / '); // zalogowany uĹĽytkownik zostaje przekierowany na stronÄ™ głównÄ…
  95. }
  96.  
  97. ?><!--c2--></div><!--ec2-->


Bede bardzo wdzieczny za pomoc. Przy okazji kod moze przydac sie innym poniewaz all dziala, wystarczy tylko ten malutki blad z wyswietlaniem bledu start_session usunac, bo bardzo mozliwe ze jak go sie usunie to i logowanie bedzie w 100% dzialac. Jezeli ktos chce all pliki to niech napisze tutaj na forum to zamieszcze w archiwum wszystkie


tehaha
session_start() musi być na samym początku więc musisz wywalić to <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--> nie może być nawet jednej spacji
bubolski
Cytat(tehaha @ 21.10.2010, 16:48:20 ) *
session_start() musi być na samym początku więc musisz wywalić to <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--> nie może być nawet jednej spacji


zmienilem poczatek pliku rejestracja na taki
  1. <?php session_start();
  2. if (!isset($_SESSION['login'])) {
  3.  
  4.     include 'db.php';
  5.     $tabela = 'uzytkownik';
  6.     require_once('recaptchalib.php');
  7.     $privatekey = '6LddDb4SAAAAANmedHf6eLfJMKosTX2zA13vLQ2d';
  8.     $publickey = '6LddDb4SAAAAAEsLkjBq-1u5BgPMm1vnuegXcJr1';
  9.  
  10.     if ($_POST["wyslane"]) {    
  11.  
  12. reszta kodu


i nadal to samo

jest w stanie ktos pomoc ?
mount
szybciej będzie napisać skrypt rejestracji od zera niż poprawiać kod smile.gif


sprawdź ile razy i gdzie masz dane funkcje z session()

---
edit:

sprawdź też czy w includowanych plikach nie masz session()

  1. #
  2. include 'db.php';
  3. require_once('recaptchalib.php');
MateuszS
przed session_start() na samym poczatku skryptu daj ob_start(); a na końcu ob_end_flush(); tylko pamiętaj zeby to bylo na poczatku i koncu zadnego htmla czy php wczesniej
tehaha
i jeszcze spróbuj zapisać plik bez BOM
bubolski
Cytat(MateuszS @ 21.10.2010, 18:22:15 ) *
przed session_start() na samym poczatku skryptu daj ob_start(); a na końcu ob_end_flush(); tylko pamiętaj zeby to bylo na poczatku i koncu zadnego htmla czy php wczesniej


niestesty nie pomoglo. Wejdz na localizer.pl/rejestracja.php [tam jest po dodaniu ob_start()] a na localizer.pl/logowanie.php masz bez tej poprawki , praktycznie nie widac zadnej roznicy
jurek2351
... a może brak folderu tmp ?
tzn czy w katalogu głównym serwisu utworzyłeś folder tmp ?
bubolski
Cytat(jurek2351 @ 21.10.2010, 20:15:47 ) *
... a może brak folderu tmp ?
tzn czy w katalogu głównym serwisu utworzyłeś folder tmp ?

nie a to wystarczy jak utworze folder czy mam do niego jeszcze cos wrzucac?
jurek2351
katalog tmp zakłada się pusty. Po prostu należy tylko utworzyć go w katalogu głównym serwisu. A służy on do przechowywania danych sesji.
bubolski
Cytat(jurek2351 @ 22.10.2010, 08:56:52 ) *
katalog tmp zakłada się pusty. Po prostu należy tylko utworzyć go w katalogu głównym serwisu. A służy on do przechowywania danych sesji.



dzieki wielkie smile.gif wlasnie o to chodzilo , wystarczylo stworzyc folder tmp smile.gif
krokil
Nie mogę sobie poradzić z wylogowaniem zakończeniem sesji. Wciąż jest w pamięci. Proszę o pomoc
plik logowanie:

<?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 = 'uzytkownicy'; // 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: uzytkownicy.php ');

}
$wynik=mysql_query("SELECT * FROM admin WHERE
login='$login' and haslo='$haslo'");

// jeżeli wszystko jest dobrze, użytkownik się loguje
$wynik=mysql_query("SELECT * FROM admin WHERE
login='$login' and haslo='$haslo'");

if (mysql_num_rows($wynik) == 1) {
$informacja = mysql_fetch_array($wynik);
$_SESSION["login"] = $informacja["login"];
header('Location:zalogowany.php ');
} else {
echo '<p>Zostały wprowadzone nieprawidłowe dane</p>';
}
mysql_close($polaczenie);
}

// tworzenie formularza HTML
echo <<< KONIEC

<form action="logowanie.php" method="post">
<input type="hidden" name="wyslane" value="TRUE" />

<p>Login: <input type="text" name="login" /></p>
<p>Hasło: <input type="password" name="haslo" /></p>

<p><input type="submit" value="zaloguj" /></p>

</form>
KONIEC;

}
else {
header('Location:uzytkownicy.php '); // zalogowany użytkownik zostaje przekierowany na stronę główną
}

if ($_GET["wyloguj"] == "tak") {
// niszczenie sesji użytkownika
session_unset();
session_destroy();
header('Location:logowanie.php '); // przekierwanie na stronę główną
}

?>


plik uzytkownicy:

<?php

session_start(); // Na samej górze zadeklaruj sesję.
if(!session_is_registered("login")){ // Sprawdza zmienną sesji.
header("location:logowanie.php"); // Przekierowanie do logowanie.php



}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="title" content="Narzędzia | Elektronarzędzia RafeX" />

<meta name="keywords" content="elektronarzędzia, narzędzia, sklep z narzędziami, sklep narzedziowy, szlifierki, wkręty, śruby, klucze, kombinerki, trzony, style, tarcze, drewno, yato, topex, verto, honiton, ruda śl, ruda śląska" />

<meta name="description" content="Oferujemy narzędzia uznanych firm jak Honiton, Yato, Dewalt, Bosch, Makita. Sklep narzędziowy, instalacyjny. Wiertarki i szlifierki najlepszych firm w atrakcyjnych cenach." />

<meta name="google-site-verification" content="" />

<title>RaFeX - narzędzia, drewno, elektryka</title>

</head>
<link rel="stylesheet" type="text/css" href="style.css" />
<html>



<body oncontextmenu="return false" bgcolor="white">
<p center>
<ul id="menu1">
<li><a href="uzytkownicy">Strona główna</a>
</li><li><a href="mojedane">Moje dane</a>
</li><li><a href="produkty">Produkty</a>
</li><li><a href="koszyk">Koszyk</a>
</li><li><a href="przesylka">Przesyłka</a>
</li><li><a href="sklep.html">Wyloguj</a>
</li>
</ul>

</p>



</body>
</html>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.