2017-05-22 7 views
0
私のサイトは (example.com/folder/index.php?id=22)

データベース表にIDから長いポストURLを取得し

上記のURLは、郵便番号22.ここで表示する別の重要な部分のURLあり

|-------|-----------|-------------------|-------------------| 
| id | user |  title  |  url   | 
|-------|-----------|-------------------|-------------------| 
| 22 | Admin | My Title Posts | my_title_post | 
|  |   |     |     | 
|-------|-----------|-------------------|-------------------| 

include_once 'dbconnect.php'; 

$query = $con->query("SELECT * FROM posts WHERE id=".$_GET['id']); 
$Row=$query->fetch_array(); 

echo $Row['user']; 
echo $Row['title']; 
echo $Row['url']; 

結果:

-Admin

-Myタイトル投稿

-my_title_post

私は.htaccess

RewriteEngine on 
RewriteRule ^newfolder/(.*) folder/index.php?id=$1 

を追加することにより$_GET['id'];を非表示にしようとしている私の新しいURLは次のようになります。これはまだかなり右ではない、example.com/newfolder/22

しかし。私はIDではなく、URLセクションに長い投稿URLを表示しようとしています。 は、だから私はURLになるようにする方法を、意味:

example.com/newfolder/my_title_post 

私はにSQLを変更している: "SELECT * FROM posts WHERE url=".$_GET['id']しかし、サーバーは要求を処理することはできません。

データベースのURL列で主キーを変更しようとしましたが、要求は拒否されました。ここではUniqueに設定しましたが、それでも動作しませんでした。

これは可能ですか? 誰かが知っているなら、私はCpanel、htaccess、SQLなどの提案を受け入れます。ありがとう..

+0

誰かがこのURLに行くとどうなるか知っていますか:example.com/folder/index.php?id=1%20OR%201%3D1 SQLインジェクションについて - https://www.w3schools.com/sql/sql_injection.asp – lloiacono

+0

@lloiacono何を意味するのかわかりません – dBoys

+0

_ "SQLを" SELECT * FROM posts WHERE url = "に変更しました。 $ _GET ['id']しかし、サーバーはリクエストを処理できません。 "_ - データベースエラーを正しく処理できないように聞こえます。これが最初に読んでください。 _Ask_データベース、あなたのステートメントでどのような問題があったので、修正することができます。 – CBroe

答えて

0

my_title_postは文字列です。しかし、あなたのクエリは整数として扱われます。それを文字列として扱うには$_GET['id']を引用してください。

"SELECT * FROM posts WHERE url='".$_GET['id'] . "'"; 

また、SQL injectionを防ぐためにパラメータバインディングを使用することをお勧めします。少なくとも、それを防ぐにはmysqli_real_escape_stringを使用する必要があります。

+0

あなたの答えは大変ありがとうございます。これは機能します。 :) – dBoys

関連する問題