2014-04-20 3 views
-1

은 내가파일 업로드가 작동하지 PHP

"경고 아래의 코드를 아래의 오류 MSG를 얻을 :는 mysql_real_escape_string() [리얼 탈출 문자열이 function.mysql] : 액세스가 사용자 stthohuu '거부 @' '로컬 호스트 (암호를 사용하여 : NO) /home/stthohuu/public_html/forms/upload_newsletter.php에 라인 31 일 "

당신은 저를 인도하여 주시기 바랍니다 수 있습니다 .. 파일 업로드 과정을 인식하지입니다 .. 당신의 제안을 공유하시기 바랍니다

<html> 
<head></head> 
<body> 
<form method="post" enctype="multipart/form-data"> 
<table width="350" border="0" cellpadding="1" 
    cellspacing="1" class="box"> 
<tr> 
    <td><h4>Please select a file</h4></td></tr> 
<tr> 
<td> 
<input type="hidden" name="MAX_FILE_SIZE" 
    value="16000000"> 
<input name="userfile" type="file" id="userfile"> 
</td> 
<td width="80"><input name="upload" 
    type="submit" class="box" id="upload" value=" Upload "></td> 
</tr> 
</table> 
</form> 
    <a href="newsletter_sec.php">Back</a> 
</body> 
</html> 
<?php 
if(isset($_POST['upload'])&&$_FILES['userfile']['size']>0) 
{ 
$fileName = $_FILES['userfile']['name']; 
$tmpName = $_FILES['userfile']['tmp_name']; 
$fileSize = $_FILES['userfile']['size']; 
//$fileType = $_FILES['userfile']['type']; 
$fileType=(get_magic_quotes_gpc()==0 ? mysql_real_escape_string(
$_FILES['userfile']['type']) : mysql_real_escape_string(stripslashes ($_FILES['userfile']['name']))); 
$fp  = fopen($tmpName, 'r'); 
$content = fread($fp, filesize($tmpName)); 
$content = addslashes($content); 
fclose($fp); 
if(!get_magic_quotes_gpc()) 
{ 
    $fileName = addslashes($fileName); 
} 
$con = mysql_connect('localhost', 'stthohuu_batch', 'abc') or die(mysql_error()); 
$db = mysql_select_db('stthohuu_church', $con); 

/* identify the max id in existing data*/ 


$max_id[0]=''; 
$sql="SELECT id FROM newsletter WHERE id=(SELECT max(id) FROM newsletter)"; 
$result = mysql_query($sql); 
$max_id = mysql_fetch_array($result); 

if ($max_id[0]=='') 
{ 
    $max_id[0]=0; 
} 
$id=0; 
$id=$max_id[0]+1; 

/* to insert data into newsletter table */ 

if($db){ 
$query = "INSERT INTO newsletter (name, size, type, content) ". 
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')"; 
mysql_query($query) or die('Error, query failed'); 
mysql_close(); 
echo "<br>File $fileName uploaded<br>"; 
}else { echo "file upload failed"; } 
} 
?> 

로컬 xampp에서 잘 작동합니다. 그러나 웹 서버에는 없습니다. :(

답변

3

MySQL 연결에 문제가 있습니다. MySQL 연결을 열기 전에 mysql_real_escape_string()을 제거하십시오. 일반적으로 웹 서버에는 로컬 xampp 계정의과 다른 사용자 이름 및 암호 이 있습니다. 그들을 변경하십시오.

또한 mysql_* 기능을 사용하지 말고 mysqli_* 또는 PDO으로 바꾸는 것이 가장 좋습니다.

+1

완벽한 .. +1. 또한 사용되지 않는 알림. –

0

서버 데이터베이스 설정을 사용해야합니다. 서버 데이터베이스에는 'localhost'를 사용할 수 없습니다. 더 많은 서버의 경우 데이터베이스 IP입니다. 자세한 내용은 서버 관리자에게 문의하십시오.

+0

많은 웹 서버가 이제'localhost' 만 사용합니다! : P –

+1

이 경우 귀하의 암호 또는 사용자가 잘못되었습니다. –

관련 문제