واقعا کسی نیست کمکم کنه توی این سایت به این بزرگی ؟؟
برای بار دوم:
دوستان و اساتید محترم من یه کد واسه آپلود عکس نوشتم و درکنارش یه سری اطلاعات هم باید ثبت بشه. خیلی از خطاها رو چک کردم ولی متاسفانه درنهایت اگر خطایی توآپلود عکس باشه بازهم اطلاعات ثبت میشه. خواهشا ایراد کارم رو بگید و درکل هرجای کدم ایرادی هست بگید درستش چیه!
سورس برنامه :
<?phpif (isset($_POST['code'])) { $code = $_POST['code']; $fname = $_POST['fname']; $lname = $_POST['lname']; $num = $_POST['num']; $tmp = $_FILES['file']['tmp_name']; $filename = $_FILES['file']['name']; $path = "files"; //-------------تعیین فرمت و اندازه تصویر--------------------- $filetype = array("jpg", "jpeg", "gif", "png"); $fieExt = explode(".", $_FILES['file']['name']); $type = end($fieExt);
if ((!$_FILES['file']['type'] == "image/jpg") || (!$_FILES['file']['type'] == "image/jpeg") || (!$_FILES['file']['type'] == "image/gif") || (!$_FILES['file']['type'] == "image/png") && (!in_array($type, $filetype))) { echo "پسوند فایل معتبر نیست" . ""; } else if ($_FILES['file']['size'] > 100000) { echo "حجم فایل باید کمتر از 100 کیلوبایت باشد!" . ""; } else{ move_uploaded_file($tmp, "$path/$filename"); echo "<img src=\"".$path."/".$filename."\" width='300' height='300' />"; } if (empty($code) || empty($fname) || empty($lname) || empty($num)) { echo "فیلدها را پر کنید!" . ""; } $qr = "SELECT * FROM person WHERE code=$code"; $res = mysql_query($qr, $cn); if (mysql_num_rows($res)> 0) { echo "کد ملی قبلا ثبت شده" . ""; } else if (strlen($code)!=10) { echo "کد ملی باید 10 رقم باشد!" . ""; } else { $qr1 = "INSERT INTO person (code, fname,lname, num, filename, filepath) VALUES ('$code','$fname','$lname','$num','$filename','$pa th')"; mysql_query($qr1, $cn); echo "اطلاعات ثبت گردید." . ""; }}?>
نقل قول: واقعا کسی نیست کمکم کنه توی این سایت به این بزرگی ؟؟
<?php
$code = isset($_POST['code'])?$_POST['code']:null;
$fname = isset($_POST['fname'])?$_POST['fname']:null;
$lname = isset($_POST['lname'])?$_POST['lname']:null;
$num = isset($_POST['num'])?$_POST['num']:null;
$path = "files";
$filename = isset($_FILES['file'])?$_FILES['file']['name']:null;
if(!$code || !$fname || !$lname || !$num)
{
echo '.... باید پر شوند';
return;
}
if(!$filename)
{
echo 'خطا در فایل';
return;
}
/**
* File check and upload
*/
$type = $_FILES['file']['type'];
$valid_type = array('image/jpg','image/jpeg','image/gif','image/png');
if(!in_array($type, $valid_type))
{
echo 'فرمت نت معتبر';
return;
}
if($_FILES['file']['size'] > 100000)
{
echo "حجم فایل باید کمتر از 100 کیلوبایت باشد!";
return;
}
move_uploaded_file($_FILES['file']['tmp_name'], "$path/$filename");
/**
* saved fname,lname,code,num to database
*/
$qr = "SELECT * FROM person WHERE code=$code";
$res = mysql_query($qr, $cn);
if (mysql_num_rows($res) > 0) {
echo "کد ملی قبلا ثبت شده" . "";
} else if (strlen($code) != 10) {
echo "کد ملی باید 10 رقم باشد!" . "";
} else {
$qr1 = "INSERT INTO person (code, fname,lname, num, filename, filepath) VALUES ('$code','$fname','$lname','$num','$filename','$pa th')";
mysql_query($qr1, $cn);
echo "اطلاعات ثبت گردید." . "";
}
نقل قول: واقعا کسی نیست کمکم کنه توی این سایت به این بزرگی ؟؟
بنظر من از تراکنش استفاده کن اول تراکنش باز بشه بعد با فایل عکس یا ویدیو هرکاری دوست داری انجام بده بعدش توی شرط بررسی کن اگر کار درست اجام شد commit و الا rolback
نقل قول: واقعا کسی نیست کمکم کنه توی این سایت به این بزرگی ؟؟
نقل قول:
نوشته شده توسط
charcharkh
بنظر من از تراکنش استفاده کن اول تراکنش باز بشه بعد با فایل عکس یا ویدیو هرکاری دوست داری انجام بده بعدش توی شرط بررسی کن اگر کار درست اجام شد commit و الا rolback
واقعا گذاشتن else , if های تودرتو خیلی سخته بخصوص گذاشتن { برای بستن بلاک ها باید خیلی دقیق باشه. کد رو به این شکل تغییر دادم درست شد :
<?php
if (isset($_POST['code'])) {
$code = $_POST['code'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$num = $_POST['num'];
$tmp = $_FILES['file']['tmp_name'];
$filename = $_FILES['file']['name'];
$path = "files";
$filetype = array("jpg", "jpeg", "gif", "png");
$fieExt = explode(".", $_FILES['file']['name']);
$type = end($fieExt);
if (!empty($code) && !empty($fname) && !empty($lname) && !empty($num)) {
if (strlen($code) == 10) {
$qr = "SELECT * FROM person WHERE code=$code";
$res = mysql_query($qr, $cn);
if (!mysql_num_rows($res) > 0) {
if ((($_FILES['file']['type'] == "image/jpg")
|| ($_FILES['file']['type'] == "image/jpeg")
|| ($_FILES['file']['type'] == "image/gif")
|| ($_FILES['file']['type'] == "image/png"))
&& ($_FILES['file']['size'] < 100000) && in_array($type, $filetype))
{
move_uploaded_file($tmp, "$path/$filename");
echo "<img src=\"" . $path . "/" . $filename . "\" width='300' height='300' />"."<br>";
$qr = "INSERT INTO person (code,fname,lname,num,filename,filepath) VALUES ('$code','$fname','$lname','$num','$filename','$pa th')";
mysql_query($qr, $cn);
echo "اطلاعات ثبت گردید." . "<br/>";
} else {
echo "پسوند فایل معتبر نیست" . "<br/>";
echo "حجم فایل باید کمتر از 100 کیلوبایت باشد!" . "<br/>";
}
} else {
echo "کد ملی قبلا ثبت شده" . "<br/>";
}
} else {
echo "کد ملی باید 10 رقم باشد!" . "<br/>";
}
}
else {
echo "فیلدها را پر کنید!" . "<br/>";
}
}
?>