2014-09-17 7 views
7

Ich entwickle eine Website in PHP und dies ist meine erste Seite mit PHP und ich bin neu in PHP.Wie man Abfragezeichenkette zu URL-Slug auf Form einreicht, erhalten Methode in php erhalten?

Die Website enthält zwei Seiten, index.php und info.php

Das index.php das unten stehende Formular hat,

<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> 

Wenn der Benutzer eingeben und die Details vor. Es leitet auf der nächsten Seite und die URL enthält die Query-String-wie,

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

ich die obige URL wie diese angezeigt werden soll,

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

und die Werte von URL zu erhalten mit $_GET['username'],$_GET['company'] and $_GET['email']

ich versuchte, die Menge Rewrite-Regel in .htaccess die unten einschließlich

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] 

aber nichts funktioniert.

Ich versuchte this und Clean URLs for search query? auch.

würde jemand mir bei diesem Problem helfen.

+0

Sie können route.php nicht wirklich dies auf der Serverside ändern Du musst es mit JavaScript machen. Wenn Sie saubere URLs wünschen, sollten Sie POST anstelle von GET verwenden. –

+1

mögliches Duplikat von [URLs für Suchanfrage löschen?] (Http://stackoverflow.com/questions/5464481/clean-urls-for-search-query) –

+0

Ich möchte keine sauberen URLs. Ich brauche diese Werte auf der nächsten Seite nur über die URL. Deshalb verwende ich GET –

Antwort

2

Der Ablauf ist dies.

senden Sie Ihre Form

hier route.php der Code

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

In .htaccess

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

Danke für die Antwort. Es wird auf/info/myname/mycompany/myemail umgeleitet, aber es führt dazu, /info/myname/mycompany/myemail.php wurde nicht auf diesem Server gefunden. –

0

Überprüfen Sie mit einer einfachen Regel, ob das Neuschreiben funktioniert. Stellen Sie sicher, dass das Rewrite-Modul aktiviert ist.

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

Dies ist das Gegenteil von dem, was gewünscht wird. –

+0

das funktioniert nicht. –

Verwandte Themen