Saya mencoba mendapatkan URL bersih dari lokalitas milik distrik terkait di mana fungsi url bersih diterapkan ke variabel $_GET. Saya memiliki dua halaman, yang pertama adalah distrik.php yang memiliki tautan ke lokasi terkait menggunakan fungsi ini untuk menghasilkan URL yang bersih. Di bawah ini adalah kode halaman distrik.php :-
<?php
$remove[] = " ";
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
$string = preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one.
return $string;
}
include($_SERVER['DOCUMENT_ROOT'].'/database-path.php');
$district = str_replace('-',' ',$_GET['district']);
$state = str_replace('-',' ',$_GET['state']);
$sql="SELECT * FROM table_name WHERE district='$district' AND state='$state'";
$result = mysqli_query($con,$sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$id = $row['id'];
$district = $row['district'];
$locality = $row['locality'];
$state = $row['state'];
$iso = $row['iso'];
}
?>
Pada halaman distrik yang sama, kode di bawah ini digunakan untuk menghasilkan URL bersih dari lokasi terkait:-
<a href=\"/".str_replace($remove, "-", clean(strtolower($row['locality'])))."-".$row['id']."\">" . $row["locality"]. "</a>
Kode di atas menghasilkan URL ke semua halaman lokalitas dengan cara "url-halaman-lokalitas-dengan-nomor-id-dekode" di halaman distrik.
Di bawah ini adalah kode locality.php tempat saya mencoba menerapkan fungsi bersih yang sama ke variabel $_GET untuk mendapatkan URL yang bersih
<?php
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
$string = preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one.
return $string;
}
include($_SERVER['DOCUMENT_ROOT'].'/database-path.php');
$locality = clean($_GET['locality']);
$localID = base64_decode($_GET['id']) ;
$sql="SELECT * FROM table_name WHERE locality='$locality' AND id='$localID'";
$result = mysqli_query($con,$sql);
$rowcount=mysqli_num_rows($result);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$locality = $row['locality'];
$content = $row['content'];
$district = $row['district'];
$state = $row['state'];
$iso = $row['fld_iso'];
}
}
?>
kode htaccess :-
RewriteRule ^([^/]*)-([^/]*)$ locality.php?locality=$1&id=$2 [L]
Sekarang masalah yang saya hadapi adalah $locality = clean($_GET['locality']);
tidak berfungsi di sini dan kembali ke kesalahan 404. Nilai lokalitas tidak dibersihkan. Ketika saya mencoba hal yang sama secara manual setelah menghapus fungsi bersih dari variabel $_GET menggunakan semua karakter yang tersedia di lapangan, itu berfungsi dengan baik. Apakah ada cara agar saya dapat menggunakan ID sebagai variabel utama untuk mendapatkan nilai baris yang memiliki nilai bersih lokalitas di URL halaman?
http://domainname.com/text-text-text-Mjk2
Ini adalah URL yang sudah dibersihkan. Versi yang tidak bersih adalah :-http://domainname.com/text.-&-text-text-Mjk2
- person Vikas Kukreja   schedule 01.10.2017RewriteRule ^([^/]*)-([^/]*)$ locality.php?locality=$1&id=$2 [L]
seperti yang Anda katakan, file kedua adalahlocality.php
- person vnt   schedule 01.10.2017