[PHP] Logowanie

0

Zrobilem sobie logowanie wg. arta z http://webhelp.pl dziale php...
plik login_func.php to plik z funkcjami logowania, skopiowany dokladnie tak jak jest w arcie (http://php.webhelp.pl/index.php?id=105&roz=php&ac=read)...
w innym pliku test.php daje tak:

<? 
session_start(); 
include "login_func.php"; 
$login  = htmlentities(substr($_POST["Test"], 0, 255)); 
$passwd = htmlentities(substr($_POST["password"], 0, 255)); 
login("Test", md5("password")); 
if (auth()) { print "User logged in (".$_SESSION["USER_LOGIN"].")<br>"; } else {print("User not logged :/<br>");} 
?> 

Ok, zalogowalo, ale: nie pokazuje loginu zalogowanego usera... To raz. Bylo jeszcze dwa ale juz wiem...

0

A wpisz sobie echo $_SESSION[USER_LOGIN]; i zobaczyć czy ci się wyświelti login, w ogóle bardzo ciekawi mnie ta funkcja

sprawdz czy zalogowany

function auth()
{
return ($_SESSION["USER_AUTH"] == True);
}

To mi bardziej wygląda na funkcje, która robi z ciebie zalogowanego. :P chyba powinno być raczej tak:

function auth() 
{ if($_SESSION[USER_AUTH] == True)
  return True; // wstawiamy co ma nam zwrócić jak jesteśmy zalogowani 
else
return False;// wstawiamy co ma nam zwrócić jak nie jesteśmy zalogowani 
}

[dopisane do postu poniżej]
heh pomieszały mi się znaki :P i pomyślałem, że tutaj: "$_SESSION["USER_AUTH"] == True", on przypisuje wartość sesji, a nie sprawdza(?), czy jest wartość na true, mój błąd.

Pozdro... ;p

0

Mało znam php, ale jesli jest np. return (boolean==true) to porownanie znwroci prawde, jesli zmienna boolean jest prawda, a falsz jesli jest fałszem. W delphi tez tak jest ;]
bo if boolean=true then return true else return false, to logicznie rzecz biorac return (boolean=true) zwroci wartosc boolean ... Ale namotalem :-)
Poza tym gdyby bylo return ($_SESSION["USER_AUTH"] = True); to by logowalo (prawdopodobnie). == to xnak porownania, = przypisania

0

Dobra odpokutuje za te bzdury co napisałem na górze(każdy się może pomylić).

A więc tak:
po pierwsze źle definiujesz funkcję login(). Hasła w plikach nie są zapisywane w md5, więc definiujesz tę funkcję po prostu: login([nick_usera], [haslo]), bez kodowania hasła w md5, ale do tego już chyba doszedłeś skoro mówisz, że już cię loguje.
Po drugie błąd tkwi w funkcji login();
Proponuje zamienić ciąg:
$_SESSION["USER_LOGIN"] = $_POST["login"];
na:
$_SESSION["USER_LOGIN"] = $login;

Jest to nie tyle błąd samej funkcji lecz tego jak się logujesz. Funkcja ta pobiera login z tablicy _POST, lecz ty jej <ort>w ogóle </ort>nie masz ponieważ w twoim skrypcie, nie przesyłasz danych. Gdybyś dokończył skrypt logowania, w którym dane byłyby przesyłane z formy, to myślę, że skryt by odpalił bez błędów. Moja zamiania nada trochę elastyczności tej funkcji.

Pozdro... ;p

0

[hurra] Dziala.
Faktycznie, zaminilem linie $_SESSION["USER_LOGIN"] = $_POST["login"]; i dalem

if (auth()) { print "User logged in (".$_SESSION["USER_LOGIN"].")<br>"; } else {print("User not logged :/<br>");}

Dziala...
[soczek] [soczek] [soczek] [soczek] [soczek] [soczek] [soczek] [soczek] [soczek]

1 użytkowników online, w tym zalogowanych: 0, gości: 1