رفتن به مطلب

قرار دادن شرط در اینپوت


پست های پیشنهاد شده

من یه اینپوت دارم میخوام براش یه شرط بزارم که اگه روش کلیک شد دستوراتم اجرا بشه نمیدونم داخل شرط چی بنویسم


?>

<input class="text" type="submit" value="ارسال" name="send">

<?php
if ( گذاشتن شرط ) {


اجرای دستورات
}

ویرایش شده توسط iman64
لینک به ارسال

ببینید من یه فرم دارم بعد اینکه فرم ارسال شد و بررسی شد که کد امنیتی درست هست دقیقا قبل اینکه اطلاعات ذخیره بشه میخوام یه دکمه درست بشه به عنوان تایید اطلاعات و بعدش یه شرط که اگه رو دکمه کلیک شد دستورات ذخیره اطلاعات اجرا بشه همین ولی به صورتی که گفتین وقتی رو دکمه کلیک کردم صفحه رفرش خورد وقتی صفحه هم رفرش بخوره دیگه انگار دوباره صفحه فرم لود میشه و همه چی از نو شروع میشه و دوباره باید فرم رو پر کنی و باز هم همون اتفاقات قبلی ی. یعنی همش فرم رو ارسال کنی ولی دستورات ذخیره اطلاعات اجرا نشه

کد های من این هست :

if ($check == 1 && $error != 1) {
//بررسی کد امنیتی
$result = mysql_query("SELECT * FROM form WHERE userip = '$ip' AND code = '$code' AND status = 'temp' LIMIT 1")
or die(mysql_error());
$code_exist = mysql_num_rows($result);
if ($code_exist > 0) {

//ذخیره اطلاعات در دیتابیس
mysql_query("INSERT INTO form (textuser,textms,gender,gendert,email,textos,textcity,textmob,texturl,textarea,terms,code,date,time,userip,useragent,status) VALUES ('$textuser','$textms','$gender','$gendert','$email','$textos','$textcity','$textmob','$texturl','$textarea','$terms','$code','$date','$time','$ip','$agent','sent')")
or die(mysql_error());
echo "<div class=\"sent\">پیام شما با موفقیت ارسال شد!</div>";
} else {
$codee = "<div class=\"khata\">کد امنیتی اشتباه است! </div>";
}
} }

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

ویرایش شده توسط iman64
لینک به ارسال

ببنید زمانی که شما یک فرم را ارسال می کنید یا همان submit اطلاعات به action یا صفحه داده شده ارسال میشه.

اگر شما مقدار action را خالی گذاشته باشید اطلاعات در همان صفحه ارسال می شود و باید با کد های php پردازش کنید.

حال کد بالا به زبان ساده این هست :


if(isset($_POST['send'])) {

اگر ارسالی از دکمه send ما دارای مقدار بود یعنی دکمه ارسال زده شده بود یک سری کد ها بررسی و اجرا شوند.

خوب حالا می خوایید شما قبل از درج اطلاعات اول اعتبار سنجی نمایید داده های ارسالی را به راحتی به این صورت مثلا:


...if($_POST['captcha']!=$_SESSION['captcha']){
die('کد امنیتی صحیح نمی باشد');
//دستور فوق از اجرای ادامه اسکریپت جلوگیری می کند
}...

به همین صورت ابتدا بررسی می کنید در آخر اگر جایی die نشده بود مراحل ثبت اجرا می شود نمونه بالا یک نمونه ساده بود حال اگر بخوایید مانند کد خود


$error != 1

بررسی کنید می توانید یک راه دیگه اینکه اعتبار سنجی کنید و اطلاعات را داخل یک آرایه به نام ارور بریزید و بعد آرایه را بررسی کنید.

بهتر هست آموزش های اعتبار سنجی فرم ها توسط php را در سطح وب مطالعه کنید تا واضح تر متوجه شوید:


http://wpu.ir/uopnh

لینک به ارسال

درسته من مقدار action را خالی گذاشتم و در همون صفحه همه فیلد ها رو تک به تک هم اعتبارسنجی کردم مثلا یکی از فیلد ها رو به این صورت بررسی کردم



if ($check == 1 && $textmob == '') {
echo "<div class=\"error\">لطفاtextmob خود را وارد کنید!</div>";
$error = 1;
} }

البته خیلی ساده هست بعدا میخوام پیچیده تر کنم بعد در کدهای پست قبلیم گفته شده اگه هیچ اروری برای فیلد ها وجود نداشت بعد بیاد کد امنیتی رو بررسی کنه بعد از بررسی می یاد یه شرط میذاره میگه اگه کد امنیتی درست بود اطلاعات رو ذخیره کنه . الان وقتی این کد های خودم رو میزارم فرم من هیچ مشکلی نداره بعد از اینکه فرم ارسال شد می یاد تک به تک فیلد ها رو برسی میکنه بعد از اینکه همه چی درست بود و کد امنیتی هم درست بود میره اطلاعات رو ذخیره میکنه و پیام پیام شما ارسال شد رو میده . فقط خواستم یه چیزی بهش اضافه کنم که وقتی دکمه ارسال فرم رو زد بعد بیاد اطلاعاتی رو که کاربر ارسال کرده به خودش نشون بده و زیرش هم یه دکمه تایید درست کنه اگه درست دکمه تایید رو بزنه بعد اطلاعات ذخیره بشه . در مورد اعتبارسنجی و ذخیره اطلاعات مشکلی ندارم شاید ایده من درست نباشه .

ویرایش شده توسط iman64
لینک به ارسال

برای اینکار ساده ترین روش در همان صفحه بعد از اینکه اعتبار سنجی کردید (حال بسته به نیاز خود) فرم را مجددا echo کنید و مقدار های دریافتی را در یک جدول یا فرم مانند فرم در آن قرار دهید

مثلا :


echo '<form action="" method="post" >
<input type="text" name="email" value="<?php echo $email; ?>" readonly />
...

سپس مقدار را ذخیره کنید

لینک به ارسال

خب تا فرم ارسال نشه که اعتبارسنجی نمیشه وقتی فرم ارسال و اعتبار سنجی انجام شد و همه چی درست بود بعدش باید echo کنیم فرم رو خب تا اینجا این کار رو کردیم اینجاست که کاربر اطلاعات خودش رو میبینه خب اینجا نباید اطلاعات رو با زدن یه دکمه تایید کنه و بعدش ذخیره بشن

لینک به ارسال

فرم رو می تونید با آژاکس یا جاوا اسکریپت اعتبار سنجی کنید تا قبل از submit اعتبار سنجی بشه در غیر اینصورت باید به ازای تک تک فیلدها در اکشن دو باره فیلد hidden بسازید که مقدارشون رو از $_POST[] بگیرند و مجموعه را داخل یک فرم دیگه قرار بدید و با کلید تایید submit کنید برای اکشن آخر

لینک به ارسال

با جوا اسکریپت هم اعتبار سنجی کردم . با این روش چگونه کار کنم؟ بیشتر توضیح بدید

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

لینک به ارسال

راه دوم که همون راه سنتی است را که کامل فرمودند دیگه

نمونه


<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>TEST</title>
<style>
html {
direction:rtl;
}
td,th {
padding:10px;
border:1px #ccc solid;
}
th {
background-color:#ccc;
}
</style>
</head>
<body>
<?php
if(isset($_POST['submit2'])) {
$test = $_POST['test'];
?>
<table>
<thead>
<tr>
<th>نام فیلد</th>
<th>مقدار فیلد</th>
</tr>
</thead>
<tbody>
<tr>
<td>test</td>
<td><?php echo $test;?></td>
</tr>
</tbody>
<caption>انجام شد</caption>
</table>
<?php
}
elseif(isset($_POST['submit1'])) {
$test = $_POST['test'];
?>
شما مقدار <?php echo $test;?> را در فیلد test قرار دادید آیا تایید می کنید
<form method="post" action="">
<input name="test" type="hidden" value="<?php echo $test;?>">
<input type="submit" name="submit2" value="بله تایید می کنم ">
</form>
<?php }
else
{
?>
<form method="post" action="">
<label>TEST = <input name="test" value="" required ></label>
<input type="submit" name="submit1" value="اعتبار سنجی">
</form>
<?php }?>
</body>
</html>

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...