PDA

View Full Version : مشکل با دستور if(!isset



saeidkhphp
جمعه 14 آذر 1393, 22:44 عصر
سلام دوستان ببخشید اگه سوالم مبدتیانه هست ، در حال آموزش php بودم که به این مشکل در ساخت فرم آپلود برخوردم و تنها ایرادم بر همون علامت نقض ! هست که پشت isset اومده ، یعنی از لحاظ منطقی به نظرم نباید باشه .
در واقع تو کدی که براتون میذارم پایین مشکل دارم اینه که میگه تو خط اول شرط اگه myfile رو نگرفت حالا برو سراغ آپلود کردنش !!! من با این مشکل دارم دقیقن در صورتی که در عمل هم همین کد درسته و اگه علامت ! رو بردام اشتباه میشه !ا
این هم کدش :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>uploader</title>
</head>
<form action="uploader.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" />
<br /><hr />
<input type="submit" value="Upload" />
</form>

<body>
</body>
</html>




اینم کد php ش‌:


<?php
if(!isset($_POST['myfile']))
{
if($_FILES['myfile']['error']==0)
{
$name=$_FILES['myfile']['name'];
$address=$_FILES['myfile']['tmp_name'];
move_uploaded_file($address,"c:/".$name);
$size=$_FILES['myfile']['size'];
echo $size." Byte";
echo "<br>";
echo "Uploading Compeleted";

}
else
{
echo "Upload not Compeleted";
}
}
else
{
echo header("location:formupload.html");
}
?>


ولی مثلن تو یه مثال زیر دیگه دقیقن برعکس بالاس و چیزی که من فکر میکنم باید باشه اجرا شده که کدش رو براتون میذازم و درست اجرا میشه ، نمیدونم اون قبلی چرا این طور نیست اینم کد این :





<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" />
<TITLE>$name</TITLE>
</HEAD>
<form method="get" action="">
TextName: <input type="text" name="txtname" />
<input type="submit" value="Make your New Text!" />
</form>
<br />
<form method="post" action="">
WriteText: <input type="text" name="newname" />
<input type="submit" value="Write texts!" />
</form>
<br />
<form method="get" action="">
ReadText : <input type="text" name="readtext" />
<input type="submit" value="Enter name of text!!" />
</form>

<?php
if(isset($_GET['txtname']))
{
global $tn;
$tn=$_GET['txtname'];
$new=fopen("$tn.txt","w");
fclose($new);
if(!$new) die("Cant make your Text file");
}
?>
<BODY>
</BODY>
</HTML>



ممنون میشم کمکم کنید ، در ابتدای راهم :)

مهرداد سیف زاده
جمعه 14 آذر 1393, 22:48 عصر
یکم شرطهای شما اشتباه بود که باید بصرت زیر نوشته بشه


<?php
if(isset($_FILES['myfile']))
{
if($_FILES['myfile']['error']!=0)
{
$name=$_FILES['myfile']['name'];
$address=$_FILES['myfile']['tmp_name'];
move_uploaded_file($address,"c:/".$name);
$size=$_FILES['myfile']['size'];
echo $size." Byte";
echo "";
echo "Uploading Compeleted";

}
else
{
echo "Upload not Compeleted";
}
}
else
{
echo header("location:formupload.html");
}
?>


در ابتدا شما داشتید وجود مقدار POST رو برای myfile چک میکردید در صورتی که این مقدار داره بصورت FILE میاد و همچنین در خط بعدش دارید میگید اگر مقدار FILES دریافت شده دارای خطا بود ( $_FILES['myfile']['error']==0) اونوقت برو برای پردازش در صورتی که شما باید چک کنید اگر خطا نداشت و مخالف error بود بره برای پردازش.

ashkufaraz
جمعه 14 آذر 1393, 22:48 عصر
کد اولی ارسال داده به صورت POST و دومی به صورت GET
isset یعنی متغیر مقدار دهی شده یا نه؟
if(!isset()) i هم یعنی وقتی داخل if اجرا بشود که هیچ مقدار دهی انجام نشده است

saeidkhphp
جمعه 14 آذر 1393, 23:05 عصر
ممنون مهرداد جان بابت جواب و سرعت عمل بالاتون ، ولی این کد رو از یه کتاب آموزشی نوشتم و تست هم که کردم جواب میده واقعن !! خودم هم تعجب کردم ، بعد یه سوال دیگه تو اون فرم html متد رو به صورت post تعریف کردیم این ربطی به داخل شرط نداره که بگیم
if(isset($_post['myfile'])

بعدش من کد شما رو الان تست کردم باز ارور دارد اینم ارورش هست میشه باز لطف کنید کمک کنید

[CODE][ Parse error: syntax error, unexpected end of file in C:\wamp\www\uploader.php on line 29/CODE]

اینم کد شما :

<?php
if(isset($_FILES['myfile']))
{
if($_FILES['myfile']['error']!=0)
{
$name=$_FILES['myfile']['name'];
$address=$_FILES['myfile']['tmp_name'];
move_uploaded_file($address,"c:/".$name);
$size=$_FILES['myfile']['size'];
echo $size." Byte";
echo "Uploading Compeleted";
}
else
{
echo "Upload not Compeleted";
}
}
else
{
echo header("location:formupload.html");
{
?>

بازم ببخشید دوباره که کدتون رو عینا وارد کردم دیگه ارور نداد ولی هر چی فایل آپلود میشه میگه not compelted دیگه او ن قسمت آپلود رو شرطش رو رد میکنه اصلن !

مهرداد سیف زاده
جمعه 14 آذر 1393, 23:18 عصر
خط 21 آکولاد درست بسته نشده بصورت زیر بنویسید


<?php
if(isset($_FILES['myfile']))
{
if($_FILES['myfile']['error']!=0)
{
$name=$_FILES['myfile']['name'];
$address=$_FILES['myfile']['tmp_name'];
move_uploaded_file($address,"c:/".$name);
$size=$_FILES['myfile']['size'];
echo $size." Byte";
echo "Uploading Compeleted";
}
else
{
echo "Upload not Compeleted";
}
}
else
{
echo header("location:formupload.html");
}
?>

ashkufaraz
جمعه 14 آذر 1393, 23:22 عصر
این خطا وقتی تولید می شه که مثلا تعداد براکت های باز و براکت های بسته یکسان نباشه یعنی یکسی جا افتاده تو این کد که مشکلی نداره توی کد های دیگه خودتون هست این خطا

saeidkhphp
جمعه 14 آذر 1393, 23:29 عصر
آکلاد آخری رو درستش کرده بودم باز ارور بود مشکل همون دو تا مساوی بود
متوجه اشکال شدم ، تو این خط باید 2 تا مساوی بذاریم بدون علامت نقض این شکلی درست شدش :
if($_FILES['myfile']['error']==0)
در واقع معنی میشه اگه خطاش صفر بود یا خطایی نداشت برو خط بعد که اپلوده ، ممنون باز از راهنماییاتون
واقعن تو اون اولش گیر داشتم
ممنون

saeidkhphp
جمعه 14 آذر 1393, 23:51 عصر
خیلی خوشحالم که یه صفحه آپلود رو به کمکتون ساختم ، ( و البته کمک خودم :))))‌ ) یه جستجوی سطحی کردم تو سایت ولی هیچ تاپیکی برا خود html نیست انگار ، دوستان میشه کتابی ( پی دی اف مجانی ) یا یه حداقل هایی در حد چند خط توضیح بدید که رابطه html با php باشه ، مثلن در مثال آپلود بالا من هنوز تو اون فرم متد موندم که جرا از نوع پست هست و چرا چیز دیگه نمیتونه باشه؟؟ چون تو dreamwiever چیزای زیادی میاد !! یا مثلن چجوری کلید برای خروج از صفحه یا ورود به یه صفحه بذاریم با html که به php هم مربوط بشه ،در همین حد میخام بدونم فقط نه که تخصصی بخوام html یاد بگیرم !چون کتاب واسش زیاده ! ببخشید که این پست نامربوط رو اینجا زدم چون ما اکثرت php کارید و html رو در حد نیاز حتمن بلدین اگه بیشتر بلد نباشید !!!! ممنون

ashkufaraz
شنبه 15 آذر 1393, 00:02 صبح
Get می تونه کش بشه توی history مروگر میمونه اینکه طولش فکر کنم 2k هست
Post کش نمیشه محدودیت طول نداره و
التبه نوع های دیگه ای هم مثل option , head,delete هم داریم
برای ورود به صفحه مثلا می تونی مقداری داخل Session قرار بدی و هنگامی که دکمه خروج رو زد اون مقدار را از session پاک کنی