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

    Azzeramento querystring

    Ciao a tutti. vorrei sapere se è in qualche modo possibile azzerare il querystring o parte di esso.
    Premetto che non mi riferisco all' header("location: ?");

    Faccio un esempio supponiamo che mi trovo nella pagina dei prodotti e io ho in pagina un form che in base al prodotto selezionato apre i dettagli del prodotto. Ogni volta che seleziono un prodotto tramite il metodo POST invio il codice del prodotto e accedo ai dati del prodotto.

    Supponiamo adesso che io abbia un' altra applicazione e che voglia collegarmi attraverso quest' altra applicazione alla mia pagina dei prodotti con un link dinamico che inserisce nel querystring la variabile riferita al codice prodotto.

    Se tutto questo funziona io ho due modi di accesso alla mia pagina dei dettagli prodotti sia via POST attraverso il form che via GET attraverso il querystring.

    Questo è un esempio molto banale di un problema molto più complesso che mi sta dando noia su di un' applicazione a cui sto lavorando.

    Ora il problema è che per accedere alla pagina del dettaglio prodotto sono costretto a passarci attraverso la POST del form. Per risolvere questo problema ho fatto si che se sul querystring è impostato il codice prodotto, lo intercetto attraverso una funzione javascript, lo vado ad inserire nella form e poi invio la submit in automatico. Tutto questo funziona correttamente solo che se non azzero il querystring la procedura va in loop perchè il javascript reintercetta il codice prodotto dal querystring, lo va a rimettrere nella form e lo reinvia.

    A me interesserebbe riuscire, non appena intercettato il codice del prodotto, a resettare il querystring. Questo potrebbe avvenire sia prima che dopo avere inviato i dati attraverso il post, ma sarebbe importante poterlo fare per evitare il loop.

    Grazie

  2. #2
    Scusami ma mi sembra che tu faccia un passaggio di troppo, secondo me ti conviene di brutto far inviare al form delle variabili GET anzichè POST.
    In questo modo i link che puntano alle pagine dei prodotti saranno gli stessi degli indirizzi a cui andrà il form GET senza stare ad usare javascript per riempire il form, fargli fare l'invio automatico ecc ecc.

    Comunque se hai qualche altro problema riguardo alla gestione dei parametri GET ti suggerisco questa funzione che uso da sempre che genera una query string partendo dall'array $_GET e con possibilità di escludere alcuni valori.


    Codice PHP:

    /** Costruisce una query string con tutti i valori di $_GET.
      * accetta un numero ARBITRARIO di paramentri stringa, che sono interpretati
      * come i GET (valori delle chiavi dell'array $_GET) da ESCLUDERE nella costruzione
      * della query string  
      * @param string $arg_1 
      * @param string $arg_2 
      * @param string $arg_3 
      *    @return string 
      */
    function buildQueryString()
    {
        
    $except=func_get_args();
            
    $query_string="";
            foreach(
    $_GET as $name=>$value)
            {
                
    $continue=false;
                foreach (
    $except as $val) if ($val==$name){$continue=true;break;}
                if (
    $continue) continue;
                
                if (
    is_array($value))
                {
                    foreach(
    $value as $key=>$val)
                    
    $query_string.="&".$name."[".urlencode(stripslashes($key))."]=".urlencode(stripslashes($val));            
                }
                else
                
    $query_string.="&".$name."=".urlencode(stripslashes($value));
            }
            return 
    $query_string;

    Spero di essere stato d'aiuto
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  3. #3
    In realtà la scelta di usare solo il metodo post è voluta. L' applicazione gestisce molti altri parametri che vengono o meno impostati in base alle sezione della pagaina da cui provengono i click. Non voglio che l'utente possa pacioccare o manomettere il querystring e quindi per maggiore sicurezza è tutto passato tramite post.

    In questo caso per poter fare comunicare due applicazioni diverse ho dovuto passare questo dato perforza tramite il querystring, ma è l' unico caso. Potevo evitare il reinvio automatico del form, ma in questo caso l'utente dovrebbe andare a cliccare sul tasto di invio del form, invece qui vogliono proprio che la pagina si apra con gia la maschera completa di tutti i dati di dettaglio.

    Premetto che ho gia risolto il problema con dei javascript ma non mi piace neanche un po' come soluzione, e se possibile mi piacerebbe poter resettare il querystring gestando la cosa via php.

    Grazie

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.