Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Niezbyt dzialajacy skrypt logowania i rejestracji
Forum PHP.pl > Forum > Przedszkole
woyo-sensei
Witam.Jestem zupelnie nowy na tym forum, jak i rownierz dopiero zaczynam moja przygode z PHP. Wiem, ze takich postow podobnych do mojego jest pelno, ale jakby nie patrzec, kazdy jest troche inny. Przejde do sedna problemu. Otoz sciagnalem gotowy "dzialajacy" skrypt logowania i rejestracji. Niby na stronie "producenta" kodu, skrypt dziala bez zadnych problemow. Link do oryginalu tutaj, na ktorej skrypt ten dziala idealnie. Lekko go zmodyfikowalem na potrzeby wlasnej strony, ktora jest pod tym adresem.

A teraz co sie dzieje. Otoz podczas logowania badz rejestracji zamiast przejsc do odpowiedniej strony, formularz sie tylko odswieza. Znikaja wpisane dane i strona dalej stoi w miejscu, nic sie nie dzieje. Zadnego bledu, zadnego komunikatu (przynajmniej u mnie).
Bardzo prosilbym o pomoc. Tych plikow jest tam wiecej, ale te sa najwazniejsze (z pozostalymi sobie poradze jesli znajde rozwiazanie tego problemu). 
Juz nie wiedzialem, gdzie mam sie zwrocic, a to forum jest podobno najlepsze jesli chodzi o problemy z PHP 
Oto skrypty w najwazniejszych plikach:

index.php


Kod
                <?
    if (!($login_by_pion))
    {
    print ("Nie jestes zalogowany wiec bedziesz jako niezalogowany_uzytkownik!<br><br>");
    print ('<A HREF="login.php" TARGET="_top">Zaloguj sie teraz</A>');
    }
    else
    {
    print ('Jestes zalogowany jako ');
    print ($login_by_pion);
    print ("<br><br><A HREF=\"logout.php\" TARGET=\"_top\">Wyloguj sie teraz</A>");
    }
?>
<br><br>
<?
    include ("menu.php");
?>


menu.php

Kod
<?
print ('<br>Ostatnia rejestracja: ');
include ("newest_user.txt");
print ('<br>Liczba uzytkownikow: ');
// zliczenie liczby wszystich uzytkownikow
    $katalog = opendir ('users_logins');
    $i=1;
    while ($plik = readdir ($katalog)) {
      if (ereg (".txt$", $plik)) { $pliki[$i++] = $plik; }
    }
    closedir ($katalog);
    $ile_userow = count($pliki);
    print ($ile_userow);

print ('<br><br>');
print ('<A HREF="login.php" TARGET="_top">Logowanie</A> | <A HREF="edit.php" TARGET="_top">Edycja danych</A> | <A HREF="reminder.php" TARGET="_top">Zapomnialem hasla</A> | <A HREF="register.php" TARGET="_top">Zarejestruj sie</A>');
?>


login.php

Kod
<?
if ($p == "Loguj")
{
// usuwanie zbednych znakow
        $login = str_replace ("<", "", $login);
        $login = str_replace (">", "", $login);
        $login = str_replace ("|", "l", $login);
        $login = str_replace (" ", "_", $login);
        $login = stripslashes($login);
        $haslo = str_replace ("<", "", $haslo);
        $haslo = str_replace (">", "", $haslo);
        $haslo = str_replace ("|", "l", $haslo);
        $haslo = str_replace (" ", "_", $haslo);
        $haslo = stripslashes($haslo);
        
    $user_file = "users_logins/".$login.".txt";
    if (file_exists($user_file)) // jeżeli jest plik login.txt wczytujemy haslo z pliku
    {
    $plik = fopen ($user_file, "r");
    $zawartosc_pliku = fgets ($plik, 2048); // odczyt hasla z pliku login.txt
    fclose ($plik);
    $podzial = split ("\|", $zawartosc_pliku);
    $haslo_z_pliku = $podzial[0];
        if ($haslo == $haslo_z_pliku)
        {
        setcookie ("login_by_pion", $login);
        
        print ('Wpisane dane sa prawidlowe.<br>');
        print ("Zostales zalogowany jako <b>".$login."</b><br><br>");
        print ("<A HREF=\"strona.php\" target=\"_top\">Link</a> | <A HREF=\"index.php\" target=\"_top\">Strona glowna</a>");
        }
        else
        {
        print ('Wpisane dane:<br><br>');
        print ("Login: ".$login);
        print ("<br>Haslo: ".$haslo);
        print ('<br><br>są <font color="red">nieprawidlowe</FONT>.');
        print ('<br><A HREF="javascript:history.back();" TARGET="_top">Wroc i popraw</A><br>');
        }
    }
    else // jeżeli nie ma pliku login.txt, czyli nie ma takiego uzytkownika
    {
    print ("Brak uzytkownika ".$login);
    print ('<br><A HREF="javascript:history.back();" TARGET="_top">Wroc i popraw</A>');
    }
}
else
{
/* formularz logowania i link do rejestracji */
print ('<form ACTION="" method="post">');
print ('Login:<br><input TYPE="text" name="login"><br><br>');
print ('Hasło:<br><input TYPE="password" name="haslo"><br><br>');
print ('<input TYPE="submit" name="p" value="Loguj"><br><br>');
print ('</form>');
}    
?>
<br><br>
<?
    include ("menu.php");
?>
ayeo
Witam!

Nie podałeś gdzie ten formularz ma się wysyłać. W sensie ACTION masz puste.

Pozdrawiam!
woyo-sensei
Musze niestety podzielic posta na kilka czesci bo wyskakuje komunikat o zbyt dlugim poscie...

A wiec ciag dalszy

register.php

Kod
<?
if ($p == "Rejestruj")
{
    if ($login && $haslo && $haslo2 && $pytanie && $odpowiedz)
    {
        // usuwanie zbednych znakow
        $login = str_replace ("<", "", $login);
        $login = str_replace (">", "", $login);
        $login = str_replace ("|", "l", $login);
        $login = str_replace (" ", "_", $login);
        $login = stripslashes($login);
        $haslo = str_replace ("<", "", $haslo);
        $haslo = str_replace (">", "", $haslo);
        $haslo = str_replace ("|", "l", $haslo);
        $haslo = str_replace (" ", "_", $haslo);
        $haslo = stripslashes($haslo);
        $haslo2 = str_replace ("<", "", $haslo2);
        $haslo2 = str_replace (">", "", $haslo2);
        $haslo2 = str_replace ("|", "l", $haslo2);
        $haslo2 = str_replace (" ", "_", $haslo2);
        $haslo2 = stripslashes($haslo2);
        $pytanie = str_replace ("<", "", $pytanie);
        $pytanie = str_replace (">", "", $pytanie);
        $pytanie = str_replace ("|", "l", $pytanie);
        $pytanie = stripslashes($pytanie);
        $odpowiedz = str_replace ("<", "", $odpowiedz);
        $odpowiedz = str_replace (">", "", $odpowiedz);
        $odpowiedz = str_replace ("|", "l", $odpowiedz);
        $odpowiedz = stripslashes($odpowiedz);
    $new_user_file = "users_logins/".$login.".txt";
        if (file_exists($new_user_file)) // jeżeli dany login jest już zarejestrowany
        {
        print ("Login ".$login." został już zarejestrowany.");
        print ('<br><A HREF="javascript:history.back();" TARGET="_top">Wróć i popraw</A><br>');
        }
        else // jeżeli login jest wolny
        {
            if ($haslo == $haslo2) // oba hasla się zgadzaja
            {
            // dopisanie do pliku ostatniej rejestracji
            $newest_user_file = fopen ("newest_user.txt", "w");
            fputs ($newest_user_file, $login);
            fclose ($newest_user_file);
            
            // stworzenie pliku nowego uzytkownika
            $new_user_file = fopen ("users_logins/".$login.".txt", "w");
            $zawartosc_new_user_file = $haslo."|".$pytanie."|".$odpowiedz;
            fputs ($new_user_file, $zawartosc_new_user_file);
            fclose ($new_user_file);
            
            print ('Rejestracja zakończona pomyślnie!<br><br>');
            print ("Login: <b>".$login."</b><br>");
            print ("Hasło: <b>".$haslo."</b><br>");
            print ("Pytanie: ".$pytanie."<br>");
            print ("Odpowiedź: ".$odpowiedz."<br><br>");
                            
    /*
    exclamation.gif!!!!!!!!!!!!!
    
    Zastosowana poniżej funckja iglu_mail wysyła na adres usera oraz admina (w tym przypadku pionanf@poczta.onet.pl) informacje o założeniu nowego konta. Jeśli korzystasz ze zwykłej funckji mail zamień iglu_mail na mail i będzie git! :) Jeśli w ogóle nie chcesz wysyłać @ zakomentuj kod od $body2 do } będącego po print '';
    
    exclamation.gif!!!!!!!!!!!!!
    */
            
            $body2 = "Nowy user zarejestrowany w Systemie rejestracji Piona:\r\n\r\nLogin: ".$login."\r\nHasło: ".$haslo."\r\nPytanie: ".$pytanie."\r\nOdpowiedź: ".$odpowiedz;
                iglu_mail ('woyo_sensei@onet.eu', 'Twoje dane rejestracyjne', $body2);
            
                if ($email)
                {
                $body = "Dziękuję za skorzystanie z Systemu logowania by Pion. Oto dane Twojego konta:\r\n\r\nLogin: ".$login."\r\nHasło: ".$haslo."\r\nPytanie: ".$pytanie."\r\nOdpowiedź: ".$odpowiedz."\r\n\r\nProszę o zachowanie tych danych lub wydrukowanie tego e-maila.\r\n\r\n\r\nPion";
                iglu_mail ($email, 'Twoje dane rejestracyjne', $body);
                                
                print ("Na adres ".$email." zostały wysłane powyższe dane.<br>");
                }
                else
                {
                print '';
                }
            
            print ('Możesz teraz się <A HREF="login.php" TARGET="_top">zalogować</A>.');
            }
            else // rozne hasla
            {
            print ('Podane hasła:<br><br>');
            print ("hasło: ".$haslo);
            print ("<br>powtórzone hasło: ".$haslo2);
            print ('<br><br>nie są jednakowe');
            print ('<br><A HREF="javascript:history.back();" TARGET="_top">Wróć i popraw</A><br>');
            }    
        }
    }
    else
    {
     print ('Nie wypełniłeś wszystkich pól formularza.');
    print ('<br><A HREF="javascript:history.back();" TARGET="_top">Wróć i popraw</A><br>');
    }
}
else
{
/* formularz logowania i link do rejestracji */
print ('<form ACTION="" method="post">');
print ('Login:<br><input TYPE="text" name="login"><br><br>');
print ('Hasło:<br><input TYPE="password" name="haslo"><br><br>');
print ('Powtórz hasło:<br><input TYPE="password" name="haslo2"><br><br>');
print ('Pytanie:<br><input TYPE="text" name="pytanie"><br><br>');
print ('Odpowiedź:<br><input TYPE="text" name="odpowiedz"><br><br>');
print ('E-mail (na ten adres zostaną wysłane dane Twego konta - pole niewymagane):<br><input TYPE="text" name="email"><br><br>');
print ('<input TYPE="submit" name="p" value="Rejestruj"><br><br>');
print ('</form>');
}    
?>
<br><br>
<?
    include ("menu.php");
?>




Juz nie mam pojecia dlaczego to moze nie dzialac... W przyszlosci zamierzam odejsc od operacji na plikach i zmienic ten system aby dzialal na bazach danych i sesjach. Ale to daleka przyszlosc. Poki co musze opanowac ten problem. Ewentualnie prosze o porady, jak mozna by ten skrypt poprawic, dodac sesje i bazy danych. Zaznaczam, ze jestem poczatkujacy, wiec nie wymagajcie ode mnie cudow.
Z gory dzieki i pozdrawiam.


Faktycznie puste... No coz. Jak juz mowilem jestem laikiem, wiec zadam kolejne pytanie: co mozna by wpisac w ACTION?
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.