2017-06-08 50 views
0

後,我用的.htaccess改變的.htaccess PHP的網址無法正常運作

RewriteRule ^job/([A-Za-z]+) job.php?id=$1&search=$2 

連接工作正常,但是PHP是不是從數據庫中裝載的數據是改變了這個網址 http://localhost/rozgar/job.php?search=Testing%201&id=43 這個 http://localhost/rozgar/job/Testing%201/43 向我顯示錯誤..

<?php 
include "inc/db.php"; 
$id = @$_GET['id']; 
$search = @$_GET['search']; 
session_start(); 
$email = @$_SESSION['email']; 

    [email protected]$_GET['id']; 
    $query="select * from company,jobs where company.id = jobs.company_id AND jobs.id = '$id'"; 
$run=mysqli_query($db,$query); 

while ($row = mysqli_fetch_assoc($run)) { 
} 
+0

http://bobby-tables.com - Learm有關SQL注入,以及如何預防它們。 – Twinfriends

回答

0

你必須嘗試這個規則。您僅爲搜索字段傳遞了值,但您也像(0-9)那樣傳遞了id的值。那麼你的htaccess規則如下所示。

RewriteRule ^job/([A-Za-z-]+)/([0-9]+) job.php?search=$1&id=$2 

在此之後,您可以將它切出此URL。

http://localhost/rozgar/job/testing/43 

而且記住一件事,你不應該在其中有像「試002」在你的htaccess的規則打破空間URL傳值。爲此,您必須將空間轉換爲下劃線。

+0

如何將空格轉換爲下劃線? –

+0

使用php函數str_replace(「」,「_」,「Hello world!」);; –

0

只需創建的.htaccess這樣

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([^/]+)/?$ $1.php [L] 

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 


RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ job.php?id=$1&search=$2 [L,QSA] 

而且現在得到的GET變量job.php