Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    [php] bad argument for implode

    ciao a tutti,
    ho un problema che sinceramente non capisco con l'implode. io ho questo:
    Codice PHP:
    <?php  
            $errors
    =$_SESSION['error'];
            if(!empty(
    $errors)){
                
    $stringa =implode(" ",$errors);
                echo 
    "<p class=\"rossoG\" style=\"color: red\">".$stringa."</p>";
                }else{
                    
    $ok=$_SESSION['sended'];
                    if (!empty(
    $ok)){
                        echo 
    "<p class=\"rossoG\" style=\"color: red\">".$ok."</p>";
                        unset(
    $_SESSION['sended']);
                        
                        echo 
    "<script type=\"text/javascript\">
                        <!--
                        setTimeout(\"parent.location.reload()\",3000);
                        // -->
                        </script> "
    ;
                    }
                }
                
    ?>
    la cosa strana è che alla prima apertura della pagina mi da errore
    Warning: implode() [function.implode]: Bad arguments. in nuovo.php on line 109

    mentre se aggiorno la pagina sparisce...è come se appena caricata non andasse a leggere la condizione if o se fosse vera...qualcuno saprebbe indicarmi il perchè?
    vi ringrazio anticipatamente

  2. #2
    il controllo (!EMPTY) lo devi fare sull'array $_SESSION e non sulla variabile, cioe' la variabile dovra' essere valorizzata solo se $_SESSION['error'] non e' vuoto.


    Codice PHP:
    <?php
            session_start
    ();
            if(!empty(
    $_SESSION['error']))  { 
                  
    $errors=$_SESSION['error'];
                 } else 
    $errors '';
    e cosi' via per gli altri controlli.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    il controllo (!EMPTY) lo devi fare sull'array $_SESSION e non sulla variabile, cioe' la variabile dovra' essere valorizzata solo se $_SESSION['error'] non e' vuoto.


    Codice PHP:
    <?php
            session_start
    ();
            if(!empty(
    $_SESSION['error']))  { 
                  
    $errors=$_SESSION['error'];
                 } else 
    $errors '';
    e cosi' via per gli altri controlli.

    Quello che tu dici è vero solo se NON si è sicuri di aver dichiarato da qualche parte $_SESSION['error']
    in tal caso sarebbe meglio fare:

    if (isset($_SESSION['error']) && !empty($_SESSION['error']))
    .........

    se invece so con certezza di aver già inizializzato $_SESSION['error'] come un array allora va bene anche il codice postato da nexus.

  4. #4
    Originariamente inviato da gianf_tarantino
    Quello che tu dici è vero solo se NON si è sicuri di aver dichiarato da qualche parte $_SESSION['error']
    in tal caso sarebbe meglio fare:

    if (isset($_SESSION['error']) && !empty($_SESSION['error']))
    .........

    se invece so con certezza di aver già inizializzato $_SESSION['error'] come un array allora va bene anche il codice postato da nexus.
    va bene empty. Non da nessuna segnalazione se l'indice non esiste. metti che non recuperi la sessione valorizzata per una ragione qualsiasi...

    mentre e' formalmente errato prima valorizzare una variabile senza sapere se esiste e non sia vuota e POI a posteriori eseguire il controllo del contenuto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    Codice PHP:
        <?php          
            
    if(isset($_SESSION['error']) && !empty($_SESSION['error'])){
                
    $stringa =implode(" ",$_SESSION['error']);
                echo 
    "<p class=\"rossoG\" style=\"color: red\">".$stringa."</p>";
                }else{
                    
    $ok=$_SESSION['sended'];
                    if (!empty(
    $ok)){
                        echo 
    "<p class=\"rossoG\" style=\"color: red\">".$ok."</p>";
                        unset(
    $_SESSION['sended']);
                        
                        echo 
    "<script type=\"text/javascript\">
                        <!--
                        setTimeout(\"parent.location.reload()\",3000);
                        // -->
                        </script> "
    ;
                    }
                }
                
    ?>
    ho scritto cosi ora ma incredibilmete vero...non funziona...è come se $_session['error'] esistesse o fosse pieno o php leggesse tutto anche se la condizione non si verifica.

    lo strano è che su altre pagine più piccole (session_start(); form di una cella chiusura con questo script)
    funziona perfettamente...a questo punto mi viene in mente che ci sia un problema sulla pagina ...difficile capire cosa..

    dato che ho un include all'inizio pagina nel caso venga inviato il form dove (nel caso di errore viene dichiarato $_SESSION['error']) ho provato a comentarlo per eliminare delle possibilità. ma nulla l'errore permane.
    qualche consiglio?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    ok alla fine ho risolto cosi:
    Codice PHP:
    <?php
    session_start
    ();
    $user=$_SESSION["user"];
    if (empty(
    $user)){
        
    header("Location:accesso_riservato.php");
    }
    include 
    "function/pheader.php";
    if (isset(
    $_POST['salva']))
    {include 
    "function/ins_cat.php";
    $error=$_SESSION['error'];}
    ?>



            <?php          
            
    if(!empty($error)){
                
    $stringa =implode(" ",$error);
                echo 
    "<p class=\"rossoG\" style=\"color: red\">".$stringa."</p>";
                }else{
                    
    $ok=$_SESSION['sended'];
                    if (!empty(
    $ok)){
                        echo 
    "<p class=\"rossoG\" style=\"color: red\">".$ok."</p>";
                        unset(
    $_SESSION['sended']);
                        
                        echo 
    "<script type=\"text/javascript\">
                        <!--
                        setTimeout(\"parent.location.reload()\",3000);
                        // -->
                        </script> "
    ;
                    }
                }
                
    ?>
    strano però che non funzionasse...

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.