Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zabawa sesjami + pliki
Forum PHP.pl > Forum > Przedszkole
shpyo
zaczolem bawic sie sesjami.
Gdy mam jednego uzytkownika, to wszystko jest elegancko i dziala.
Z momentem wprowadzenia pliku z uzytkownikami

Kod
admin|*|haslo|

user1|*|user1_pass

itp...

zaczynaja sie schody
[php:1:69203dfe2f]<?php
session_start();
if( $_POST['akcja'] )
{
$baza = file("users.db");

//tutaj cos nie gra
for($a=0;$a<count($baza);$a++) {
$linia = explode('|*|', $baza[$a]);
if(($linia[0] == $_POST['login']) && ($linia[1] == $_POST['haslo'])) {
$_SESSION['login'] = $_POST['login'];
$_SESSION['pass'] = $_POST['haslo'];
}
break; }
}
// .......

if($_GET['akcja'] == 'logout')
{
session_destroy();
echo 'wylogowales sie';
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>";
}
else
{

if(($_SESSION['login'] == 'admin') && ($_SESSION['pass'] == 'haslo'))
{
echo 'jestes zalogowany jako <b>'.$_SESSION['login'].'</b> smile.gif<br>';
echo '<a href=?akcja=dodaj>dodaj</a> | <a href=?akcja=logout>logout</a> | <a href=?akcja=download>download</a><br>';
if($_GET['akcja'] == 'dodaj')
{
echo '<br>panel dodawania nowych rzeczy<br>bleblebleble<br>khfiyusydofs';
}
if($_GET['akcja'] == 'download')
{
include('manga.php');
}

}
else
{
echo 'podales zle dane albo probujesz obejsc logowanie<br>LOŁDING';
print "<META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'>";
}
}

?>[/php:1:69203dfe2f]

niemoge sie zalogowac na zadnefo z uzytkownikow.
wiecie moze co jest zle ?
gdy chce dac dostep do zasobow zarejestrowanym uzytkownikom, to lepiej bawic sie plikami czy baza? Chodzi o to co jest latwiejsze i szybsze.
kszychu
[php:1:c2fe12171b]<?php
// jest
for($a=0;$a<count($baza);$a++) {
$linia = explode('|*|', $baza[$a]);
if(($linia[0] == $_POST['login']) && ($linia[1] == $_POST['haslo'])) {
$_SESSION['login'] = $_POST['login'];
$_SESSION['pass'] = $_POST['haslo'];
}
break; } // kończysz fora po pierwszym przebiegu

// powinno być
for($a=0;$a<count($baza);$a++) {
$linia = explode('|*|', $baza[$a]);
if(($linia[0] == $_POST['login']) && ($linia[1] == $_POST['haslo'])) {
$_SESSION['login'] = $_POST['login'];
$_SESSION['pass'] = $_POST['haslo'];
break; // kończysz fora tylko, jeśli login prawidłowy
}
}
//
?>[/php:1:c2fe12171b]
Jojo
[php:1:79e76092d5]<?php
for($a=0;$a<count($baza);$a++)
{
$linia = explode('|*|', $baza[$a]);
if(($linia[0] == $_POST['login']) && ($linia[1] == $_POST['haslo']))
{
$_SESSION['login'] = $_POST['login'];
$_SESSION['pass'] = $_POST['haslo'];
break;
}
}
?>[/php:1:79e76092d5]
Zdaje się, że instrukcja break; jest nie w tym miejscu co trzeba. Przerywasz pętlę nie zależnie od tego czy warunek jest spełniony czy nie.
Cytat
lepiej bawic sie plikami czy baza? Chodzi o to co jest latwiejsze i szybsze.

Baza, baza i jeszcze raz baza. Szczerze mówiąc uważam, że pliki się do tego celu wcale nie nadają. W plikach musisz się męczyć i sprawdzać tak jak to robisz wyżej a w bazie wszystko można załatwić jednym zapytaniem.

ps. przechowywanie haseł w otwartym tekście nie jest najbezpieczniejszym wyjściem
shpyo
break; w IF'e tez nie dziala, dalej pojawia sie komunikat ze podalem zle dane.

Cytat
ps. przechowywanie haseł w otwartym tekście nie jest najbezpieczniejszym wyjściem

dlatego sie narazie bawie. Jak przyjdzie co do czego bedzie md5, i baza.
kszychu
Wyprintuj sobie w tym ifie login i haslo i zobacz co jest nie tak.
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.