저는 프로그래밍을 배우기를 희망합니다. 나는 PHP를 선택하고 4 판 Oreilly와 함께 작업했습니다. 첫 번째 주요 프로그램을 이해하려고합니다. 나는 그것이 매우 간단하다고 확신하지만 나는 한 부분을 이해하지 못한다. 난 관련 비트 약간 간략화 프로그램의 다음 부분에서 :
$conn = new mysqli(parameters to connect to database)
$stuff = get_post($conn, 'stuff')
$query = "INSERT INTO table VALUES" . "('$stuff')"
$result = $conn->query(query)
Function get_post($conn, $var)
Return $conn->real_escape_string($_POST[$var])
를 I는 악의적 사용자 입력 해킹을 방지하는 방법을 이해. 내가 이해하지 못하는 부분은 왜 사용자 입력 양식이 들어있는 $_POST
이 데이터베이스에 들어가기 전에 데이터베이스의 속성으로 취급 되는가입니다. (마지막 줄에서) 나는 물건들이 데이터베이스에 들어가기 전에 제거 될 것이라고 생각했다. 나는 아주 기초적인 무언가를 여기에서 놓치고있다라고 확신한다. 그래서 나는 누군가 이것이이 작용 방식을 설명 할 수 있기를 바란다.
기본적으로 나는 이 $conn
의 속성이되는 방법을보기 위해 고심하고 있습니다. 아무도 그것을 통해 나를 걸을 수 있습니까?
어떤 도움을 주셔서 감사합니다.
$conn = new mysqli(parameters to connect to database)
을이 라인, 당신은 MySQL 데이터베이스와 상호 작용 객체를 생성 :
더 나은 방법이 있습니다. [이스케이프 문자열] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real- 이스케이프 문자열)은 안전하지 않습니다! [믿지 마시오?] (http://stackoverflow.com/q/38297105/1011527) [MySQLi] (http : //www.wikipedia.org/wiki/Prepared_statement)에 대한 [준비된] 문장에 대해 알아보십시오. : //php.net/manual/en/mysqli.quickstart.prepared-statements.php). –
나는 당신이 무슨 일이 일어나고 있는지에 대해 약간의 오해가 있다고 생각합니다, 크리스. '$ conn'의 속성으로'$ _POST'를 어디에서 보십니까? – CollinD
안녕하세요. 네, 더 나은 방법은 다음 장에서 다룹 니다만, 나는 앞장서 기 전에 안전하지 않은 간단한 방법으로 무슨 일이 벌어지고 있는지 이해하려고 노력하는 초심자입니다.내 혼란은 Return $ conn-> real_escape_string ($ _ POST ($ _ POST [$ var])입니다. 만약 내가 $ conn -> ($ _ POST [$ var])를 반환하는 것이 단순화한다면, 나는 화살표가 의미하는 것으로 혼란스러워 할 것입니다. – Chris