Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sprawdzenie hasla przy logowaniu do skrzynki pocztowej
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam,

Mam taki problem ze konstruuje sobie kontroler no i chce sprawdzic wewnatrz czy uzytkownik sie poprawnie zalogowal do skrzynki pocztowej, cala rzecz polega na tym ze nie wiem jak sprawdzic poprawnosc loginu i hasla bo przeciez kazda skrzynka ma je inne wiec nie moge tego porownac z jakimis z gory ustalonymi zmiennymi, wiec na jakiej podstawie mam wnioskowac czy logowanie powiodlo sie ?
Chetnie zobacze jakis przyklad takiego rozwiazania......
Wicepsik
Wysyłasz zapytanie do bazy danych i sprawdzasz czy podany login i hasło są poprawne.
Wolfie
Przeciez wyraznie napisalem ze nie mam z gory ustalonych zmiennych loginu i hasla. Do jakiej bazy danych ? do gmaila ? przeciez mowie ze nie mam dostepu do loginu i hasla zeby sprawdzic ich poprawnosc w kodzie. A jak bede chcial sie podlaczyc do innej skrzynki gmail ?

Wlasnie w tym jest sek, chodzi o sprawdzenie czy uzytkownik sie zalogowal ale nie na podstawie poprawnosci loginu i hasla bo to nie jest mozliwe w tym przypadku........
kfc4
Chcesz sprawdzić czy użytkownik podał właściwy login i hasło do swojej poczty na gmailu, tak? Nie wiem jak to reguluje regulamin forum, ale spróbuj cURLem.
Wolfie
Nie rozumiem co ma z tym wspolnego cURL a co dopiero regulamin forum ......
Fifi209
Cytat(Wolfie @ 1.09.2009, 15:53:13 ) *
Nie rozumiem co ma z tym wspolnego cURL a co dopiero regulamin forum ......

Skoro chcesz logować się na gmaila... no to chyba curlem...
Wolfie
Nie cURLem, logowanie mam zrobione wyglada to tak :

  1. class MailboxAccess {
  2.  
  3.  
  4. protected $_connection = null;
  5.  
  6. public function __construct($server, $user, $pass, $port = 993, $protocol = 'imap') {
  7. if(!($this->_connection = imap_open('{imap.'.$server.':'.$port.'/'.$protocol.'/ssl}', $user, $pass)))
  8. throw new Exception ('Connection failure');
  9. }
  10.  
  11. public function inbox() {
  12. return $this->_sort = imap_sort($this->_connection, SORTARRIVAL, false);
  13. }
  14.  
  15. function boxes($server, $port = 993, $protocol = 'imap') {
  16. return $this->_boxes = imap_list($this->_connection, '{imap.'.$server.':'.$port.'/'.$protocol.'/ssl}', '*');
  17. }
  18.  
  19. public function body($mId) {
  20. return imap_fetchbody($this->_connection, $mId, 1);
  21. }


Calego pliku nie bede tu wklejal bo nie ma sensu......tworze instancje klasy i z odpowiednim loginem i haslem i juz jestem podlaczony, nie wiem po co mialbym uzywac curla.

Wiec powrocmy do glownego problemu

Tak wyglada mniej wiecej moj kontroler :

  1. <?php
  2.  
  3.  
  4. class MailboxController extends MailboxView {
  5.  
  6.  
  7. function MailboxController (&$model,$postvars=null) {
  8. MailboxView::__construct($model);
  9. $this->header();
  10. //print_r($_POST);
  11. switch ($postvars) {
  12. case 'login':
  13. //$this->productItem($getvars['id']);
  14. $this->inbox();
  15. break;
  16. default:
  17. if ( empty ($postvars) ) {
  18. $this->login();
  19. } else {
  20. $this->inbox();
  21. }
  22. break;
  23. }
  24. $this->footer();
  25. }
  26. }
  27. ?>


Jak widac przesylam dane $_POSTem. Jesli nic nie zostalo przeslane to wyswietlam widok $this->login() ktory pokazuje formularz logowania, gdy zostana przeslane jakikolwiek dane to wyswietlam widok $this->inbox()(mowie teraz o defaultowej czesci switcha) ktory wyswietla mi inbox z mojej skrzynki, podlaczenie do gmaila juz mam zalatwione i wszystko smiga, teraz chodzi o sprawdzenie w kontrolerze czy uzytkownik wpisal odpowiednie dane i jesli tak wyswietlenie widoku $this->inbox() ale nie na podstawie jakichkolwiek danych przeslanych przez $_POST. Potrzebuje sprawdzic czy uzytkownik rzeczywiscie zalogowal sie do servera i na tej podsawie wyswetlic widok......ale nie mam pomyslu jak to zrobic, tutaj tkwi problem.......
kfc4
Cytat
a co dopiero regulamin forum ......

No np. phishing. Twoje pierwsze wypowiedzi były takie bez składu trochę, jakbyś nie wiedział co chcesz.
thek
Nie wiem czy o to Ci chodzi... Google ma protokół IMAP zaimplementowany, więc to poprzez niego musiałbyś się odnosić (wpierw go jednak aktywuj na koncie google, bo domyślnie jest wyłączone) i dlatego uważam, że może Ci chodzić o funkcję imap_open a także inne związane z IMAP
Wolfie
thek, jakbys dokladniej przeanalizowal moja klase MailboxAccess to widac wyraznie ze imap_open jest zaimplementowany, powtarzam po raz wtory, ze kwestia rozchodzi sie nie o polaczenie z serverem pocztowym a o kontroler ! a dokladniej o konstrukcje switch.

Panowie, prosze czytajcie ze zrozumieniem, chyba moj poprzedni post dokladnie tlumaczy o co chodzi.....o sprawdzenie i tylko i wylacznie sprawdzenie czy wpisujac login oraz haslo w formularzu i przesylajac dane do kontrolera nastapilo polaczenie z serwerem pocztowym.
thek
Tylko nie rozumiem jednej rzeczy. Po co masz sprawdzać cokolwiek skoro masz w klasie pole connection. I to je wystarczy sprawdzać. Będzie tam identyfikator - zalogował się. Będzie FALSE to był byk przy logowaniu. A przecież tę informację uzyskujesz przez imap_open wykonane prawidłowo bądź nie Jedyne co jeszcze bym zrobił to destuktor zamykający połączenie z serwerem i ustawiający pole connection na FALSE. Funkcja sprawdzająca połączenie wystarczy, że zobaczy co masz w tym polu i będziesz wiedzieć czy połączyło czy nie. Żadna filozofia inna za tym nie stoi. Zrobisz ten obiekt jako przechodzący między stronami klienta i tyle. W ten sposób będziesz wiedział co się dzieje. Dlatego też wspomniałem o imap_open, bo tylko wskaźnika jaki on zwraca Ci potrzeba.
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.