AMcoder - javascript, python, java, html, php, sql

Ինչպե՞ս կարող եմ _SESSION('userName') Zend_Auth մեթոդից անցնել դասավորությանը:

Ես դժվարանում եմ հասկանալ, թե ինչպես է Zend_Session_Namespace-ը ինտեգրված Zend_Auth-ի հետ: Ես ունեմ այս մեթոդը, որը ես օգտագործում եմ որպես իմ մուտքի էջը վավերացնելու գործողություն. այն ճիշտ է աշխատում և վերահղվում է /ամսական դիտմանը.

 public function authAction(){
    $request    = $this->getRequest();
    $registry   = Zend_Registry::getInstance();
    $auth       = Zend_Auth::getInstance(); 

    $DB = $registry['DB'];

    $authAdapter = new Zend_Auth_Adapter_DbTable($DB);
    $authAdapter->setTableName('users')
                ->setIdentityColumn('UserName')
                ->setCredentialColumn('Password');    

// Set the input credential values
    $uname = $request->getParam('UserName');
    $paswd = $request->getParam('Password');
    $authAdapter->setIdentity($uname);
    $authAdapter->setCredential($paswd);

   // Perform the authentication query, saving the result
    $result = $auth->authenticate($authAdapter);

       // TRYING TO SET THE NAMESPACE
        $this->session = new Zend_Session_Namspace('UserName');

    if($result->isValid()){
        $data = $authAdapter->getResultRowObject(null,'password');
        $auth->getStorage()->write($data);
        $this->_redirect('/monthly');

    }else{
        $this->_redirect('/login');
    }
}

Բայց ես պետք է կարողանամ պահպանել UserName-ը որպես Zend_session և զանգահարել այն ամսական վերահսկիչից: Ես ամեն ինչ ճիշտ չեմ անում, քանի որ ես պարզապես դատարկ էկրան եմ ստանում, երբ փորձում եմ և անում եմ սա.

public function indexAction()
{

$this->view->userName = Zend_Session_Namespace('UserName');
}

Պատասխանները:


1

Տողերով.

$data = $authAdapter->getResultRowObject(null,'password');
$auth->getStorage()->write($data);

Դուք գրում եք օգտատիրոջ բոլոր տեղեկությունները, բացառությամբ գաղտնաբառի, որը նորմալ է: Այնտեղ, որտեղ դուք պետք է մուտք գործեք մուտք գործած օգտատիրոջ տվյալները, կարող եք նման բան անել (թարմացվում է ձեր մեկնաբանության համաձայն).

public function indexAction() {
    $auth = Zend_Auth::getInstance();
    if($auth->hasIdentity()) {
        $userData = $auth->getIdentity();
        $this->view->user = $userData;
    }
}

դիտման ֆայլում (index.phtml) պարզապես՝ echo $this->user->firstname

վերջ։ Եթե ​​մի օր որոշեք փոխել Zend_Auth-ի պահեստը նստաշրջանից, օրինակ, տվյալների բազայի, կոդի այս հատվածը դեռ կաշխատի:

02.08.2010
  • Դե, դանգ, ես այս հարցում բախտ չունեմ: Ես կարծում եմ, որ ես ճիշտ չեմ ներկայացնում բաները Ամսական վերահսկիչի indexAction-ում (այդտեղ է վերահղվում authAction-ը): Կցանկանայի՞ք տեղադրել, թե ինչպիսին պետք է լինի այդ indexActin-ը: Արդյո՞ք վերը նշված կոդը մտնում է indexAction կամ initAction-ում: 03.08.2010
  • Ես թարմացրել եմ օրինակը: Դուք կարող եք հատկացնել օգտատիրոջ տվյալները (գրեթե) ցանկացած վայրում, որտեղ ցանկանում եք: Եթե ​​դա ձեզ անհրաժեշտ է միայն մեկ գործողությամբ, ապա դա բավարար կլինի: Եթե ​​Ձեզ անհրաժեշտ է այն մեկից ավելի վայրերում, ապա ավելի լավ կլինի առջևի վերահսկիչի պլագին կամ դիտման օգնական: 03.08.2010
  • Կարծես բախտը չունեմ այս հարցում: Տեսարանին ոչինչ չի անցնում։ Ես նույնպես շփոթված եմ. որտեղի՞ց է գալիս user-›firstname փոփոխականը: IE. ի՞նչն է ստիպում Zend_Auth-ին մտածել, որ օգտվողի անունը պետք է գտնվի user-›firstname-ում: Ես վստահ չեմ՝ սա իմ խնդրի մի մասն է, թե ինչ, բայց ես պարզապես չեմ պարզում դա: :( Կարո՞ղ է խնդիրը նաև լինել այն, որ authAction-ը այլ կարգավորիչում է, քան ամսական: 04.08.2010
  • indexAction-ում կատարեք var_dump($userData); պարզապես տեսնելու, թե ինչ ունեք այնտեղ: Ես դնում եմ $this->user->firstname պարզապես օրինակի համար: users աղյուսակի բոլոր սյունակները, բացառությամբ գաղտնաբառի, պետք է լինեն $userData փոփոխականում: 04.08.2010
  • ՀԱՍԿԱՑԱ!!! Վա՜յ հու Դա նույնքան հիմար էր, որքան ես արձագանքում էի «userName»-ին «UserName»-ի փոխարեն: Այժմ հիանալի է աշխատում: Շնորհակալություն!! 04.08.2010

  • 2

    Դուք չեք օգտագործում ճիշտ անվանատարածք: Zend_Auth օգտագործել Zend_Auth անվանատարածքը: Անվանատարածքը կառուցվածքն է, այլ ոչ թե արժեքի բանալին: Այսպիսով, ձեր նիստը նման է հետևյալին.

    Array('Zend_Auth' => array ('UserName' => 'myname')

    Դե, դա ճշգրիտ չէ, քանի որ դուք չեք պահել օգտվողի անունը, քանի դեռ չեք տրամադրել դա անմիջապես ձեր ադապտերում: դուք պետք է անեք նման բան.

    $auth->getStorage()->UserName = 'myusername';

    Այնուհետև կարող եք մուտք գործել $authData = new Zend_Session_Namespace('Zend_Auth'); $username = $authData->UserName;-ով:

    Ավելի ուշադիր նայեք, թե ինչպես է աշխատում Zend_Auth_Adapter_Db-ը:

    02.08.2010
  • Օգտվողի անունը $uname-ից չէ, ուստի կարող եմ դա անել. '$this-›session = new Zend_Session_Namspace($uname);' ? Խմբագրել. ah-Ես տեսնում եմ, որ փոփոխականը միայն չվավերացված օգտանունն է: 02.08.2010
  • Ձեր օրինակին ավելի մոտիկից նայելով՝ ես մեծ մասամբ հասկանում եմ: Ինչ ես չեմ հասկանում այս տողում է՝ $authData = new Zend_Session_Namespace('Zend_Auth'); արդյո՞ք ես ուզում եմ, որ դա դեռ authAction-ում լինի, և այդ դեպքում ես նույնպես պետք է այն դնեմ ամսական Action-ում: Ես շփոթված եմ, թե ինչպես փոխանցել այս նիստի փոփոխականը Auth վերահսկիչից Ամսական վերահսկիչին: 02.08.2010
  • Ոչ... եթե դուք օգտագործում եք վավերացման ադապտեր, որն այն անվանատարածքն է, որն օգտագործում է, այն կստեղծվի լռելյայնորեն ձեր վավերացման ադապտերի կողմից: ինդեքսի գործողության մեջ դուք պարզապես պետք է վերահիդրատացնեք անվանատարածքը new Zend_Session_Namespace('Zend_Auth')-ով, կամ եթե այլ կերպ հեղինակությունը կամ նստաշրջանը հասանելի եք դարձրել ամբողջ աշխարհում (օրինակ՝ ռեեստրի միջոցով), կարող եք այն այնտեղից քաշել: Ես մոռանում եմ, թե ինչ են զանգվածի ստեղները, այն սովորաբար պահում է ամեն ինչ: jsut-ի վավերացումից հետո թողարկեք $_SESSION-ը և կտեսնեք... չեմ հիշում, որ այն պահվում է որպես identity կամ userid կամ ինչ: 02.08.2010

  • 3

    Սա իմ մոտեցումն է և լավ է աշխատում. 1-ես սկսում եմ bootstrap-ում init ֆունկցիա սահմանելով:

    protected function _initSession()
    

    {

    $UserSession = new Zend_Session_Namespace('UserSession');
    $UserSession->setExpirationSeconds(/* you may fix a limit */);
    Zend_Registry::set('UserSession', $UserSession);
    

    }

    /* Մուտք գործողության մեջ, ճիշտ օգտվողի անունից և pwd */

    // Create session
    $UserSession = Zend_Registry::get('UserSession'); 
    // Get the user from database or just from fields
    //you have to make sure that the psswd is encrypted use MD5 for example..
     $db = Zend_Db_Table::getDefaultAdapter();
    $user = $db->fetchRow("SELECT * FROM user_table WHERE user_email = '".$user_email."'");
    //then you assign to $user to $UserSession variable : 
    $UserSession->user = $user;
    //finaly don't forget to unset session variable in the Logout action ...
    
    05.06.2013
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..