2011-10-13 5 views
0

SESSION 변수가 데이터베이스에 추가되지 않는 이유는 무엇입니까? 사용자 이름이 아닌 점수 값만받습니다. 참고 : 세션 변수는 다음과 같이 정의된다 :내 데이터베이스에 추가되지 않는 이유는 무엇입니까?

$_SESSION['username'] = $_POST[username]; 

이 내가에 문제가하고있는 부분입니다 :

session_start(); 
$user = $_SESSION['username']; 
$con = mysql_connect("something.hosting.com","username","password"); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("quiz", $con); 

$sql=" 
INSERT INTO members (
    Name, Score 
) VALUES (
    '$user', '$max_value' 
) 
"; 

if (!mysql_query($sql,$con)) 
{ 
    die('Error: ' . mysql_error()); 
} 

echo "1 record added"; 

mysql_close($con); 
  1. 예, 세션을 시작했다.
  2. 변수를 두 번째 페이지에 에코하려고하면 올바르게 출력됩니다.
  3. 는 mysql을 내가 잘못 $ _SESSION [ '사용자 이름'] 설정하는 생각
+0

당신이''으로 session_start와 세션을 시작해야한다()''는''$ _SESSION'' 변수를 할당하기 전에? – CheeseSucker

+0

SQL을 반향 출력 한 다음 직접 실행하려고하면 오류가 발생합니까? – sdleihssirhc

+3

SQL 인젝션을 방지하기 위해 입력 변수를 이스케이프해야합니다. '$ user = mysql_real_escape_string ($ _ SESSION [ 'username']);'' – CheeseSucker

답변

0

을 탈출하려고했다. $ _POST 값을 가져올 때 따옴표를 생략했습니다.

$_SESSION['username'] = $_POST[username]; 

$_SESSION['username'] = $_POST['username']; 
+1

PHP는'username'을 그 문맥에서 문자열 리터럴로 해석하지 않을 것인가? http://codepad.org/DZvjCUtX (좋은 생각이라고 말하는 것은 아니지만 올바르게 작동해야합니까?) –

+0

변경하면이 오류가 발생합니다. 서버에서 예기치 않은 조건이 발생하여 실행되지 못했습니다. 요청. 스크립트에 오류가 있거나 출력이 생성되지 않았습니다. 오류가있는 경우, 오류 로그에서이를 볼 수 있어야합니다. –

+0

나는 그 일을 전에 본적이 없다. 나는 사용자 이름을 문자열로 해석 할 수있는 기능을 전혀 모르고있다. 링크를 가져 주셔서 감사합니다. 그게 효과가있는 것 같아요, 아마 사용하지 않는 것이 좋을지도 몰라요. – Kibbee

관련 문제