2013-05-19 4 views
0

나는 SEO 친화적 인 사이트를 만들려고합니다. URL에 product.php?id=4과 같은 ID가 표시되기 때문에 페이지가 작동하지만 product_name으로 바꾸려면 여기를 클릭하십시오. 그러나이 값에 공백이 포함될 수 있으므로 URL은 product.php?product_name=fence%20panel처럼 보이지만이 때문에 작동하지 않습니다. 이 GET 변수를 사용하여 데이터베이스에서 제품 세부 사항을 조회합니다.이 때 GET 변수는 한 단어이므로 제품을 찾을 수 없습니다. 그래서 내가 필요하다고 생각하는 것은 하이픈을 추가하는 변수이므로 product.php?product_name=fence-panel이 하이픈을 다시 공백으로 변경하는 변수입니다. 내가 rawurlencode()rawurldecode() 사용공백을 URL의 하이픈으로 바꿉니다.

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(); 
} 
+1

이것은 해커에게 호의적입니다. –

+0

@marabutt는 자세히 설명해 주시겠습니까? – jhetheringt7

+0

은 SQL 인젝션에 열려 있습니다 –

답변

2

틀렸다면 정정 해줘. 예제는 the PHP documentation을 참조하십시오. 하이픈을 추가하지는 않지만 원하는대로 할 수 있습니다. 하이픈을 추가하려면 인코딩 후 다음을 시도해보십시오. $str = str_replace('-', '%2D', $str);. 그리고 아마도 다시 한 번 해독하고 두 개의 첫 번째 매개 변수를 디코딩하기 전에 교환해야합니다!

관련 문제