Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie na Cookies
Forum PHP.pl > Forum > Przedszkole
Reiven
Witam, po wielu mordęgach udało mi sie sklepać w skrypt logowania, lecz wyskakuje mi błąd:

Kod
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\WebServ\httpd\news\zaloguj.php:2) in C:\Program Files\WebServ\httpd\news\zaloguj.php on line 33

i nie wiem co złego zrobiłem.
oto kod:
Kod
<?php
include ('config.php');
$db = mysql_connect ("$host", "$login", "$pass");
mysql_select_db ($baza);

$login = $_POST['user'];
$haslo = $_POST['haslo'];

$query = "SELECT * FROM admin WHERE user='$user'; ";
$result = mysql_query ($query);
$ile_user = mysql_num_rows($result);

if ($ile_user > 0)
{
$query2 = "SELECT * FROM admin WHERE user='$user' AND haslo='$haslo';";
$result2 = mysql_query ($query2);
$ile_user2 = mysql_num_rows($result2);

if ($ile_user2 > 0)
{
setcookie ("user2_c", $user,time()+3600);
setcookie ("haslo2_c", $haslo,time()+3600);
header("Location: admin.php?s=zobacz");
}
else
{
header("Location: index.php");        
}
}
else
{
header("Location: index.php");
}

mysql_close ($db);
?>
strife
Było już tongue.gif

http://phppl.ezpublish.no/wortal/artykuly/...ch_programistow
Reiven
dobra jakoś sobie z tym poradziłem biggrin.gif... lecz mam kolejny problem. Więdz zrobiłem sobie panel admina... i mam w nim podstronke: index.php?cmd=addnews, i kazda osoba obojętnie czy to admin czy normalny user moze na nią wejsć, i nei wiem ja kzrobić że jak wejdzie niepowołany gosćto żeby mu okienko wyskakiwało, aby się zalogował, a zalogowanemu adminowi nic nie wyskakiwało smile.gif.

PoZdro
strife
Sprawdzaj czy użytkownik przy wejściu na tego linka ma odpowiednie uprawnienia, czyli jeśli istnieje dane ciasteczko albo zmienna sesyjna, jezeli nie to wyskoczy okienko logowania w przeciwnym przypadku będzie mógł tam wejść. blink.gif

Nie bardzo wiem jak Ci pomóc ponieważ nie wiem jakie dane u Ciebie odpowiadają za uwierzytelnianie użytkownika po zalogowaniu. Mogło by to wyglądać np. tak:
  1. <?php
  2. // ...
  3. if ( ! isset ( $_SESSION['Login'] ) )
  4. {
  5. die ( 'nie masz uprawnien!' );
  6. }
  7. // czesc kodu gdy je mamy
  8. ?>


Pozdrawiam!
Reiven
hmmm.... teraz to wogole nawet jak zalogowany jestem to nie działa, jużci pokazuje jak to u mnie wygląda:

zaloguj.php
  1. <?php
  2. include ('config.php');
  3. $db = mysql_connect ("$host", "$login", "$pass");
  4. mysql_select_db ($baza);
  5.  
  6. $login = $_POST['user'];
  7. $haslo = $_POST['haslo'];
  8.  
  9. $query = "SELECT * FROM admin WHERE user='$user'; ";
  10. $result = mysql_query ($query);
  11. $ile_user = mysql_num_rows($result);
  12.  
  13. if ($ile_user > 0)
  14. {
  15. $query2 = "SELECT * FROM admin WHERE user='$user' AND haslo='$haslo';";
  16. $result2 = mysql_query ($query2);
  17. $ile_user2 = mysql_num_rows($result2);
  18.  
  19. if ($ile_user2 > 0)
  20. {
  21. setcookie ("user2_c", $user,time()+3600); 
  22. setcookie ("haslo2_c", $haslo,time()+3600); 
  23. header("Location: index.php?f=home");
  24. }
  25. else
  26. {
  27. header("Location: index.php");
  28. }
  29. }
  30. else
  31. {
  32. header("Location: index.php");
  33. }
  34.  
  35. mysql_close ($db);
  36. ?>


nie będę pokazywał pliku index.php bo tam jest jedynie formularz do logowania.
PoZdro.
strife
Dziwny ten Twój kod, ale już mniej więcej wiem o co chodzi, tak więc w miejscu w którym chcesz sprawdzić czy dany użytkownik ma uprawnienia na stronę musisz umieścić kod, który sprawdzi czy login i hasło usera zawarte w ciasteczkach są takie jak u Ciebie w bazie i wtedy daje dostęp.

Myślę, że pierwsze co powinieneś zrobić po poprawnym zalogowaniu to sprawdzić, czy dane ciasteczka istnieją, wtedy upewnisz się, że Twój cały skrypt do logowania działa prawidłowo.
  1. <?php
  2. print_r( $_COOKIE );
  3. ?>

Jeśli wszystko przechodzi bezbłędnie to teraz przejdźmy do tego miejsca, w którym chcesz sprawdzić czy użytkownik ma uprawnienia, czyli czy jest zalogowany.
  1. <?php
  2. if ( isset ( $_COOKIE['user2_c'] ) && isset ( $_COOKIE['haslo2_c'] ) )
  3. {
  4. // .. tutaj sprawdzamy czy login i haslo odpowiada
  5. // .. temu zapisanemu w bazie
  6. $user = $_COOKIE['user2_c'];
  7. $pass = $_COOKIE['haslo2_c'];
  8.  
  9. $p = mysql_query( "SELECT * FROM admin WHERE user = '" . $user . "' AND haslo = '" . $pass . "' ;");
  10. $fetch = mysql_fetch_array( $p );
  11. if ( $fetch )
  12. {
  13. echo 'masz dostep do strony'; 
  14. }
  15. else
  16. {
  17. echo 'Wystapily bledy, zaloguj sie ponownie!';
  18. }
  19. }
  20. else{
  21. echo 'Przykro mi, ale nie masz uprawnien aby ogladac ta strone!';
  22. }
  23. ?>

Oczywiście to jest taki mały zarys. Mogłem się gdzieś walnąć. Jednak samą ideę już masz. smile.gif

Pozdrawiam!
Reiven
Wielkie dzięki smile.gif wszystko śmiga łądnie ( po małej przeróbce).
PoZdro
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.