soheilyou

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

1 پست در این موضوع قرار دارد

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

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


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>";

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط cpcenter
      با سلام به همه دوستان
      بنده میخوایم یک امکان مشابه این وبسایت که در زیر هست
      http://aairan.org/fa/meeting
      دقیقا مثل همین که لیست شهر باشه و ما داخلش بتونیم با انتخاب اون شهر مواردی که مد نظر داریم به نمایش بیاد دقیق همین که در سایت با لا مشاهد میکنید
      این چه افزونه هست که ما باید نصب کنیم اگه افزونه نیست ما چه جوری باید این رو درست کنیم
      یا اگه این کار کسی انجام میده ممنون میشم پیام بزار
    • توسط ghorbanih91
      سلام دوستان یه مشکل خیلی ناجور دارم که بدجوری روانمو داغون کرده لطفا یکی یه کمکی برسونه
      هر چند وقت یه بار ایمیل و نام مدیر تغییر پیدا میکنه(قطعا کسی به روشی به سایت نفوذ میکنه) و من مجبور میشم برم از پی اچ پی مای ادمین اطلاعات رو درست کنم.. حتی رو یه سایت دیگه همین مشکل رو داشتم نسخه پرمیوم آیتم سکوریتی رو هم نصب کردم باز همین مشکل وجود داشت.
      لطفا از دوستان اگه کسی تجربه ای در این زمینه داره بگه
    • توسط gust
      سلام دوستان من یه مشکلی دارم قالب Entrada نصب شده و الان میخوام افزونه اضافه کنم یا ویرایش کنم با اینکه ادمینم امکانش نیست دسترسی به هاستم دارم منتهی اونجام چیزی پیدا نکردم لطفا راهنماییم کنید
    • توسط nebcha
      با سلام دوستان، کسی میدونه چطور میشه چنین فرمی در وردپرس درست کرد؟ دقیقا همین چیزی: https://mihanwp.com/license/
    • توسط game-pc-mm
      سلام من داخل یک وب سایت بودم یک مورد به چشمم خورد میخام بدونم 

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