PDA

View Full Version : واقعا کسی نیست کمکم کنه توی این سایت به این بزرگی ؟؟



masoud399
پنج شنبه 26 آذر 1394, 10:34 صبح
برای بار دوم:

دوستان و اساتید محترم من یه کد واسه آپلود عکس نوشتم و درکنارش یه سری اطلاعات هم باید ثبت بشه. خیلی از خطاها رو چک کردم ولی متاسفانه درنهایت اگر خطایی توآپلود عکس باشه بازهم اطلاعات ثبت میشه. خواهشا ایراد کارم رو بگید و درکل هرجای کدم ایرادی هست بگید درستش چیه!
سورس برنامه :



<?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 "اطلاعات ثبت گردید." . ""; }}?>

مهرداد سیف زاده
پنج شنبه 26 آذر 1394, 11:19 صبح
<?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 "اطلاعات ثبت گردید." . "";
}

charcharkh
پنج شنبه 26 آذر 1394, 15:45 عصر
بنظر من از تراکنش استفاده کن اول تراکنش باز بشه بعد با فایل عکس یا ویدیو هرکاری دوست داری انجام بده بعدش توی شرط بررسی کن اگر کار درست اجام شد commit و الا rolback

masoud399
جمعه 27 آذر 1394, 19:59 عصر
بنظر من از تراکنش استفاده کن اول تراکنش باز بشه بعد با فایل عکس یا ویدیو هرکاری دوست داری انجام بده بعدش توی شرط بررسی کن اگر کار درست اجام شد 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/>";
}
}
?>