본문 바로가기
MySql

MySQL PHP에서 URL 매개 변수를 사용하는 MySQL 쿼리

by 베이스 공부 2020. 12. 8.
반응형

우선 PHP를 처음 시도해 보았습니다 ..

다음은 코드입니다.

<?php
if (isset($_GET['name']) && isset($_GET['password']) 
$uname = $_GET['name'];
$pass = $_GET['password'];
$conn = mysql_connect("localhost","DBusername","DBpassword");
mysql_select_db("DBname",$conn);
$result = mysql_query("SELECT * FROM table WHERE username=$uname and password =$password");
$row  = mysql_fetch_array($result);
if(is_array($row)) {
$ip = $row[ip];
 echo $ip ;
}else {
echo = "Invalid Username or Password!";
}
?>


이것은 숨겨진 페이지입니다. 사용자가 기록 된 회원의 IP 주소를 가져 오는 데 사용합니다. C #으로 작성된 Windows Form 응용 프로그램에 로그인하려고합니다.

항상 빈 페이지를 가져옵니다 ..

미리 감사드립니다

 

해결 방법

 

변수를 작은 따옴표로 묶고 그림과 같이 끝에 die (mysql_error ()); 를 추가합니다.

$result = mysql_query("SELECT * FROM `dvtmembers` WHERE username='$uname' and password ='$pass'") or die(mysql_error());

경고 : 코드가 SQL 주입 공격에 노출되어 있습니다.

기타 주요 오류.

<?php
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);

if (isset($_GET['name']) && isset($_GET['password']))
{
$conn = mysql_connect("localhost","DBusername","DBpassword");
mysql_select_db("DBname",$conn);
$uname = mysql_real_escape_string($_GET['name']);
$pass = mysql_real_escape_string($_GET['password']);
$result = mysql_query("SELECT * FROM table WHERE username='$uname' and password ='$pass'") or die(mysql_error());
$row  = mysql_fetch_array($result);
if(is_array($row)) {
    $ip = $row['ip'];
    echo $ip ;
}else {
    echo "Invalid Username or Password!";
}
}
else { echo "Name and Password was not passed !";}
?>

이 ( mysql _ * ) 확장은 PHP 5.5.0 부터 더 이상 사용되지 않으며 향후 제거 될 예정입니다. 대신 MySQLi 또는 PDO_MySQL 확장을 사용해야합니다. PreparedStatements 로 전환하는 것이 SQL Injection 공격을 막는 데 훨씬 더 좋습니다!

 

참조 페이지 https://stackoverflow.com/questions/22600728

 

 

반응형

댓글