2011-02-14 6 views
-2

나는 사람들이이 일을 어떻게 막을 수 있는지 궁금합니다. blahblah.com/index.php?id=../../file.phpMySQL 행을 계산하여 사람들이 문자를 입력하지 못하도록 막으십시오.

나는 mysql 행을 세어서이 문제를 막을 수 있다고 들었다. ...?

+0

THRE이 질문에 많은 의미하지 않습니다. 이 'id'매개 변수의 유형은 무엇입니까? 그것이 데이터베이스의 숫자 식별자라면,'../../ file.php'는 해를 끼치 지 않을 것입니다. 행 수를 계산하는 것은 특히 여기에 할 일이 없습니다. 더 구체적인 질문을 할 수 있습니까? 지금 당장 문제가 있습니까? –

답변

0

당신은 다음을 수행 할 수 있습니다 : 그것은 (1)의 경우, 그렇지 않으면 요청

EDIT (예)에 문제가 유효한이다 id ']가 설정되지 않았거나 0 일 경우 "유효하지 않은 항목"이 표시됩니다. (INT)도 0

에 또 다른 솔루션을 문자열을 캐스팅합니다 :

<?php 
$id = isset($_GET['id']) ? $_GET['id'] : false; 

if ($id && is_numeric($id)) { 
    // run mysql query here 
} else { 
    echo 'Invalid item..'; 
} 
+0

정말 고마워요! – Hugo

+0

'if ($ id && is_numeric ($ id))':'is_numeric' 함수는 값이 정의되지 않은 경우에도 false를 반환합니다. 이중 체크가 필요 없음을 의미합니다. – 3rgo

+0

먼저 값이 설정되어 있는지 확인해야합니다. 그렇지 않으면 정의되지 않은 알림이 표시됩니다. –

1

당신은 단순히 $_GET['id']에 PHPs is_numeric을 사용하거나 번호로 ID를 강제 할 수

+0

그래서 if (is_numeric ($ _ GET [ 'id'])) 같은 무엇입니까? – Hugo

+1

** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **' 변수에. – wimvds

1
가 Nayena 말했듯이, 다음 행이 믿을 확인하기 위해 MySQL의 요청을 사용할 수있는 숫자 값이 있는지 먼저 확인하실 수 있습니다

이드. '

<?php 
$id = isset($_GET['id']) ? (int)$_GET['id'] : false; 

if ($id) { 
    // do your thing.. 
} else { 
    echo 'invalid item..'; 
} 

IF $ _GET [:

<?php 
if(is_numeric($_GET['id'])) 
{ 
    $id = $_GET['id']; 
    $count = mysql_result(mysql_query("SELECT COUNT(*) FROM table WHERE id=".$id)); 
    if($count == 1) 
    { 
     //Id is valid, moving on... 
    } 
    elseif($count == 0) 
    { 
     //Id doesn't exist, display error message 
    } 
    else 
    { 
     //Id exists more than 1 time, meaning there is a serious issue. 
     //Display error message or send email to webmaster 
    } 
} 
else 
{ 
    //Display error message (incorrect format for example) 
} 
?> 
+0

어떻게하는지 설명해 주시겠습니까? 나는 여전히 많은 학습자입니다. – Hugo

+0

예를 들어 편집 추가 – 3rgo

관련 문제