- Home
- Categorie
- Coding e Sistemistica
- PHP
- Comportamento GET e correttezza nella programmazione
-
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 cmsHo 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
-
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.
-
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
-
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.
-
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).