2017-05-22 1 views
0

Meine Website eine URL (example.com/folder/index.php?id=22)Besorgen Sie sich die langen Pfosten URL von der ID in der Datenbank-Tabelle

Die obige URL 22. die Post-ID angezeigt hat Hier ist ein weiterer wichtiger Teil:

|-------|-----------|-------------------|-------------------| 
| 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']; 

Ergebnisse:

-Admin

-My Titel Beiträge

-my_title_post

Ich versuche, von zu verstecken $_GET['id'];.htaccess

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

Meine neue URL hinzugefügt ist: example.com/newfolder/22

Aber dies noch nicht ganz richtig ist. Ich versuche, eine lange Post-URL im URL-Abschnitt anzuzeigen, nicht die ID. Also ich meine, wie die URL werden zu lassen:

example.com/newfolder/my_title_post 

ich mich verändert habe die SQL: "SELECT * FROM posts WHERE url=".$_GET['id'] Aber der Server die Anforderung nicht verarbeiten kann.

Ich habe auch versucht, den Primärschlüssel in der Datenbank-URL-Spalte zu ändern, aber die Anfrage wird abgelehnt. Hier habe ich es auf Unique gesetzt, aber es hat immer noch nicht funktioniert.

Ist es möglich, das zu tun? Wenn jemand weiß, akzeptiere ich Vorschläge über Cpanel, htaccess, SQL oder etwas anderes. Danke ..

+0

Wissen Sie, was passieren würde, wenn jemand zu dieser URL geht: example.com/folder/index.php?id=1%20OR%201%3D1. Lesen Sie über SQL-Injektion - https://www.w3schools.com/sql/sql_injection.asp – lloiacono

+0

@lloiacono Ich weiß nicht, was du meinst – dBoys

+0

_ "Ich habe die SQL geändert:" SELECT * FROM Beiträge WHERE url = ". $ _GET ['id'] Aber der Server kann die Anfrage nicht verarbeiten. "_ - das hört sich eher so an, als könnten Sie mit Datenbankfehlern noch nicht richtig umgehen - weshalb sollten Sie also zuerst nachlesen. _Ask_ die Datenbank, welches Problem es mit Ihrer Aussage hatte, so können Sie es beheben. – CBroe

Antwort

0

Ihre my_title_post ist eine Zeichenfolge. Aber Ihre Abfrage wird als ganze Zahl behandelt. Zitieren Sie die $_GET['id'], um es eine Zeichenfolge zu behandeln.

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

Auch ist es besser, Parameter SQL injection zu verhindern Bindung zu verwenden. Zumindest müssen Sie mysqli_real_escape_string verwenden, um dies zu verhindern.

+0

Ich muss sagen, vielen Dank für Ihre Antwort. Das funktioniert. :) – dBoys

Verwandte Themen