PDA

View Full Version : سوال: اجرا نشدن شرط if



css-man
چهارشنبه 30 فروردین 1391, 15:11 عصر
وقتی این صفحه رو تنهایی اجرا میکنم if اجرا میشه

یعنی چک میکنه که متغیر ها مقدار ندارن و پیغام لازم رو میده

ولی وقتی فرم رو بهش ارسال میکنم شرط ها اجرا نمیشن

یعنی اگر فرم خالی هم ارسال بشه ارور نمیده

چرا؟؟؟




<?php
if(isset($_REQUEST['name'])){
$name=$_REQUEST['name'];
}else{
$name=NULL;
echo "the name filds is empty";
}

if(isset($_REQUEST['email'])){

$mail=$_REQUEST['email'];
}else{
$mail=NULL;
echo "the email filds is empty, please fill it";
}

if(isset($_REQUEST['pass'])){
$pass=$_REQUEST['pass'];

}else{
$pass = NULL;
echo "the pass field is empty";
}
if(isset($_REQUEST['comments'])){

$comments=$_REQUEST['comments'];
}else{
$comments = NULL;
echo 'please write the comments in the below box';
}
echo "$name $mail $pass $comments";

?>




این هم فرم





<form action="handle.php" method="post">
<p>
<input name="name" type="text" />


</p>
<p>
<label for="textfield"></label>
<input type="text" name="email" id="textfield" />
</p>
<p>
<label for="textfield2"></label>
<input type="password" name="pass" id="textfield2" />
</p>
<p>
<label for="textarea"></label>
<textarea name="comments" id="textarea" cols="45" rows="5"></textarea>
</p>
<p>
<input type="submit" name="submit" id="button" value="Submit" />
</p>
</form>

djsaeedkhan
چهارشنبه 30 فروردین 1391, 15:16 عصر
سلام
به جای $_Request بنویس $_POST بعد تست کن

MMSHFE
چهارشنبه 30 فروردین 1391, 15:34 عصر
مشکل از اون نیست. البته من هم پیشنهاد میکنم از POST_$ استفاده کنید. اما معناش این نیست که مشکل شما استفاده از REQUEST_$ هست. پیشنهادی که گفتم بخاطر مسائل امنیتی هست ولی برای رفع مشکل باید دقت کنید که isset فقط چک میکنه ببینه متغیر وجود داره یا نه. وقتی فرم رو submit میکنید متغیرهای مربوطه توی POST_$ ایجاد میشن ولی اگه کادرهای متن رو خالی گذاشته باشین، توی متغیرها یک رشته خالی قرار میگیره. بهتره کد رو اینطوری اصلاح کنید:


<?php
if (isset($_POST['name']) && !empty($_POST['name'])) {
$name = $_POST['name'];
}
else {
$name = NULL;
echo '<p>The "name" field is empty.</p>'.PHP_EOL;
}

if (isset($_POST['email']) && !empty($_POST['email'])) {
$email = $_POST['email'];
}
else {
$email = NULL;
echo '<p>The "email" field is empty, please fill it.</p>'.PHP_EOL;
}

if (isset($_POST['pass']) && !empty($_POST['pass'])) {
$pass = $_POST['pass'];
}
else {
$pass = NULL;
echo '<p>The "pass" field is empty.</p>'.PHP_EOL;
}

if (isset($_POST['comments']) && !empty($_POST['comments'])) {
$comments = nl2br($_POST['comments']);
}
else {
$comments = NULL;
echo '<p>Please write the "comments" in the below box.</p>'.PHP_EOL;
}

echo "<p><b>Name:</b> {$name}</p>".PHP_EOL;
echo "<p><b>e-Mail:</b> {$email}</p>".PHP_EOL;
echo "<p><b>Pass:</b> {$pass}</p>".PHP_EOL;
echo "<p><b>Comments:</b><br/>{$pass}</p>".PHP_EOL;
?>

موفق باشید.

css-man
چهارشنبه 30 فروردین 1391, 15:44 عصر
ممنون از هر دو دوست

css-man
چهارشنبه 30 فروردین 1391, 15:44 عصر
این چیه؟؟ که ته این خطور اضافه شده؟؟؟

تا حالا ندیده بودم میشه توضیح بدید؟

PHP_EOL

MMSHFE
چهارشنبه 30 فروردین 1391, 15:56 عصر
این ثابت توی ویندوز کارکتر r\n\ و توی لینوکس کارکتر n\ رو درج میکنه که واسه رفتن به سطر بعد هست. برای اینکه مجبور نباشیم توی هاستهای مختلف کد رو تغییر بدیم، برای درج کارکتر انتهای سطر من از این ثابت استفاده میکنم. موفق باشید.