2014-09-17 15 views
7

Tôi đang phát triển một trang web bằng php và đây là trang web đầu tiên của tôi sử dụng php và tôi mới sử dụng php.Làm thế nào để chuyển đổi chuỗi truy vấn thành url sên trên biểu mẫu gửi lấy phương thức trong php?

Các trang web chứa 2 trang, index.php và info.php

Các index.php có dạng dưới đây,

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

Khi người dùng nhập vào và gửi các chi tiết. Nó chuyển hướng đến trang tiếp theo và url chứa chuỗi truy vấn như thế nào,

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

Tôi muốn hiển thị url trên như thế này,

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

và để có được các giá trị từ url bằng $_GET['username'],$_GET['company'] and $_GET['email']

Tôi đã thử rất nhiều quy tắc viết lại bao gồm bên dưới trong 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] 

nhưng không có gì hoạt động.

tôi đã cố gắng thisClean URLs for search query? quá.

sẽ ai đó giúp tôi với vấn đề này.

+0

Bạn có thể không thực sự thay đổi này trên serverside , bạn phải làm điều đó với JavaScript. Nếu bạn muốn URL sạch, bạn nên sử dụng POST thay vì GET. –

+1

thể trùng lặp của [URL sạch cho truy vấn tìm kiếm?] (Http://stackoverflow.com/questions/5464481/clean-urls-for-search-query) –

+0

Tôi không muốn url sạch. Tôi cần những giá trị này trong trang tiếp theo chỉ qua url. Đó là lý do tại sao tôi đang sử dụng GET –

Trả lời

2

Luồng này.

nộp mẫu đơn của bạn để route.php

đây là đoạn code để route.php

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

Trong .htaccess của bạn

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

Cảm ơn câu trả lời. Nó chuyển hướng đến/info/myname/mycompany/myemail, nhưng nó dẫn đến điều này, /info/myname/mycompany/myemail.php không được tìm thấy trên máy chủ này. –

0

Kiểm tra với một quy tắc đơn giản, nếu viết lại đang làm việc. Đảm bảo module ghi đè được bật.

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

Điều này trái ngược với những gì được mong muốn. –

+0

tính năng này không hoạt động. –

Các vấn đề liên quan