Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Funtion Deled

  1. #1
    Utente di HTML.it L'avatar di Raayes
    Registrato dal
    Jun 2012
    Messaggi
    55

    Funtion Deled

    Codice PHP:
    <?php

    /* -- Apro la Sessione -- */
    session_start();

    /* -- Riprendiamo la variabile di Sessione UserName -- */
    $username $_SESSION['username']; 
    $image $_SESSION['deled_image'];
    $comment $_SESSION['deled_comment'];
    $sec $_SESSION['sec'];

    /* ------- FUNZIONI ELIMINAZIONE RECORD ------- */

    [...]

    /* -- Funzione per Eliminare una Foto/Immagine -- */
    function deled_image($record)
    {    
        
    /* -- Connessione al Database delle Foto/Immagini -- */
        
    include "database_sec.php";

        
    /* -- Estraggo l'URL del navigatore -- */
        
    $url dirname($_SERVER['PHP_SELF']);
        
        
    /* -- Query -- */
        
    $query "DELETE FROM " $sec " WHERE filename = '$record' ";
        
    $result mysql_query($query);

        
    /* -- Se l'esito è errato diamo Errore -- */
        
    if (!$result) die (mysql_error());
        
        
    /* -- Eliminiamo la Variabile Image & Sec -- */
        
    unset ($image);
        unset (
    $sec);

        
    /* -- Reindirizziamo l'Utente nella Pagina in cui era -- */
        
    header("location: " $url);
    }

    /* ------- FINE FUNZIONI ELIMINAZIONE RECORD ------- */

        /* ------- ELIMINAZIONE RECORD ------- */
        
    if (isset($image))
        {
            
    deled_image($image);
        }
        elseif (isset(
    $comment))
        {
            
    deled_comment($comment);
        }
        
    /* ------- FINE ELIMINAZIONE RECORD ------- */

    ?>
    $sec non mi viene letto all'interno della funzione, infattiì se metto echo $sec; fuori dalla funzione mi da l'output, invece per esempio qui:
    $query = "DELETE FROM " . $sec . " WHERE filename = '$record' ";
    mi da errore perche $sec non c'è.

    Come mai?

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    certo perchè è fuori dalla funzione
    passalo come hai passato $record
    If you think your users are idiots, only idiots will use it. DropBox

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    oppure inserisci global $sec come prima istruzione dentro la funzione... forse è il comportamento che ti aspettavi, così

  4. #4
    Utente di HTML.it L'avatar di Raayes
    Registrato dal
    Jun 2012
    Messaggi
    55
    Perfetto! Grazie Mille!!!

  5. #5
    andateci piano con global.

    Magari in questo caso non comporta nulla di che... diciamo che apparentemente "funziona". Ma in altri casi crea un codice mooolto confusionario.
    Inoltre, l'unset della variabili in quel contesto non ha alcun senso.

    Cercando di fare supposizioni sulle intenzioni dell'utente è ipotizzabile che il suo scopo era quello di eliminare la variabili di sessione... ma lo script fa ciò.

    Infatti $_SESSION['deled_image'] e $_SESSION['sec'] non saranno eliminate.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ho suggerito global - che cmq si può usare, basta sapere cos'è ed a cosa serve - perchè dal codice mi è parso di intuire che fosse il comportamento atteso... forse viene da esperienza JavaScript? Cmq mi è parso che ci si aspettasse di poter usare $sec dentro la funzione perchè dichiarata nello scope soprastante... detto questo l'intero snippet può essere rivisto in meglio :)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    concordo con oly, global è 9 volte su 10 l'ingrediente primario per un disastro, e spesso indica una cattiva progettazione della logica.

    usi un singleton piuttosto se proprio vuole qualcosa del genere.
    sometimes it's just like teaching pigs how to fly

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da oly1982
    andateci piano con global.

    Magari in questo caso non comporta nulla di che... diciamo che apparentemente "funziona". Ma in altri casi crea un codice mooolto confusionario.
    Inoltre, l'unset della variabili in quel contesto non ha alcun senso.

    Cercando di fare supposizioni sulle intenzioni dell'utente è ipotizzabile che il suo scopo era quello di eliminare la variabili di sessione... ma lo script fa ciò.

    Infatti $_SESSION['deled_image'] e $_SESSION['sec'] non saranno eliminate.
    L'ultimo discorso dice tutto, è inutile passare una variabile come globale
    quando il suo contenuto (in questo caso una sessione) è gia globale, tanto vale
    ricavarlo dentro la funzione

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    Originariamente inviato da RoTeam
    L'ultimo discorso dice tutto, è inutile passare una variabile come globale
    quando il suo contenuto (in questo caso una sessione) è gia globale, tanto vale
    ricavarlo dentro la funzione
    lol non ci avevo nemmeno fatto caso... non ha decisamente alcun senso mettere un array super globale dentro una variabile per poi richiamarlo altrove... chiamalo dove ti serve e chiudila lì...
    sometimes it's just like teaching pigs how to fly

  10. #10
    Utente di HTML.it L'avatar di Raayes
    Registrato dal
    Jun 2012
    Messaggi
    55
    Ok, ho risistemato il codice e ho tolto le Globali e funziona tutto!
    Grazie mille per gli ottimi consigli!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.