Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Obiektowe php i sesje
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam

Poczytalem troche o sesjach no i chce teraz zaimplementowac je do wlasnej aplikacji wiec zrobilem tak :


Mam formularz logowania do skrzynki pocztowej :
  1. function login() {
  2. $this->output.='<div align="center" class="loginform">'.
  3. '<form action="index.php" method="post">'.
  4. '<input type="text" name="login">'.
  5. '<input type="password" name="pass">'.
  6. '<input type="hidden" name="check" value="ok">'.
  7. '<input type="submit" value="Zaloguj">'.
  8. '</form>'.
  9. '</div>';
  10. }


Za pomoca tablicy $_POST zmienne przekazywane sa do kontrolera i tam sytuacja wyglada tak :

  1. if($postvars['check'] == 'ok') {
  2. $_SESSION['login'] = $postvars['login'];
  3. $_SESSION['pass'] = $postvars['pass'];
  4. if(($this->model->connect('gmail.com',$_SESSION['login'],$_SESSION['pass'],'993','imap')) == false) {
  5. $this->login();
  6. } else {
  7. $this->inbox();
  8. }
  9. } elseif (is_numeric($postvars['naglowek'][0])) {
  10. $this->message($postvars['naglowek'][0]);
  11. } elseif(empty($postvars)) {
  12. $this->login();
  13. } else {
  14. echo 'dupa';
  15. }


Czyli zmienne post sa zapisywane jako zmienne sesji a nastepnie nastepuje logowanie do skrzynki pocztowej, jesli logowanie sie uda , wyswletla sie skrzybka $this->inbox.

Nastepnie klikam sobie na jakiejs wiadomosci w mojej skrzynce no i aplikacja przechodzi do kolejnego widoku ktory wyglada tak :

  1. function message($id) {
  2. $this->output.='Wiadomosc : '.$this->model->body($id);
  3. $this->output.='To jest wiadomosc numer'.$id.'<a href="java script:history.back();">Wstecz</A>';
  4. }


Wyswietlam sobie we wszystkich widokach tablice $_SESSION, no i w ostatnim widoku wiadomosci widze ze zmienne sesyjne sa ustawione prawidlowo czyli
$_SESSION['login'] - login do mojej skrzynki
$_SESSION['pass'] - haslo do mojej skrzynki

No i teraz chce sobie wrocic z widoku pojedynczej wiadomosci do widoku calej skrzynki no wiec klikam sobei przycisk 'wstecz' pyta mnie czy przeslac dane ponownie, ale niestety zamiast widoku skrzynki pojawia sie widok logowania , mimo ze dane sesyjne sa ciagle wyswietlane prawidlowo no i z tego co rozumiem ten kod :

  1. if(($this->model->connect('gmail.com',$_SESSION['login'],$_SESSION['pass'],'993','imap')) == false) {


Powinien ponownie przyjmowac zmienne sesyjne no i logowac sie bez problemu do skrzynki wyswietlajac jej zawartosc, a zamiast tego wyswietla mi sie widok logowania.....
Go to the top of the page
+Quote Post
potreb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


No okey, sprawdź sobie czy wracając sesja dalej istnieje print_r. Jeżeli nie wtedy już lepiej. Zapewne session_start masz na poczatku pliku.
Go to the top of the page
+Quote Post
Wolfie
post
Post #3





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Troche przerobilem moj kontroler i teraz wyglada to tak :

  1. if($postvars['check'] == 'ok') {
  2. $_SESSION['login'] = $postvars['login'];
  3. $_SESSION['pass'] = $postvars['pass'];
  4. if(($this->model->connect('gmail.com',$_SESSION['login'],$_SESSION['pass'],'993','imap')) == false) {
  5. $this->login();
  6. } else {
  7. $_SESSION['logged'] = 1;
  8. $this->inbox();
  9. }
  10. } elseif (is_numeric($postvars['naglowek'][0])) {
  11. $this->message($postvars['naglowek'][0]);
  12. } elseif($_SESSION['logged'] == 1) {
  13. $this->inbox();
  14. } else {
  15. $this->login();
  16. }


Czyli najpierw mam pusta sesje, jesli uzytkonik zalogowal sie poprawnie wtedy oprocz zmiennych sesyjnych login i pass ustawiam zmienna $_SESSION['logged'] na 1 czyli oznacza to ze uzytkownik zalogowal sie poprawnie. Nastepnie wyswietlam skrzynke pocztowa. Klikajac na ktoras wiadomosc w skrzynce przechodze do widoku wiadomosci is_numeric($postvars['naglowek'][0].
Nastepnie klikam 'wstecz' no ale niestety, wyswietla sie cos takiego :

Cytat
Array ( [login] => [pass] => [check] => ok ) Array ( [login] => magisterkamw@gmail.com [pass] => jakieshaslo [logged] => 1 )
Warning: imap_open() [function.imap-open]: Couldn't open stream {imap.gmail.com:993/imap/ssl} in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 11


przy czym :

Cytat
Array ( [login] => magisterkamw@gmail.com [pass] => jakieshaslo [logged] => 1 )


To zmienne sesyjne

A pod tym znowu formularz logowania, czyli ciagle jest cos nie tak. Jedyna zmiana jaka nastapila to to ze teraz gdy cofam , pyta mnie czy chce przeslac ponownie zmienne.
Widac ze nie przekazuje parametrow do imap_open.......ale nie mam pojecia jak sobie z tym poradzic....

----------------------------------------------------------------------

Pomyslalem troche i zmodyfikowalem kawalek kodu gdzie jako warunek uzywam $_SESSION == 1 i zmodyfikowalem go do takiej postaci :

  1. } elseif($_SESSION['logged'] == 1) {
  2. if(!($this->model->connect('gmail.com',$_SESSION['login'],$_SESSION['pass'],'993','imap')) == false) {
  3. $this->inbox();
  4. }


Czyli teram mamy dwa miejsce w ktorych kod laczy sie ze skrzynka, ale chyba nie jest to zbyt efektywne rozwiazanie, co prawda za pierwszym razem gdy klikam przycisk 'wroc' wszystko jest ok i skrzynka sie wyswietla, ale gdy drugi raz wyswietlam jakas wiadomosc i klikam przycisk wroc juz nie jest tak pieknie bo znowu wraca mi do widoku logowania ! (IMG:style_emoticons/default/sciana.gif)

Ktos pomoze ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:58