2014-09-17 12 views
7

Sto sviluppando un sito Web in php e questo è il mio primo sito che utilizza php e sono nuovo di php.Come convertire la stringa di query in sll url sul modulo invia metodo get in php?

Il sito contiene 2 pagine, index.php e info.php

L'index.php ha il modulo qui sotto,

<form action="info.php" method="get"> 
    <input type="text" name="username" /> 
    <input type="text" name="company" /> 
    <input type="email" name="email" /> 
    <button type="submit">Click to Proceed!</button> 
</form> 

Quando l'utente entra e presentare i dettagli. Si reindirizza alla pagina successiva e l'URL contiene la stringa di query come,

http://localhost/info?username=john&company=zend&[email protected] 

voglio visualizzare l'url sopra come questo,

http://localhost/info/john/zend/[email protected] 

e per ottenere i valori da url usando $_GET['username'],$_GET['company'] and $_GET['email']

ho provato il sacco di regola di riscrittura tra cui il seguito in .htaccess,

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

RewriteRule ^([\d\w-]+)$ info?username=$1&company=$2&email=$3 [L,QSA] 
RewriteRule ^([\d\w-]+)$ info?username=$1&company=$2&email=$3 [QSA] 
RewriteRule ^(.*)$ info?username=$1&company=$2&email=$3 [L,QSA] 
RewriteRule ^([a-zA-Z0-9-/]+)/([0-9]+)$ info?username=$1&company=$2&email=$3 [L,QSA] 
RewriteRule ^([a-zA-Z0-9-/]+)/([0-9]+)$ info?username=$1&company=$2&email=$3 [QSA] 

ma niente funziona.

ho cercato this e Clean URLs for search query? troppo.

sarebbe qualcuno aiutarlo con questo problema.

+0

Non si può davvero cambiare questo sul lato server , devi farlo con JavaScript. Se desideri URL puliti, dovresti utilizzare POST anziché GET. –

+1

possibile duplicato di [URL puliti per la query di ricerca?] (Http://stackoverflow.com/questions/5464481/clean-urls-for-search-query) –

+0

non voglio gli URL semplificati. Ho bisogno di questi valori nella pagina successiva solo tramite url. Ecco perché sto usando GET –

risposta

2

Il flusso è questo.

inoltrare il modulo per route.php

Ecco il codice per route.php

if(isset($_GET['username']) && isset($_GET['company']) && isset($_GET['email'])) 
    $url = '/info/'.$_GET['username'].'/'.$_GET['company'].'/'.$_GET['email'] 
header('Location: '.$url); 

Nel vostro .htaccess

RewriteRule ^info/(.+)/(.+)/(.+)$ info.php?username=$1&company=$2&email=$3 [L,QSA] 
+0

Grazie per la risposta. Reindirizza a/info/myname/mycompany/myemail, ma porta a questo, /info/myname/mycompany/myemail.php non è stato trovato su questo server. –

0

Verificare con una semplice regola, se riscrittura sta lavorando. Assicurarsi che il modulo di riscrittura sia abilitato.

RewriteRule ^info/(.+)/(.+)/(.+)(/*)$ info?username=$1&company=$2&email=$3 [L,QSA] 
+1

Questo fa il contrario di ciò che si desidera. –

+0

questo non funziona. –

Problemi correlati