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

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط Sitecheckup
      سلام
      وب سایت وردپرسی من بعد از مدتی هک شده و بعضی اوقات به یک ادرس دیگه ریدایرکت میشه و وقتی توی سرچ کنسول فچ میکنم میزنه که ریدایرکت شده به فلان آدرس
      حالا میخام بدونم که این مشکل رو چجوری میتونم حل کنم و بدونم دستور ریدایرکت کدوم قسمت قرار گرفته
      ممنون
    • توسط Mohammaddaw
      سلام خسته نباشید 
      من یک سایت دارم تازه برام ساختنش یعنی تقریبا یک ماهی ازش میگذره با لبتاب کار میکنم با سایتم مشکلی نداره ی بار با گوشی خودم تو گوگل سرچ کردم زدم رو سایت نوشته این سایت خصوصی نیست امکان برداشتن پسورد و رمز ... اینا هسته 
      بعد با یکی دیگه گوشی سرچ کردم همینو نوشته بود ولی با لبتابم خوبه 
      مشکل چیه ؟
      اگ میشه کمکم کنید
    • توسط amir2o16
      با سلام . وب سایتم  توسط یک کد اسکریپت بدافزار به مشکل بر خورده 
      جستجو های زیادی کردم . حتی مجبور شدم پلاگین امنیتی (لایسنس دار ) تهیه کنم . اما مشکلم رفع نشد . با هاستینگمم تماس گرفتم اما کد مخربی رو نتونستن پیدا کنم . مشکل اصلیه من اینه که گوگل اد وورز بهم ارور میده و میگه ویروس داری . کلی هم سرچ کردم حتی مجبور شدم فایلاها و دیتابیس هاستمو به کلی پاک کنم. اما بازم به مشکل میخورم . از گوگل وب مستر هم نتونستم مشکلمو بر طرف کنم
      توضیحات بیشتر راجب نوع بد افزاری که داخل وب سایتمه = https://sitecheck.sucuri.net/results/ir-blumen.com
      اسکریپی که فایل هرز داخلشه اما نمیتونم مکانشو پیدا کنم  : <script type='text/javascript' src='https://stats.startreceive.tk/script.js?pr=1'>
      - اگه امکانش هست کمکم کنید . ممنونم
       
      تصویر ارور گوگل اد وورزو ضمیمه کردم 

    • توسط vazizi69@yahoo.com
      سلام ممنون میشم اگر منو راهنمایی کنید 
      من تو سایت وردپرسی میخوام صفحه ای داشته باشم که یک url جستجو داشته باشه و وقتی کد محصول رو اونجا وارد کردم 
      در همان صفحه زیر ادرس بار محصول رو به صورت باز شده نشون بده 
      یعنی مستقیم به داخل صفحه محصول که کدش رو زدم بره و دکمه خرید داشته باشه 
      با هر افزونه جستجو که انجام میدم یا کلی مطالب و محصول مرتبط رو به صورت لیست نشون میده 
       لینک نمونه صفحه ای که میخوام داشته باشم 
      https://digikatoni.ir/single-checkout/
    • توسط masoudmosleh267
      سلام دوستان. من میخوام تو قسمت فرم ثبت نام سایتم، زمانی که کاربر یوزرنیم تکراری زد ارور بده. الان زمانی که یوزر تکراری وارد شه، فیلد ایمیل زرد میشه و صفحه همونطوری میمونه و اتفاقی رخ نمیده و کاربر نمیفهمه چی شده.
      بعد میخوام قسمت ورودی رمز عبور کاربر محدودیت حداقل 6 کاراکتر ایجاد شه که در غیر این صورت ارور بده.
      فیلد ایمیل هم اخطار بده که این ایمیل قبلا ثبت نام شده. در واقع هیج اروری نمیده. و بگه که آدرس ایمیل باید معتبر باشد و در غیر این صورت ارور بده. الان هرچی بزنم ثبت نام میشه فقط نباید تکراری باشه.
      الان یه سری ارور زیر فیلد ها تعریف کردم ولی همیشه این ارور ها هست و زمانه که فیلدی اشتباه باشه بجای اینکه ارور ظاهر شه، میره.
       
      این یه سری از کدای فایل هست:
      <form method="post" id="userRegistration">
                                          <div class="form-group">
                                              <input type="hidden"  class="referer" value="<?php echo wp_get_referer() ?: get_home_url()  ?> ">
                                          </div>
                                          <?php
                                          if(function_exists('wp_nonce_field')){
                                              echo '<div class="form-group">';
                                              wp_nonce_field('user_registration_action', 'user_registration_nonce');
                                              echo '</div>';
                                          }
                                          ?>
                                          
                                          <div class="form-group">
                                              <label for="register_username" class="control-label"><?php esc_html_e('Username', Khadamaator::NAME); ?></label>
                                              <input type="text" name="register_username" id="register_username" class="form-control username" aria-describedby="register_username_help_block">
                                              <span id="username_help_block" class="help-block">نام کاربری باید لاتین باشد.</span>
                                          </div>
                                          <div class="form-group">
                                              <label for="register_password" class="control-label"><?php esc_html_e('Password', Khadamaator::NAME); ?></label>
                                              <input type="password" name="register_password" id="register_password" class="form-control password" aria-describedby="register_password_help_block">
                                              <span id="password_help_block" class="help-block">رمز عبور باید حداقل 6 کاراکتر باشد.</span>
                                          </div>
                                          <div class="form-group">
                                              <label for="register_email" class="control-label"><?php esc_html_e('Email', Khadamaator::NAME); ?></label>
                                              <input type="text" name="register_email" id="register_email" class="form-control email" aria-describedby="register_email_help_block">
                                              <span id="email_help_block" class="help-block">هر ایمیل تنها یکبار میتواند ثبت شود.</span>
                                          </div>
                                          <button type="submit" class="btn btn-sm btn-primary" data-loading-text="<i class='fa fa-spinner fa-spin '></i> در حال ارتباط" ><?php esc_html_e('Signup', Khadamaator::NAME); ?></button>
                                      </form>