Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [php] uscire da una funzione

    come faccio ad uscire da una funzione? tipo il break per i cicli??

    ho provato a fare cerca, ma è disabilitato

    grassie

  2. #2
    break teorcamente andrebbe usato solo ed esclusivamente su uno switch e non dentro i cicli ...

    i cicli di per se vengono compiuti su check di tipo booleano , il check puo' essere interrotto ed e' questa la procedura piu' giusta per finire un ciclo.

    esempio

    $check = true;
    while( $check ) {
    if( ... contrllo OK ) { $check = false; }
    }

    e non brake;


    for( $a = 0; $a < 10; $a++ ) {
    if( ... contrllo OK ) { $a = 10; }
    }

    e non brake


    le funzioni invece dovrebbero avere un unico return, il return termina la funzione passando all' operazione successiva, se la funzione e' ricorsiva l' ultimo return che non restituisce la funzione stessa permettera' alla funzione di uscire da se stessa


    ora scrivi la funzione che non esce, grazie
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    ma uff :P

    scusami, ho scritto poco poco e non ti ho fatto capire :P

    io nei cicli, uso le condizioni e quando queste non si verificano più, il ciclo esce.

    se però ho un ciclo infinito e devo uscirne fuori solo in un caso posso usare il break. non è corretto, non è logico e tutto quello che ti pare ma è comodo

    ora, ho una funzione che a seconda degli argomenti fa cose.

    se ci sono gli argomenti, fa un passaggio in meno, se non ci sono li recupera da un cookie.

    dopo aver ottenuto gli argomenti, eseguo il resto della funzione.

    se però non ho gli argomenti e non posso recuperarli, devo uscire dalla funzione senza eseguire il resto della funzione. è qui che necessito di "uscire" dalla funzione.. mi sono spiegato?

  4. #4
    Originariamente inviato da Lotti
    se però non ho gli argomenti e non posso recuperarli, devo uscire dalla funzione senza eseguire il resto della funzione. è qui che necessito di "uscire" dalla funzione.. mi sono spiegato?
    allora metti tutto il resto delle operazioni dentro un if



    if( $argomenti ) {
    ....
    }



    cioe', piu' che uscire non devi proprio entrare nelle procedure ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    già ce l'ho quel check.. te la incollo facciamo prima :P
    codice:
    function login($passedusername=0, $passedpassword=0, $setcookie=0)
    {
    global $dbhost, $dbuser, $dbpass, $dbname, $Userdbtable;
    $a=0;
    
    //imposto la connessione al database
         $db = mysql_connect($dbhost, $dbuser, $dbpass) or 
    	    die("<font color=\"#FF0000\">Error, I could not connect to the database.
    Please go back and try again.</font>");
    
         mysql_select_db($dbname, $db) or 
    	    die("<font color=\"#FF0000\">Error, I could not select the database.
    Please go back and try again.</font>");
    		
    //casi:
    //se non vengono inviati dati al login..
    if ($passedusername==0 && $passedpassword==0)
    {
    	//controllo il cookie
     	if (isset($_COOKIE[$cookie["name"]]))
    	{
    	 $cookie_info=$_COOKIE[$cookie['name']];
     	 $cookie_user=strtok($cookie_info,"%%");
    	 $cookie_pass=strtok("%%");
    	 setcookie($cookie["name"],$info_cookie,time()+31536000,$cookie['path'],$cookie['domain']);	 
    	 $passedusername=$cookie_user;
    	 $passedpassword=$cookie_pass;
    
    	}	
    	else
    	{
             //IO DOVREI USCIRE QUI, CIOE TERMINARE LA FUNZIONE QUI
             //potrei usare un return anche qui?
            }
    
    }
    //procedo con i controlli..
    
         $query = "SELECT user, password FROM ".$Userdbtable." WHERE user='$passedusername' LIMIT 1";
         $result = mysql_query($query, $db) or
    	    die("An Error Occurred while trying to resolve the query.
    Please go back and try again.
    ".$query."
    ");
    		
        list($user, $password)=mysql_fetch_row($result)
    //se i dati corrispondono, creo il cookie e creo la sessione
    	if ($passedusername==$user && $passedpassword==$password)
    	{
         $query = "SELECT id, user, password, email, lvl FROM ".$Userdbtable." WHERE user='$user' LIMIT 1";
         $result = mysql_query($query, $db) or
    	    die("An Error Occurred while trying to resolve the query.
    Please go back and try again.
    ".$query."
    ");
    		
         list($id, $user, $password, $email, $lvl)=mysql_fetch_row($result)
    	
         $_SESSION['uid']=$id;	
    	 $_SESSION['username']=$user;
    	 $_SESSION['password']=$password;
    	 $_SESSION['email']=$email;
    	 $_SESSION['lvl']=$lvl; 
    
        $cookie_info=$user."%%".$password;
     	setcookie($cookie['name'],$cookie_info,time()+31536000,$cookie['path'],$cookie['domain']); 
    	$a=1;
    }
      return $a;
    }

  6. #6
    Originariamente inviato da Lotti
    già ce l'ho quel check.. te la incollo facciamo prima :P
    visto che e' il cookie la chiave di tutto e che se non c'e' non lo setti ...



    if( ( $passedusername!=0 && $passedpassword!=0 ) || isset($_COOKIE[$cookie["name"]]) )
    {
    //procedo con i controlli..

    $query = "SELECT user, pas... etc etc
    }


    P.S. occhio che il cookie e' in locale e non fai niente per evitare SQL INJECTIONS, imho LOGIN completamente scavalcabile, insicuro
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.