2010-03-02 4 views
0

저는 초보자입니다. 내 코드에 무슨 문제가 있습니까?이를 실험하기 위해 만들 예정인 웹 페이지가 mysql 인젝션에 취약하지 않을 것입니다. 여기 mysql 인젝션 증명 스크립트를 만들려고 시도합니다.

<?php 



$host="localhost"; 
$username="root"; 
$password=""; 
$db_name="testing"; 
$tbl="hospital"; 

$connection=mysql_connect($host, $username, $password) or die("cannot connect!"); 
mysql_select_db($db_name, $connection) or die("cannot select db!"); 


    $LASTNAME = $_POST[lname]; 
    $FIRSTNAME = $_POST[fname]; 



    $FIRSTNAME=(isset($_POST['fname']||trim($_POST['fname'])=="")?die('Error:Enter Firstname!') 
                     mysql_escape_string(trim($_POST['fname'])); 




     $sqlque="INSERT INTO hospital (LASTNAME, FIRSTNAME) 
     VALUES ('$LASTNAME', '$FIRSTNAME')"; 






if (!mysql_query($sqlque,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "<script>alert('Record successfully added!')</script>"; 



mysql_close($con) 


?> 

오류입니다, 도와주세요, 감사 :이 일을의 올바른 방법은 무엇입니까

Parse error: parse error, expecting `','' or `')'' in C:\wamp\www\sql injection check\aisaction.php on line 20 
+0

첫 번째 발행물에는 괄호가 없습니다. (isset ($ _ POST [ 'fname'] **) ** || trim ($ _ POST [ 'fname']) == "") –

답변

1

가 다이 후 : ('오류! : FIRSTNAME을 입력')가 누락

1

이 질문에 관해 알려준 사람을위한 업데이트입니다. 현재 선호되는 방법은 PDO http://php.net/manual/en/book.pdo.php과 준비된 문장을 사용하는 것입니다.

특히 MySQL 확장은 더 이상 지원되지 않거나 곧 PHP에서 지원되지 않을 예정입니다. PDO는 MySQL 또는 MySQLi보다 이식성이 뛰어납니다.

$db = new PDO(/*connection info*/); 
$sql = "SELECT * FROM tbl WHERE condition1 = :param1 AND condition2 = :param2"; 

$stmt = $db->prepare($sql); 
$stmt->bindValue(":param1", 10); 
$stmt->bindValue(":param2", "banana"); 

$stmt->execute(); 
관련 문제