رفتن به مطلب

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


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

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

حالا برای اینکار تو فایل اصلیه افزونه ام یه تابع درست کردم به این صورت :


function soheil_questions_add_html()
{
global $wpdb;
$tbl = $wpdb->prefix . "soheil_admin_question";
$wpdb->show_errors();
// start html
?>
<form action='' method=post >
<table style="font-size:10px;">
<tr>
<td> نام : </td>
<td>
<input name="name" placeholder="نام" dir=rtl
oninvalid="setCustomValidity('سن خود را به صورت صحیح وارد کنید')"
oninput="setCustomValidity('')" />
</td>
</tr>
<tr>
<td>نام خانوادگی : </td>
<td><input size=30 placeholder="نام خانوادگی" type=text name=lastname dir=rtl /></td>
</tr>
<tr>
<td> ایمیل:</td>
<td><input size=30 type=text placeholder="Your Email" name=user_email dir=ltr typ"email" /> </td>
</tr>
<tr>
<td>عنوان سوال : </td>
<td><input size=30 type=text name=title dir=rtl /> </td>
</tr>


<input type="hidden" name=asked_date value="asked_time">
<input type="hidden" name=answer_date value="answer_time">

</table>

انتشار عمومی <input type="checkbox" name="public" value="1" > <br>
( وضعیت انتشار : سوال شما میتواند خصوصی باشد و یا اینکه بعد از پاسخگویی در بخش سوالات انتشار یابد )<br>
متن سوال : <textarea name=message dir=rtl style="width:80%; height:200px; font-size:10px" ></textarea><br>


<input type="submit" class="button" value="افزودن لینک" />
</form>

<?php } ?>

و این همین تابع رو یه shortcode واسش درست کردم و مستقیما شرت کد رو تو قالب نمایش دادم و بنابراین این فرم تو قالب نمایش داده میشه !

و بعد اومدم تو همین صفحه اطلاعات ارسال این فرم رو تو دیتابیس ذخیر کردم با این کدا :


global $wpdb;
$tbl = $wpdb->prefix . "soheil_admin_question";
$wpdb->show_errors();
// start html
?>
<!-- افزودن لینک -->
<div class=warp>
<h3>افزودن لینک</h3>
<?php
// افزودن لینک به دیتابیس
if( ! empty($_POST['title']) and ! empty($_POST['message']))
{
$title = htmlspecialchars(strip_tags(trim($_POST['title'])), ENT_QUOTES);
$message = htmlspecialchars(strip_tags(trim($_POST['message'])), ENT_QUOTES);
$name = htmlspecialchars(strip_tags(trim($_POST['name'])), ENT_QUOTES);
$lastname = htmlspecialchars(strip_tags(trim($_POST['lastname'])), ENT_QUOTES);
$user_email = htmlspecialchars(strip_tags(trim($_POST['user_email'])), ENT_QUOTES);
$asked_date = htmlspecialchars(strip_tags(trim($_POST['asked_date'])), ENT_QUOTES);
$answer_date = htmlspecialchars(strip_tags(trim($_POST['answer_date'])), ENT_QUOTES);
$status = htmlspecialchars(strip_tags(trim($_POST['status'])), ENT_QUOTES);
$public = htmlspecialchars(strip_tags(trim($_POST['public'])), ENT_QUOTES);


$do = $wpdb->query("INSERT INTO `$tbl` (title,message,name,lastname,user_email,asked_date,answer_date,status,public) VALUES ('{$title}','{$message}','{$name}','{$lastname}','{$user_email}','{$asked_date}','{$answer_dat}','{$status}','{$public}')");


if($do>0)
{
echo "<div id=message class='updated fade' ><p>لینک اضافه شد .</p></div>";
global $wpdb;
$tbl = $wpdb->prefix."soheil_admin_question_admin_pro" ;
$wpdb->show_errors();
foreach($result as $row) :
$admin_email = $row->admin_email ;
if(! empty($admin_email) )
{
$subject = "سوال جدید ";
$e_message = "نام سوال کننده :". $name." ". $lastname." <br> ".
"عنوان سوال :" . $title ."<br>
متن سوال : <br> " . $message ;
echo $e_message ;
$headers = 'From: My Name <myname@example.com>' . "\r\n";
wp_mail($admin_email, $subject, $e_message, $headers);
}

endforeach;
}
else
echo "<div id=message class='updated fade' style='background:pink' ><p>متاسفانه خطایی پیش آمد</p></div>";

حالا آیا این


htmlspecialchars(strip_tags(trim($_POST['public'])), ENT_QUOTES);

برای فیلتر کردن وردی های مشکل دار کافیه ؟ و اینکه این کار برای امنیت وردپرس مشکلی ایجاد نمیکنه ؟

در ضمن برای insert ک ردن وروددی هم از این روش استفاده کردم :


if( ! empty($_POST['title']) and ! empty($_POST['message']))
{
$title = htmlspecialchars(strip_tags(trim($_POST['title'])), ENT_QUOTES);
$message = htmlspecialchars(strip_tags(trim($_POST['message'])), ENT_QUOTES);
$name = htmlspecialchars(strip_tags(trim($_POST['name'])), ENT_QUOTES);
$lastname = htmlspecialchars(strip_tags(trim($_POST['lastname'])), ENT_QUOTES);
$user_email = htmlspecialchars(strip_tags(trim($_POST['user_email'])), ENT_QUOTES);
$asked_date = htmlspecialchars(strip_tags(trim($_POST['asked_date'])), ENT_QUOTES);
$answer_date = htmlspecialchars(strip_tags(trim($_POST['answer_date'])), ENT_QUOTES);
$status = htmlspecialchars(strip_tags(trim($_POST['status'])), ENT_QUOTES);
$public = htmlspecialchars(strip_tags(trim($_POST['public'])), ENT_QUOTES);


$do = $wpdb->query("INSERT INTO `$tbl` (title,message,name,lastname,user_email,asked_date,answer_date,status,public) VALUES ('{$title}','{$message}','{$name}','{$lastname}','{$user_email}','{$asked_date}','{$answer_dat}','{$status}','{$public}')");


if($do>0)
echo "<div id=message class='updated fade' ><p>لینک اضافه شد .</p></div>";

else
echo "<div id=message class='updated fade' style='background:pink' ><p>متاسفانه خطایی پیش آمد</p></div>";

لینک به ارسال

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

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

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

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

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

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

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

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

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