누구든지 도움을 줄 수있다. 내부 보안 메시징 서비스를 위해 PHP에 전달 된 값에 mysql_real_escape_string을 사용하여 보안을 강화하려고 시도하고 있지만 값이 데이터베이스에 삽입되지 않아 어딘가에서 구문을 잘못 가져야합니다. 나는 튜토리얼, 도움 등을 둘러 보았지만 올바르게하기 위해 애를 썼다.mysql_real_escape_string으로 고생하다
내가 사용하는 코드는 다음과 같습니다. 이스케이프되지 않은 값 ($ email, $ from, $ time)은 올바르게 입력되었지만 다른 값은 그냥 공백으로 입력됩니다.
<?php
session_start();
$conn = mysqli_connect('localhost', 'username', 'password', 'dbname');
$email=$_SESSION['email'];
$to = $_POST ['touser'];
$toemail = $_POST['touseremail'];
$from = $_SESSION['name'];
$message = $_POST['message'];
$subject = $_POST['subject'];
$time = time();
$query ="INSERT INTO messages
(to_user, to_email, subject, message, from_user, from_email, daterecord)
VALUES (
'" . mysql_real_escape_string($conn, $to) . "',
'" . mysql_real_escape_string($conn, $toemail) . "',
'" . mysql_real_escape_string($conn, $subject) . "',
'" . mysql_real_escape_string($conn, $message) . "',
'$from', '$email', '$time')";
$send = $conn -> query($query);
echo "Message sent!";
?>
보안 강화 = mysql_real_escape_string을 사용하지 않고 [* prepared statements *] (http://j.mp/T9hLWi)를 사용하십시오. – Kermit
이 함수는 더 이상 사용되지 않습니다. 사용하지 마십시오. – meagar
[MySQL] (http://www.php.net/manual/en/book.mysql.php) ≠ [MySQLi] (http://www.php.net/manual/en/book.mysqli.php) – Gumbo