Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie == Błąd
Forum PHP.pl > Forum > Gotowe rozwiązania
ano
Mam taki kod do systemu logowania:
[php:1:5cf70c83a8]
<?
if (($step=="2"))
{

if (file_exists("users/$login.txt"))
{

$plik = file("users/$login.txt");

$podziell = explode("||", $plik);


if (($passwrd==$podziell[1]))
{

$passwrd=md5('$pass');

setcookie("zalogowany", "$podziell[0]||$podziell[1]||$podziell[2]||$podziell[3]||$podziell[4]", time()+3600*3);
}
}
}
?>
<html>
<body>
<?
if (($step=="2"))
{

if (file_exists("users/$login.txt"))
{

$plikk = file("users/$login.txt");

$podziell = explode("||", $plikk);

if (($passwrd==$podziell[1]))
{


$passwrd=md5('$pass');

echo"Zostałeś zalogowany!<br>$zalogowany";
}

else { echo"Podałeś błędne dane!"; }

}
else { echo"Podałeś błędne dane!"; }
}
else {
?>
<b>Logowanie</b>
<hr color="gray" size="1">
<br><center>
<form action="" method="get">
<input type="hidden" name="step" value="2">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="19%" valign="top">
Login:<br>
Hasło:<br></td>
<td width="81%" valign="top">
<input type="normal" name="login"><br>
<input type="password" name="pass">
</td>
</tr></table>
<br><input type="submit" value="Zaloguj się">&&&<input type="reset" value="Kasuj dane z formularza"></center><br>
<a href="register.php"><small>Nie masz jeszcze konta w Ano php?questionmark.gif Zarejestruj się!!!</small></a>
<?
}
?>
</body>
</html>
[/php:1:5cf70c83a8]
Po uruchomieniu tego skrypty zawsze pokazuje się text: Podałeś błędne dane!
Mimo, że NA PEWNO podaje prawidłowe dane!
Kiedy nie ma procedury zapisu do cookie, to wszystko działa ok!
spenalzo
Cytat
Po uruchomieniu tego skrypty zawsze pokazuje się text: Podałeś błędne dane!
Mimo, że NA PEWNO podaje prawidłowe dane!
Kiedy nie ma procedury zapisu do cookie, to wszystko działa ok!

Nie za bardzo mogę się połapać w tym kodzie, ale może dlatego nie działa, że cookie można dopiero odczytać po przeładowaniu strony?
em1X
no skoro sie robi:

[php:1:d4e82945e1]
$passwrd=md5('$pass');
[/php:1:d4e82945e1]

to wiadomo ze nie zadziala ' ' nie kompiluje kodu
ma byc albo md5($pass) albo md5("$pass")
jedno i drugie to samo
ano
E tam.
I tak, i tak zawsze się pokazuje text "Podałeś błędne dane".
spenalzo
najlepiej rozdziel sobie "podałeś błędne dane" i zamień to dotyczące pliku na "brak użytkownika" i napisz co wtedy się pokazało.
em1X
Cytat
E tam.
I tak, i tak zawsze się pokazuje text "Podałeś błędne dane".


bo ten skrypt jest bez sensowny na pierwszy rzut oka tongue.gif
za duzo niepotrzebnych IF'uf
ano
jak mówisz, że ten skrypt jest bezsensowny,to napisz mi jak go można zmienić.
Cudi
Po pierwsze, po co trzymać informacje o każdym userze w osobnym pliku? Nie lepiej trzymać ich w jednym pliku, linijka dla każdego? smile.gif
Pozatym po co zapisywać wszystkie dane o userze do ciacha, przecierz nam wystarczy numerek lini w której te dane się znajdują. Aaa, i po trzecie, najlepiej zaraz po logowaniu przenieść usera na inną strone, po cookie będzie widoczne na stronie z logowaniem dopiero po odświeżeniu...
To teraz kawałek kodu (z jakiegoś mojego starego skrypciocha):
[php:1:13f8998e53]<?php
function CheckPass(){
global $_POST;

$users = file('users.dat');

foreach($users as $id => $user){
$u = explode('|+|'. $user);

if($u[0] == $_POST['login'] && $u[1] == md5($_POST['pass'])){
return $id;
}
}
return false;
}

if(isset($_POST)){
$error = empty($_POST['login']) ? 'Podaj login<BR>'."n" : '';
$error .= empty($_POST['pass']) ? 'Podaj hasło<BR>'."n" : '';

if(empty($error)){
if($id = CheckPass()){
setcookie('id', $id);
header('location: admin.php');
}
else{
$error .= 'Nieprawidłowy login lub hasło!';
}
}
}
?>[/php:1:13f8998e53]

Struktura pliku users.dat wygląda tak:

Kod
login|+|pass|+|co tam chcesz|+|i co jeszcze chcesz|+|itd.|+|


Błędy można wyświetlić np. tak:

[php:1:13f8998e53]<?php echo empty($error) ? 'Podaj login i hasło' : $error ?>[/php:1:13f8998e53]
ano
Musi być tak jak napisałem, dlatego, że to ma być system logujący na stronę www
scanner
ano - sprecyzuj wyp[owiedź. Chcesz pomocy? Skoro ktoś Ci daje gotowca, to skorzystaj - rozwiązanie z jednym plikiem jest dobre, gdyż ułatwi Ci w przyszłości ewentualny przeskok z plików do bazy danych.
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-2024 Invision Power Services, Inc.