 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
kristache
Data înscrierii: 19/Feb/2004
Mesaje: 45
Locație: Iasi
|
| Trimis: Joi Iul 08, 2004 3:24 pm Titlul subiectului: PEAR::Auth |
|
|
Desi inclin sa cred ca nu sunt idiot, selfesteem'ul mi'a fost crancen zdruncinat.
Incerc de ceva vreme sa pricep cu functioneaza autentificarea din PEAR, si cam degeaba. Restul le pricepusi, dar asta ba. Nuca tare. Nici macar ce e la ei pe site, la Introduction, nu reusesc sa fac sa mearga. Oricum as da'o, form'ul acela de login apare o singura data, si nici ca ar merge sa ma mai joc cu el.
Si apoi, nu prea inteleg nici cum vine treaba asta cu functia de login ca parametru al constructorului.
Imi poate cineva, cumva, explica cum functioneaza aceasta autentificare? Desi am citit documentatia, am incercat sa fac exact ce apare la ei, tot nu reusesc sa ma vad autentificat. Oi fi eu, o fi el, ceva nu merge bine. |
|
| Sus |
|
kristache
Data înscrierii: 19/Feb/2004
Mesaje: 45
Locație: Iasi
|
| Trimis: Joi Iul 08, 2004 10:45 pm Titlul subiectului: |
|
|
Acesta este fisierul cu pricina:
<?php
require_once('Auth/Auth.php');
$params = array(
"dsn" => "mysql://root:****@localhost/giscover" ,
"table" => "auth" ,
"usernamecol" => "username" ,
"passwordcol" => "password",
);
$a = new Auth ("DB" ,$params, 'myLogin' );
$a->setLoginCallback('myLoginCallback');
$a->start();
if ($a->getAuth())
{
echo "Sunt autorizat";
}
else
{
echo "Nu sunt autorizat";
}
function myLogin()
{
echo '<p class="login">';
echo '<form name="login" method="post" action="'. $_SERVER['PHP_SELF'] . '">';
echo 'User:<input type="text" name="username" >';
echo 'Password <input type="password" name="password" size="10">';
echo '<input type="submit" name="login" value="Login">';
echo '</form></p>';
}
function myLoginCallback()
{
echo '- trigger la logare -';
echo '<br /><br />';
}
?>
Problema se reduce la intrebarile:
1. De ce intotdeauna $a->getAuth() returneaza FALSE
2. De ce mi se creeaza o sesiune pe server care sta ca nesimtita si face sa nu mai apara formul si o a doua oara, odata introdus un set de date ramanand sfant
Astept cu draga inima pareri |
|
| Sus |
|
apann
Data înscrierii: 17/Mai/2004
Mesaje: 93
|
| Trimis: Vin Iul 09, 2004 10:23 am Titlul subiectului: |
|
|
Am incercat exemplul tau si imi merge, adica $a->getAuth() imi returneaza TRUE (1)
si am si mesajul "sunt autorizat". (incearca print_r($a->getAuth()) )
La a doua problema, cred ca ar trebui sa setezi:
$a->setExpire(3600); // timpul cat sesiune e valabila
sau alternativ sa faci un link (logout) prin care sa distrugi sesiunea
// offtopic -> clasele PEAR ar trebui documentate mai bine in special mai multe exemple pentru ca doar privind codul din aceste exemple e posibil sa iti raspunzi singur la multe probleme.
// later logout faci cu:
$a->logout(); |
|
| Sus |
|
kristache
Data înscrierii: 19/Feb/2004
Mesaje: 45
Locație: Iasi
|
| Trimis: Vin Iul 09, 2004 12:50 pm Titlul subiectului: |
|
|
Cred ca e momentul propice sa ma sinucid.
Deci momentan problemele mele se rezuma la una singura.
Si anume de ce la mine nu merge.
Restul sunt balarii, folosind logout() scap de problema cu sesiunea si restul de prostii. Singura dilema e de ce nu merge si la mine un script care merge la altii: $a->getAuth() returneaza FALSE.
Avand in vedere ca ai folosit acelasi script, inclin sa cred ca sunt atat de idiot incat sa nu fi facut baza de date bine.
Deci recreez tabelul necesar
Citat:
CREATE TABLE auth (
username VARCHAR(50) default '' NOT NULL,
password VARCHAR(32) default '' NOT NULL,
PRIMARY KEY (username),
KEY (password)
);
si introduc un utilizator
Citat:
INSERT INTO auth VALUES ('John',md5('accesibil'));
Si totusi.. Nu-mi merge. Imi apare un vesnic "Nu sunt autorizat".
Ma sincer indoiesc ca ar fi vorba de browser.
Care ar putea fi problema?
Cu disperare cer ajutor |
|
| Sus |
|
apann
Data înscrierii: 17/Mai/2004
Mesaje: 93
|
| Trimis: Vin Iul 09, 2004 1:00 pm Titlul subiectului: |
|
|
tabelul meu arata asa:
an style="color: #000000"><?php CREATE TABLE `yacms_users` (
`user_id` int(11) NOT NULL auto_increment,
`username` varchar(50) NOT NULL default '',
`password` varchar(32) NOT NULL default '',
`user_level` int(3) NOT NULL default '0',
`last_login` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`user_id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;
si codul:
<?php
require_once('Auth/Auth.php');
$params = array(
"dsn" => "mysql://root:XXXXX@localhost/yacms" ,
"table" => "yacms_users" ,
"usernamecol" => "username" ,
"passwordcol" => "password",
);
$a = new Auth ("DB" ,$params, 'myLogin' );
$a->setLoginCallback('myLoginCallback');
$a->start();
print_r($a->getAuth());
if ($a->getAuth())
{
echo "Sunt autorizat";
$a->logout();
}
else
{
echo "Nu sunt autorizat";
}
function myLogin()
{
echo '<p class="login">';
echo '<form name="login" method="post" action="'. $_SERVER['PHP_SELF'] . '">';
echo 'User:<input type="text" name="username" >';
echo 'Password <input type="password" name="password" size="10">';
echo '<input type="submit" name="login" value="Login">';
echo '</form></p>';
}
function myLoginCallback()
{
echo '- trigger la logare -';
echo '<br /><br />';
}
?>
si imi mere, insa nu pot sa imi dau seama ce e gresit la tine, tinand cont ca rulam acelasi cod.
// later o fi din cauza ca ai useru John (litera mare) ??? ai incercat si cu al nume? |
|
| Sus |
|
kristache
Data înscrierii: 19/Feb/2004
Mesaje: 45
Locație: Iasi
|
| Trimis: Vin Iul 09, 2004 1:08 pm Titlul subiectului: |
|
|
apann, multumesc frumos pentru ajutor.
Am gasit problema la care caut raspuns de trei zile.
Da, acum pot sa ma sinucid.
Era de la versiune :x 8O
PEAR'ul a fost extrem de simpatic, si si'a downloadat 1.3.0r2.
Uite ca pe 1.2.3 merge foarte bine.
Nu'mi pot explica de ce nu ar fi mers si pe ultima versiune.. dar na.
Oricum, mersi frumos pentru ajutor. |
|
| Sus |
|
apann
Data înscrierii: 17/Mai/2004
Mesaje: 93
|
| Trimis: Vin Iul 09, 2004 1:31 pm Titlul subiectului: |
|
|
eu am:
PEAR: 1.3.2
Auth: 1.2.3
PHP: 4.3.7
MySQL: 4.0.20
banuiam ca e ceva legat si de asta. |
|
| Sus |
|
kristache
Data înscrierii: 19/Feb/2004
Mesaje: 45
Locație: Iasi
|
| Trimis: Joi Iul 15, 2004 12:38 am Titlul subiectului: |
|
|
Din ciclul "alta zi, alta dilema".
Cum extind autentificarea pe mai multe pagini? M'am logat, splendid, e frumos, e puternic, dar cum ajung din foo.php (care sa zicem e pagina de mai sus, cu login, chestii'trestii) in bar.php, dar tot logat si parfumat.
Din cate am cautat pe net, m'am inspaimantat putin..
Citat:
> what's the right way to get a reference to the Auth object for pages
> which are not login pages? It seems like I should not have to make a
> connection to the database and create a new Auth on every page if All I
> want to do is call getAuth().
>
The best way is to create a new Auth object for every page - while
this does cause some extra load, it also ensures that any changes to
how the data is stored in the session won't cause your site to stop
working.
Acum pe langa faptul ca mi se pare cam killer de resurse, nu prea pricep cum fac eu autentificarea asta fara sa'l mai deranjez pe user prea tare. Nu de alta, da' stiti si voi ca e sensibilos tare.
Ceva sfaturi / indicatii / exemple?
In afara de don't use pear sper :) |
|
| Sus |
|
Emil
Data înscrierii: 16/Noi/2003
Mesaje: 301
Locație: echo $REMOTE_ADDR
|
| Trimis: Joi Iul 15, 2004 8:39 am Titlul subiectului: |
|
|
cum zice si textul ala, cel mai bine e sa instantiezi un obiect Auth pe fiecare pagina .. nu stiu in ce masura il deranjeaza aia pe user pentru ca Auth tine datele in $_SESSION, pe de alta parte chestia se putea evita usor, eu imi fac aplicatiile asa : un index.php, unde am Auth, procedura de logout, si un obiect care-mi cere modulele externe, deci am un singur index.php, si undeva (tot o clasa) unde mi se mapeaza actiunile care le cer prin get (de ex : index.php?module=fileman, sau le poti asigna cifre, sau orice altceva).
So, am autentificare peste tot, module etc etc :) , of course ca ma bazez si pe template-uri, n-am nici un echo in pagini (mai e cate unul comentat .. pt debugging, si cate un var_dump sau print_r )
ca sa te convingi ca Auth nu e decat o metoda gata facuta si fiabila de autentificare, si verifica asta intr-o sesiune ..
an style="color: #000000"><?php /**
* Has the user been authenticated?
*
* @access public
* @return bool True if the user is logged in, otherwise false.
*/
function getAuth()
{
$session = &$this->_importGlobalVariable('session');
if (!empty($session) &&
(isset($session[$this->_sessionName]['registered']) &&
$session[$this->_sessionName]['registered'] === true))
{
return true;
} else {
return false;
}
}
// }}}
apann: mi-am permis sa-ti editez postul, am pus in loc de ]code[ tag-ul BB ]php[, sper sa nu fie cu suparare :) |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|