Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: maly problem ze skryptem
Forum PHP.pl > Forum > Przedszkole
bronx
witam

pisze wlasnie system logowania i mam pewien problem, najpierw kody:

zaloguj.php:
  1. <?php
  2. include "polaczenie.php";
  3.  
  4. $wybrana_tabela = "admini_com";
  5.  
  6. $sql = "SELECT * FROM $wybrana_tabela WHERE login = "$login" AND haslo = "$haslo"";
  7.  
  8. $zapytanie = mysql_query($sql, $polaczenie) or die ("Wykonanie zapytania nie powiodło się");
  9.  
  10. $num = mysql_numrows($zapytanie);
  11.  
  12. if ($num !=0)
  13.  
  14. {
  15.  
  16.  
  17. $_SESSION['login'] = $_POST['login'];
  18. $_SESSION['haslo'] = $_POST['haslo'];
  19.  
  20. $sql2 = "UPDATE $wybrana_tabela SET zalogowan = zalogowan + 1 WHERE login = "$login"";
  21.  
  22. $zapytanie2 = mysql_query($sql2, $polaczenie) or die ("Wykonanie zapytania nie powiodło się");
  23.  
  24. header("Location: admin.php");
  25. }
  26. else
  27. {
  28. header("Location: zle_dane.php");
  29. }
  30. ?>


admin.php:
  1. <?php
  2.  
  3. include "polaczenie.php";
  4.  
  5. $wybrana_tabela = "admini_com";
  6.  
  7. $sql = "SELECT * FROM $wybrana_tabela WHERE login = "$login" AND haslo = "$haslo"";
  8.  
  9. $zapytanie = mysql_query($sql, $polaczenie) or die ("Wykonanie zapytania nie powiodło się");
  10.  
  11. $num = mysql_numrows($zapytanie);
  12.  
  13. if ($num !=0)
  14.  
  15. {
  16.  
  17. echo "zalogowany - witamy";
  18.  
  19. }
  20.  
  21. else
  22.  
  23. {
  24.  
  25. echo "złe dane - nie zalogowany";
  26.  
  27. }
  28. ?>


no i teraz jest problem. Jak podam prawdziwe dane to jest wszystko ok, ale jak złe to:

Kod
Notice: Undefined variable: login in /www/coM/admin.php on line 56

Notice: Undefined variable: haslo in /www/coM/admin.php on line 56
złe dane - nie zalogowany


wiem że chodzi o to, że nie jest zdefiniowana zmienna $login i haslo ale właśnie nie wiem jak z tego wybrnąć :/ jak to zrobić żeby przy podaniu złych danych, lub bez przechpdzenia przez procej logowania wyświetliło tylko napis "złe dane - nie zalogowany"
dasko
  1. <?php
  2.  
  3. $sql = "SELECT * FROM $wybrana_tabela WHERE login = "$login" AND haslo = "$haslo"";
  4.  
  5. ?>

Może by tak tutaj dać też $_POST['login'] i $_POST['haslo'] ?
bronx
nie nie, to nie o to chodzi. Patrz jeżeli ktoś się zaloguje to zapisuje login i haslo do sesji i potem wstawia je do zapytania. Ale jezeli ktoś się nie zaloguje to sesja wogole nie istnieje i nie moze pobrac loginu i hasla do zapytania. Ptzynaj,niej tak mi się wydaje że w tym jest problem smile.gif

ma ktoś jakieś pomysły jak z tego wybrnąć ?
nieznajomy
Mały problem. Jezeli formularz logowania uruchamia plik zaloguj.php to nie rozumię w jaki sposób przy "złym logowaniu" dochodzi do uruchomienia pliku admin.php
(komunikat błędu: Notice: Undefined variable: login in /www/coM/admin.php on line 56).

Jezeli tak jest to $num = 0 i nastepuje:

else
{
header("Location: zle_dane.php");
}

przy poprawnym logowaniu jest wywoływane:

header("Location: admin.php");


Z drugiej strony to zastanawiam się dlaczego wykonujesz w dwóch plikach identyczne zapytanie mysql:

$sql = "SELECT * FROM $wybrana_tabela WHERE login = \"$login\" AND haslo = \"$haslo\"";

Moim zdaniem to wszystko można zrobić w jednym pliku.
bronx
Cytat(nieznajomy @ 2005-08-13 10:14:41)
Mały problem. Jezeli formularz logowania uruchamia plik zaloguj.php to nie rozumię w jaki sposób przy "złym logowaniu" dochodzi do uruchomienia pliku admin.php
(komunikat błędu: Notice: Undefined variable: login in /www/coM/admin.php on line 56).

no może dojść do takiej sytuacji gdy ktoś wpisze w przeglądarce adres www.mojastrona.pl/admin.php (nie przechodząć przez proces logowania).

a co do tego że dwa razy wykonuje takie samo zapytanie to... no właśnie -nie wiem jakie zapytanie umieścić w pliku admin.php
Gość_ZAJAC
Może coś da kodzik:
  1. <?php
  2.  
  3. if (!isset($_SESSION['login'])){
  4. header("Location: index.php");
  5. exit();
  6. }
  7. else
  8. {
  9. //wyświetl stronę
  10. }
  11.  
  12. ?>

Jeśli skrypt wykryje, że sesja jest nieaktywna wykopie użytkownika na stronę główną
nieznajomy
Ok. To jeżeli już uzywasz mechanizmu sesji to problem mozesz rozwiązać w następujący sposób:
1. W momencie logowania, jeżeli jest ono poprawne rejestrujesz nową zmienną sesji np. $czy_uzytk_zalog i przypisujesz jej wartość.

sesion_register( $czy_uzytk_zalog);
$czy_uzytk_zalog=TRUE;

2. W pliku admin.php na początku dodaj:

/*plik admin.php*/
sesion_start();

if(!$czy_uzytk_zalog){
// a tu np.
$text = 'Uzytkownik nie jest zalogowany!';
die($text);
}

/*pozostały kod pliku*/

Jezeli uzytkownik jest zalogowany ustawiona jest zmienna sesji i nie zadziała instrukcja "if" na początku pliku admin.php.
Jezeli ktos bedzie probowal wywolac bezposrednio plik admin.php podajac go w adresie to zmiennej tej nie ma, "if" zadziała, wyrzuci komunikat oraz zostanie przerwane wykonywanie skryptu.
Lecz wymagane jest tutaj wyłączenie register_globals w pliku konfiguracyjnym, aby uniknąć sytuacji, iż załużmy ze ktoś wie jak nazywa sie ta 'kluczowa' zmienna i ominie zabezpieczenie wywołując plik admin.php w sposób:
www.mojastrona.pl/admin.php?czy_uzytk_zalog=TRUE
Wyłączenie register_globals nie pozwoli na coś takiego.
bronx
hmm no to sam nie wiem :/ a może jakieś zastosowanie cookies by cos tu pomogło ?
AxZx
admin.php

  1. <?php
  2. include "polaczenie.php";
  3.  
  4. $wybrana_tabela = "admini_com";
  5.  
  6. $sql = "SELECT * FROM $wybrana_tabela WHERE login = "$_SESSION['login']" AND haslo = "$_SESSION['haslo']"";
  7.  
  8. $zapytanie = mysql_query($sql, $polaczenie) or die ("Wykonanie zapytania nie powiodło się");
  9.  
  10. $num = mysql_numrows($zapytanie);
  11.  
  12. if ($num !=0)
  13.  
  14. {
  15.  
  16. echo "zalogowany - witamy";
  17.  
  18. }
  19.  
  20. else
  21.  
  22. {
  23.  
  24. echo "złe dane - nie zalogowany";
  25.  
  26. }
  27. ?>


aha, jeszcze piszesz ze jest problem jak nie ma sesji...

to robisz warunek
  1. <?php
  2. if(isset($_SESSION['login']) && isset($_SESSION['haslo'])){
  3. //sprawdzasz czy dobry user
  4. }
  5. ?>
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.