Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jeszcze jedno pytanie dotyczace switch
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam


Juz dzisiaj pisalem na temat konstrukcji switch ale to troche inne zagadnienie, przedstawiam sprawe :

Mam formularz logowania ktory wyglada tak :

  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. }


Jak widac mamy tutaj input text na login password na haslo oraz jedno ukryte pole na ktore chce zwrocic szczegolna uwage gdyz tego pola bedzie dotyczyc pytanie:

Cytat
'<input type="hidden" name="check" value="ok">'.


A teraz konstrukcja switch :

  1. switch ($postvars['check']) {
  2. case 'ok':
  3. if(($this->model->connect('gmail.com',$postvars['login'],$postvars['pass'],'993','imap')) == false) {
  4. $this->login();
  5. } else {
  6. $this->inbox();
  7. }
  8. break;


Tutaj widzimy jak dziala switch. na podstawie ukrytego pola sprawdzamy warunki case, w przypadku formularza pole hidden zostalo przeslane z wartoscia 'ok'.

No i teraz pytanie , czy nie ma innej metody zeby wchodzic w odpowiedni przypadek konstrukcji switch niz ukryte pole ?

No bo teraz jakbym chical przekazac z innego skryptu jakas inna wartosc do 'case' no to musze znowu uzyc ukrytego pola......
b4x
A może tak wysyłać np.

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


I
  1. switch ($_GET['check']) {
  2. case 'ok':
  3. if(($this->model->connect('gmail.com',$postvars['login'],$postvars['pass'],'993','imap')) == false) {
  4. $this->login();
  5. } else {
  6. $this->inbox();
  7. }
  8. break;
  9.  
Wolfie
Chcialbym zeby to bylo tak proste, ale chodzi o to ze ja bede mial wiele przypadkow w petli switch a nie tylko jeden, przykladowo bedzie to wygladac tak :

  1. switch ($postvars['check']) {
  2. case 'ok':
  3. if(($this->model->connect('gmail.com',$postvars['login'],$postvars['pass'],'993','imap')) == false) {
  4. $this->login();
  5. } else {
  6. $this->inbox();
  7. }
  8. break;
  9. case 'przypadek2':
  10. wyswietl jakis widok;
  11. break;
  12. case 'przypadek3';
  13. wyswietl inny widok;
  14. break;
  15. default:
  16. if ( empty ($postvars) ) {
  17. $this->login();
  18. }// else {
  19. // $this->inbox();
  20. //}
  21. break;
  22. }


a nawet bedzie to bardziej skomplikowane, wiec nie moge poprostu uzaleznic tego od tablicy $_POST........ten kontroler bedzie pobieral wartosci tablicy $_POST z roznych skryptow i na podstawie danego przypadku bedzie wyswietlal widoki........

--------------------------------------------------------------------------------
No tak jest to jakies wyjscie, ale nie lubie tablicy $_GET, wole miec url konczacy sie na index.php, a tez nie mam czasu bawic sie w przyjazne url-e smile.gif

-------------------------------------------------------------------
Czyli mam rozumiec ze albo ukryte pole i metoda 'post' albo modyfikacja url-a i metoda 'get' ?

Nie ma innego wyjscia ? najchetniej wlasnie przy uzyciu metody 'post'.....
b4x
A może sesje?, nikt tego nie zobaczy - ale Ty odczytasz, lub cookie ;-)
Wolfie
Sesje bardzo chetnie smile.gif

Tylko jakby to wygladalo w tym przypadku ? Nigdy jeszcze z sesji nie korzystalem, bo to w zasadzie moja pierwsza powazniejsza aplikacja.....

jedynie co wiem to to zeby ustawic sesje na poczatku mojego pliku index.php ktory inicjalizuje wszystkie obiekty zwiazane z aplikacja......zreszta przez ten plik 'przechodza' wszystkie tablice takie jak $_POST itp itd


Ale swoja droga przeciez nie bede decydowal co ma zrobic kontroler na podsawie zmiennych z sesji......
b4x
index.php

  1. sesion_start();
  2. //..... jakis tam kod masz:)
  3.  
  4. function login() {
  5. $_SESSION['check'] = 'ok';
  6. //... pominiecie...
  7. }
  8.  
  9. function Costam() {
  10. $_SESSION['check'] = 'costam';
  11. }


itd.. smile.gif


i
  1. switch ($_SESSION['check']) {
  2. //...
  3. }
Wolfie
Tak to sobie tego raczej nie wyobrazam, moj index.php wyglada tak :


  1. <?php
  2. require_once('class.Database.php');
  3. require_once('class.ActiveRecord.php');
  4. require_once('class.Filter.php');
  5. require_once('class.MailboxAccess.php');
  6. require_once('class.MailboxView.php');
  7. require_once('class.MailboxController.php');
  8.  
  9. try {
  10.  
  11. $dao = new MysqlDatabase('localhost','root', 'wmateusz', 'spam');
  12. $tokenRow = new TokenRow($dao);
  13. $tokenTable = new TokenTable($dao);
  14. $totalsRow = new TotalsRow($dao);
  15. $totalsTable = new TotalsTable($dao);
  16. $mailboxAccess = new MailboxAccess();
  17. $mailboxController = new MailboxController($mailboxAccess, $_POST);
  18. echo $mailboxController->display();
  19.  
  20. } catch(Exception $e){
  21. echo $e->getMessage();
  22. exit();
  23. }
  24. ?>


I staram sie zeby moja aplikacja byla zgodna ze wzorcem mvc wiec nie wchodzi w gre zeby tutaj jakies funkcjie uzywac, co najzywje mozna przeslac tablice $_SESSION jako parametr klasy MailboxController.........
b4x
To napisz jakiś helper/bibliotekę dla sesji ;-)
Wolfie
zebym jeszcze wiedzial jak taka biblioteka mialby wygladac tongue.gif .......


Wstawiam pomogl za ogolne zaangazowanie winksmiley.jpg
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.