Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149

    variabile che passa tra pagine

    ciao, so che il titolo è un pò enigmatico ma non sapevo cosa scrivere.
    ho delle opzioni:
    [list=1][*]$_POST
    come faccio a settare una variabile POST così da "portarla" nella pagina in cui andrò cliccando su un qualunque link della pagina corrente? c'è un qualcosa tipo
    asd
    Codice PHP:
    $_POST[var] = "value"
    [*]$_GET
    e se io modificassi l'url aggiungendo in GET il valore che mi serve, quando clicco su un link con delle variabili in GET me la mantine?
    pensavo con il mod_rewrite ma non so come usarlo e non saprei nemmeno se sarebbe utile
    Codice PHP:
    $_SERVER['REQUEST_URI'] .= "?var=value"
    [*]"portarmi dietro" una variabile senza sessioni o cookie
    praticamente uso un template engine (RainTPL) e vorrei portarmi da una pagina all'altra la variabile che mi dice che tema sto usando. quando setto il tema imposto una variabile GET all'url e ricarico la pagina
    codice:
    cambia tema
    questa variabile poi la salvo in $themeName per poter caricare il tema corretto.
    usando un tempalte engine tengo separati dati e template e quindi non posso settare un campo hidden con i dati utili, cioè potrei ma non saprei che farmene, cioè non saprei come leggere il contenuto di un campo hidden, li ho trovati utili solo all'interno di un form che quando si preme il botton submit il campo viene inviato all'url dell'action. e non volevo nemmeno lasciare tracce sul pc degli utenti solo per passarmi il tema[*]$_SERVER['HTTP_REFERRER']
    la cosa che mi è sembrata più vicina ai miei scopi è la variabile $_SERVER['HTTP_REFERER'] che però non riesco ad usarla, cioè è sempre vuota. puntavo a leggere questa variabile in ogni pagina, e maneggiando la stringa risultante recuperare il valore della variabile theme che ci sarà sicuramente se si modifica il tema.
    qualcosa tipo questo
    Codice PHP:
    $str $_SERVER['HTTP_REFERER'];
    $init strpos($str,"?theme") + 1;
    if(!isset(
    $init) || $init>0) {
        
    $init strpos($str,"&theme") + 1;
    }

    if(isset(
    $init)) {
        
    $fine strpos($str,"?",$init);
        if(isset(
    $fine) && $fine>0) {
            
    $var substr($str,$init,$fine-$init);
            
    $v explode("=",$var);
            
    $theme $v[1];
        }
        else {
            
    $fine strpos($str,"&",$init);
            if(isset(
    $fine) && $fine>0) {
                
    $var substr($str,$init,$fine-$init);
                
    $v explode("=",$var);
                
    $theme $v[1];
            }
            else {
                
    $var substr($str,$init);
                
    $v explode("=",$var);            
                
    $theme $v[1];
            }
        }
    }

    echo 
    "theme: " $theme "
    "

    qualcosa tipo questo[/list=1]

    consigli?

    EDIT: l'edit era per il codice del punto 4 che adesso dovrebbe essere giusto e prendere tutte le opzioni
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  2. #2
    $_POST come faccio a settare una variabile POST così da "portarla" nella pagina...
    che sappia io le variabili in post le passi solamente tramite form <form method="post" action="xxx.php">

    $_GET e se io modificassi l'url aggiungendo in GET il valore che mi serve...
    no, non le mantiene. Nell'array $_GET hai solo le variabile che si trovano dopo il punto di domanda nel link. il mod_rewrite serve ti permette di riscrivere il link in maniera più leggibile ma cmq passa le variabili sempre in $_GET e quindi con il medesimo principio


    "portarmi dietro" una variabile senza sessioni o cookie...
    La cosa che ti consiglio è questa, all'inizio di ogni pagina attivi la sessione e controlli se è settata la variabile che ti serve. Se è settata la usi, altimenti la inizializzi.
    Codice PHP:
    session_start(); if(empty($_SERVER['theme'])  {   $_SERVER['theme']='pippo'; } 

    $_SERVER['HTTP_REFERRER'] la cosa che mi è sembrata più vicina ai miei scopi...
    $_SERVER['HTTP_REFERRER'] è semplicemente la pagina che ha richiamato la pagine eseguita in quel momento, non è affidabile perchè è facilmente "camuffabile" visto che è un parametro del browser.

    PS: mi ero dimenticato di chiudere un quote
    Tra cinquecento anni non importerà più a nessuno!

  3. #3
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Senti...
    $_POST $_GET $_SERVER sono degli array che vengono inizializzati da php prima di eseguire il tuo script e popolati con dei valori che vengono presi dagli header o dall'url della pagina che richiama quella dove si trova lo script.

    Tu puoi modificarne i valore come proponi $_POST['mario']=1 , ma questo varrà solo all'interno del tuo script, quando passi ad un altra pagina (script) tutte le tue impostazioni vengono perse ed i valori degli array vengono ricalcolati da php.

    Per passare delle variabili che impostano un template di solito si usano i cookies che possono restare sul pc dell'utente a lungo (le sessioni scadono alla chiusura del browser).
    Usare cookies per questo scopo non è fastidioso per l'utente (non si accorge di nulla) e non "intasa" il suo pc.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    o semplicemente potresti passarti i valori in get sul link o sull'eventuale rederect che usi.

    Se ad esempio la pagina di destinazione e un link a cui l'utente cliccherà allora potresti fare

    Pagina di partenza
    link

    Pagina di destinazione
    $var = $_GET['var'];


    _________


    Se esegui un redirect allora puoi fare una cosa simile

    Pagina di partenza
    header('location: index.php?var=1');


    Pagina di destinazione
    $var = $_GET['var'];


    ______


    Se in vece usi un form allora fai che ti crei un campo nascosto

    Pagina di partenza
    <input type="hidden" value="1" name="var">

    Pagina di destinazione
    $var = $_POST['var'];

  5. #5
    ma visto che cmq il valore da passare "pesa poco" non è consigliabile metterlo in sessione?

    se usi i cookie corri cmq il rischio che l'utente ce li abbia bloccati, visto che non riconosce la differenza tra dannosi e non...

    passarlo di volta in $_GET corri il rischio di dimenticartelo in qualche link, specialemente se ne crei di dinamici...

    e per quanto riguarda il form nascosto ogni link dovrebbe diventare un pulsante di un form, perchè cmq i dati vengono passati solamente se il form viene inviato... non basta mettere
    codice:
    <input type="hidden" value="1" name="var">
    ...
    Tra cinquecento anni non importerà più a nessuno!

  6. #6
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    I campi hidden sono impossibili da gestire per una cosa del genere: diventa macchinoso e ti ritrovi con un codice squallido.

    Le sessioni si azzerano ad ogni uscita del client quindi quando ricarica la pagina deve scegliere nuovamente il tema.
    Inoltre si azzerano anche dopo un po' di tempo (non sempre controllabile facilmente).

    I cookies sono stati inventati proprio per questo.
    Se uno li ha disabilitati per scelta... sa di non poter usufruire delle personalizzazioni e non può lamentarsi.

    Luca

    PS parliamo ovviamente di utenti "anonimi": se c'è un login allora il discorso cambia, puoi associare nel DB all'utente il tuo tema preferito.

  7. #7
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    grazie per le tante risposte!
    allora i problemi del POST e del GET erano venuti anche a me, ma speravo in un modo per superarli.

    per chiarire: si parla di utenti anonimi

    boh adesso proverò tra sessioni e cookie e vedrò le differenze e i problemi

    però adesso voglio capire come prendere il valore dell'url che richiama la pagina, per sfizio, ma anche perchè probabilmente mi servirà più avanti. girando su internet ho trovato il metodo che in sostanza diceva hackerdm, mettendo nel campo hidden tutto l'url attuale
    Codice PHP:
    $localURL "http://" $_SERVER['REQUEST_URI'] . "?" $_SERVER['QUERY_STRING']; 
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  8. #8
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Cosa vuol dire "mettendo nel campo hidden tutto l'url attuale"?
    Se è l'url non hai bisogno di metterlo da nessuna parte!

    I valori settani nella query string sono già in $_GET e non hai bisogno di complicarti la vita rianalizzandola con un tuo codice alternativo.

  9. #9
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    no intendevo in un modulo di login per sapere da che pagina viene fatto e per reindirizzare l'utente alla pagina di provenienza dopo il login ho trovato che si mette in un form un campo hidden con value il valore di prima
    Codice PHP:
    <input type='hidden' name='url' value='<? echo "http://" $_SERVER['REQUEST_URI'] . "?" $_SERVER['QUERY_STRING']; ?>'>
    così che nella pagina di conferma del login avvenuto ho nel vettore $_POST il campo url con valore la pagina da cui ho fatto il login
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  10. #10
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    se vuoi rimandare l'utente alla pagina di provenienza puoi usare
    Codice PHP:
    header("Location: ".$_SERVER['HTTP_REFERER']); 

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.