2015-02-06 65 views
1
<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 2000000) 
&& in_array($extension, $allowedExts)) 
{ 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
} 
else 
    { 
    $imagepath = "propertyimages/".(rand()) . $_FILES["file"]["name"]; 
    move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath); 

    $db = pg_connect("host=localhost port=5432 dbname=ohms user=postgres password=padmin"); 
    $s="select dcode from dept where dname='$_POST[select]'"; 
     $s1=pg_query($s); 
    $row=pg_fetch_array($s1); 
    $row[0]; 
    $r = pg_fetch_row($s1); 
    $query = "INSERT INTO nsr VALUES ('$_POST[text1]','$_POST[text2]', 
    '$_POST[textarea]','$row[0]','$_POST[textfield3]', '$_POST[text5]','$_POST[text6]','$_POST[text7]','$_POST[text8]','$_POST[textfield]','$_POST[text10]','$_POST[ref_phno]','$d','".$imagepath."')"; 
    $result = pg_query($query); 
}} 

tish是註冊page.user甘蔗的代碼與image.here用戶提交數據可以提交各種圖片擴展名。但想要插入thost圖片,其內容是圖片..不是帶.jpg擴展名的txt如何做到這一點。請幫助用戶可以與photo.But提交數據在這裏,我無法檢查圖像content.how與MIME這裏檢查

+0

你很容易遭受[sql注入攻擊](http://bobby-tables.com)。一般來說,你不**需要將原始二進制圖像數據保存在你的數據庫中。有很少的使用案例證明它是正確的,許多使它成爲一大痛苦。 – 2015-02-06 19:05:12

回答

1

您可以使用PHP中的getimagesize函數。如果文件是有效的圖像,前兩個參數將是寬度/高度。你可以檢查這些數字是否可以接受(例如,這將接受寬度/高度在128-2048像素之間)。

move_uploaded_file後,插入此代碼:

$arr = getimagesize($imagepath); 
if($arr[0] >= 128 && $arr[1] >= 128 && $arr[0] <= 2048 && $arr[1] <= 2048) 
{ 
    // valid image 
} 
else 
{ 
    // error 
} 

注意:你應該使用內置pathinfo功能得到擴展:pathinfo($name, PATHINFO_EXTENSION)

相關問題