Visualizzazione risultati 1 fino 16 di 16

Discussione: Form che fa a pugni con un rewrite...

  1. #1
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito Form che fa a pugni con un rewrite...

    Come da oggetto, ho un form che fa a pugni con un rewrite

    Pensavo che il problema fosse qui, ma poi ho notato che è tutto ok se uso l'invio nella barra degli indirizzi e quindi dev'essere il form
    Codice PHP:
    # Rewrite AlterVista Server Number
    # Provavo anche a fonderla in una sola regola, ma non mi vien bene dato che volevo fosse valida sia con che senza slash finale!
    RewriteRule ^avs/?$ ./script/av_server/av-full.php [L]
    RewriteRule ^avs/([0-9a-zA-Z]+)$ ./script/av_server/av-full.php?nick=$1 [L]
    Html del form (dai sorgenti della pagina generata): http://www.darkwolf.it/avs
    Codice HTML:
    <form method="get" action="">
      <input value="darkwolf" type="text" name="nick" id="name" />
      <input type="submit" value="&gt; Numero Server &lt;" id="submit" />
    </form>
    Come riprodurlo: basta premere sul pulsante (submit) e l'url diventerà:
    Codice:
    http://www.darkwolf.it/avs/darkwolf?nick=nick_inserito_nel_form
    Cosa mi aspetterei:
    Codice:
    http://www.darkwolf.it/avs/nick_inserito_nel_form
    Grazie, DarkWolf
    Ultima modifica di darkwolf : 21-01-2013 alle ore 22.04.08

  2. #2
    Guest

    Predefinito

    Hai già provato a sostituire $_GET con $_POST?

  3. #3
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    In realtà il php lavora su $_REQUEST['nick'] | http://php.net/manual/en/reserved.variables.request.php

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Non è che stai facendo dei redirect da qualche parte, e finiscono nella cache del browser fregandoti?

  5. #5
    Guest

    Predefinito

    Scusami, lo sto studiando ancora PHP, il tutto in maniera autodidatta.

    Grazie comunque per il link.

  6. #6
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ho solo questo:
    Codice PHP:
    if (empty($_REQUEST['nick'])) {
    // header('Location: '.$_SERVER['PHP_SELF'].'?nick=darkwolf');
    header('Location: http://www.darkwolf.it/avs/darkwolf');
    }
    Giusto per non lasciare il campo vuoto

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Non mi stupisce quindi che il form ti riporti a /avs/darkwolf?nick=..., sta funzionando correttamente.

    Se vuoi ottenere un risultato diverso o usi una normale query string invece di mod-rewrite, oppure parti da /avs/ invece che da /avs/darkwolf, eliminando quel redirect.

  8. #8
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ho tolto il redirect (a me suona strano dipenda da quello) e il risultato non cambia
    Il redirect infatti lavora solo se il link è avs o avs/ (senza query). Diversamente non c'è nessun redirect e quindi non capisco perché dovrebbe comportarsi così
    -
    EG (ed ho tolto il redirect), vedi che succede se provi così a ricliccare sul form): http://www.darkwolf.it/avs/dreadnaut
    Ultima modifica di darkwolf : 21-01-2013 alle ore 22.52.32

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Ora se vado su avs/ e scrivo nel form, mi porta a avs/?nick=qualcosa, se invece vado su avs/nick mi mostra direttamente il numero del server. Usare il form questo punto è rotto, perché action="" (e quindi avs/nick perché è la pagina corrente) invece di action="/avs/".

    edit: ok, stai aggiustando il codice ora, direi
    Ultima modifica di dreadnaut : 21-01-2013 alle ore 23.28.38

  10. #10
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Sì, scusa, ci stavo smanettando su...
    Vorrei che non ci fosse quella query e quindi rimanesse semplicemente: /avs/nickname
    -
    Ho inserito l'action, ma la qS rimane comunque (secondo me è il rewrite - la versione standard non da noie) :/
    -
    Clonato dal primo: http://www.darkwolf.it/script/av_server/av-full2.php
    Ultima modifica di darkwolf : 22-01-2013 alle ore 00.08.28

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Se vuoi che la query string svanisca e diventi parte dell'url, devi effettuare un redirect, o via php o via mod_rewrite (consiglio php).

    Ricevi /avs/?nick=nick esegui lo script, redirezioni a /avs/nick
    Ricevi /avs/<nick> riscrivi in /avs/script.php?mostra=nick
    Ricevi /avs/?mostra=nick esegui lo script, mostri il risultato
    Ultima modifica di dreadnaut : 22-01-2013 alle ore 00.14.24

  12. #12
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ci avevo pensato, ma (da buon ariete ascendente ariete quale sono mi chiedo...) se il rewrite è giusto (e a me sembra giusto) perché tutta st'assurda trafila?

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Perché il rewrite sovrascript il nick= aggiunto dal form con il nick= ottenuto riscrivendo l'url.

  14. #14
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    A questo punto ho modificato così l'htaccess, ma la parte che dovrebbe occuparsi della pulizia viene totalmente ignorata
    Codice:
    # Rewrite AlterVista Server Number
    RewriteRule ^avs/?$ ./script/av_server/av-full.php [L]
    RewriteRule ^avs/([0-9a-zA-Z]+)$ ./script/av_server/av-full.php?nick=$1 [L]
    RewriteCond %{REQUEST_URI} ^avs/\?nick=([0-9a-zA-Z]+)$
    RewriteRule ^(.*)$ http://www.darkwolf.it/avs/$1 [R=301,L]
    Ultima modifica di darkwolf : 22-01-2013 alle ore 05.45.46

  15. #15
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Boh, a questo punto prova in locale con RewriteLog attivo, e vedi cosa succede passo per passo. Nota che sopra avevo suggerito due parametri get diversi, uno visibile all'utente ed uno nascosto, da usarsi una volta processata la chiamata, così da rendere le regole un po' più semplici.

  16. #16
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ora provo via php a piazzare qualcosa in testa allo script e vediamo se si riesce...
    -
    Ho messo questo e sembra andare tutto bene:
    Codice PHP:
    // Start Num Server
    #$ni = htmlspecialchars($_GET["nick"]);
    $ni = preg_replace('/[^a-z0-9]/i', '', $_GET["nick"]);

    // Redirect to darkwolf if no nick is inserted :P
    if (empty($ni)) {
    header('Location: http://www.darkwolf.it/avs/darkwolf');
    }
    // Remove Query From URI :)
    if (strpos($_SERVER["REQUEST_URI"], "nick=")) {
    header("Location: http://www.darkwolf.it/avs/$ni");
    }
    ---
    Codice:
    # Rewrite AlterVista Server Number
    RewriteRule ^avs/?$ ./avs.php [L]
    RewriteRule ^avs/(.+)$ ./avs.php?nick=$1 [L]
    ---
    Lo script l'ho messo nella root così ho fixato anche il form :P
    Codice HTML:
    <form method="get" action="/avs.php">
        <input value="(il nickname inserito)" type="text" name="nick" id="name" />
        <input type="submit" value="&gt; Numero Server &lt;" id="submit" />
    </form>
    Grazie per il supporto
    Ultima modifica di darkwolf : 22-01-2013 alle ore 18.42.12

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •