【问题标题】:Replace whitespace with hyphen in URL用连字符替换 URL 中的空格
【发布时间】:2013-05-19 09:08:56
【问题描述】:

我正在尝试创建一个对 SEO 友好的网站。目前页面可以工作,因为 id 显示在 URL 中,所以就像 product.php?id=4 但是我想用 product_name 替换 ID,但是这个值可以包含空格,所以 URL 看起来像 product.php?product_name=fence%20panel但这不起作用,因为我使用这个 GET 变量在我的数据库中查找产品详细信息,当它这样做时,它认为它是一个单词,所以没有找到产品。所以我认为我需要的是一个添加连字符的变量product.php?product_name=fence-panel,但也是一个将这个连字符改回空格的变量。如果我错了,请纠正我

if(isset($_GET['id'])){ 
$id = $_GET['id']; 
//Get the product if exists 
//if no product then give a message 
$sql = mysqli_query($myNewConnection, "SELECT * FROM products WHERE id='$id' LIMIT 1"); 
$productCount = mysqli_num_rows($sql); 
if ($productCount > 0) { 
    //get product details 
    while($row = mysqli_fetch_array($sql)){ 
        $product_name = $row["product_name"]; 
        $price = $row["price"]; 
        $details = $row["details"]; 
        $category = $row["category"]; 
        $date_added = strftime("%b %d, %Y", strtotime($row["date_added"])); 
        $_SESSION['product_price_array'] = $price; 
    } 
} else{ 
    echo "No Product in the system"; 
    exit(); 
} 

【问题讨论】:

  • 这是黑客友好的
  • @marabutt 需要详细说明吗?
  • 打开sql注入
  • @marabutt 是这样还是如果我改变它?
  • 原样。查看以$sql 开头的行。

标签: php get mysqli seo isset


【解决方案1】:

使用rawurlencode()rawurldecode()。有关示例,请参阅the PHP documentation。它不会添加连字符,但它会做你想要的。要添加连字符,您可以在编码后尝试执行以下操作:$str = str_replace('-', '%2D', $str);。你应该再做一次,在解码之前交换前两个参数!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    相关资源
    最近更新 更多