• User

    Comportamento GET e correttezza nella programmazione

    Salve, vi espongo il mio problema/curiosità. Il tutto riguarda la creazione di un CMS.
    Ho una pagina home.php con dei contenuti (tipo news). Ogni news viene letta dal db ovviamente e mostrata. Ognuna ha un tasto modifica che rimanda ad una pagina edit.php, che la modifica e me la risalva sul db. Classico cms 😄

    Ho un dubbio sulla get e la struttura generale del cms. Io ho la mia pagina home, dove se premo il link sulla news, mi richiama la stessa pagina home, controlla la GET e mi include la pagina edit.php invece che mostrarmi tutte le altre news:

    <body>
    
    Piccolo test
    
    <?php
    if(isset($_GET['action'])){
    	if($_GET['action'] == 'edit'){
    			include 'edit.php';
    	}
    }else{
    	$id=2;
    	echo '<a href="./home.php?action=edit&article_id='.$id.'">Modifica</a>';
    }
    ?>
    </body>
    

    ho usato un estratto della parte principale, togliendo il db. L'id infatti lo passo a mano.
    Una volta premuto sul link quindi, mi fa vedere ANCHE la pagina edit.php (perchè l'ho inclusa):

    if(isset($_POST['salva'])){
    	echo 'ho scritto: '.$_POST['testo'];
    	
    	if ($_POST['testo'] == 'fine'){
    		$ok = 1;
                     //mi ricarica la sola home
                   echo '<META HTTP-EQUIV="REFRESH" CONTENT="2;home.php">';
    	}
    }
    
    if($ok != 1){
    ?>
    <form name="form_comunicato" method="post" action="<?php $_SERVER['PHP_SELF']?>" ENCTYPE="multipart/form-data">
         <input type="text" name="titolo_comunicato" value="<?php echo $titolo_comunicato;?>"/>
         <input name="salva" type="submit" value="Salva" />
    </form>
    
    <?php
    }
    ?>
    

    In questo caso finchè non scrivo fine richiamo sempre la stessa pagina. Visto che uso nella edit $_SERVER['PHP_SELF'], che equivale a "home.php", perchè viene richiamata la pagina edit.php? Cioè perchè il valore della GET resta invariato? (infatti dalla edit, che ha solo codice php chiamo la home, che legge il valore della GET e include la edit...questo infinite volte). E' questo comportamento, che mi va più che bene, che non capisco 😄

    Per il resto, secondo voi è un buon modo di operare?

    ps.potete copiare il codice in 2 pagine php e testarlo...ma è alquanto semplice


  • Consiglio Direttivo

    Ciao gepeppe,
    se non ho capito male in caso di edit la tua url sarà
    home.php?action=edit&article_id=2, quindi $_SERVER[PHP_SELF] memorizza home.php?action=edit&article_id=2, rimandandoti sempre alla stessa pagina... salvo che non abbia ben capito il problema. 😄


  • User Newbie

    Hai capito bene, perchè il comportamento è quello.
    Ma stampando di volta in volta il valore di $_SERVER[PHP_SELF] mi mostra solo "home.php", però sulla barra dell'url di firefox mi compare sempre home.php?action=edit&article_id=2. Ripeto, è giusto cosi, ma vorrei capire perchè eheh


  • ModSenior

    Salve tuxpeppe/gepeppe,
    come già accaduto anche in questa discussione hai aperto il thread con un nickname e risposto con un altro.
    Oltre a crear confusione agli altri utenti che seguono/intervengono nella discussione, per ovvi motivi i fake non sono ben tollerati in un Forum.

    Ti invito a rivedere con la dovuta accuratezza il regolamento del nostro forum, Punto 9, e, se proprio non puoi far a meno di avere due Nick, di fare molta attenzione in futuro, potremmo non essere così tolleranti.

    Buona continuazione sul Forum GT.


  • User

    Non me n'ero neppure accorto!!! Su firefox mi faceva accedere come un utente, su chrome come un'altro. Ora utilizzerò solo questo, sto cercando di capire come eliminare dal forum l'altro account (ma non trovo il modo).