ط§ط¯ط§ط© Token ظپظٹ ط§ط±ط³ط§ظ„ ط§ظ„ط¨ظٹط§ظ†ط§طھ PHP - MySQL



السلام عليكم ورحمة الله وبركاته

الحمدلله رب العالمين والصلاة والسلام على سيد المرسلين محمد
وعلى آله وصحبه أجمعين .. أستغفرك ربي واتوب اليكـ

كيف حالكم أعضاء ديزاد باتنة الكرام ..
وخاصة مبرمجين قسم لغات البرمجة ..
عدنا اليوم نظام جديد في أرسال البيانات البعض يعرفه
والبعض يجهله وفائدته الحماية أكثر

ماهو Token في ارسال البيانات ؟؟




هل فكرت يوماً عندما تنشئ فورم كمثال أضافة مقال جديد تحتاج الى اسم الموضوع ومحتوى الموضوع
ماشي .. طبعاً رح ترسل البيانات بشكل اعتيادي أضافة علامة شرطية هي اذا ضغط على زر الأرسال
تدخل البيانات بشكل اعتيادي عن طريق الأداة INSERT في Mysql لهنا زين .. نجي للفائدة اذا لزائر اضاف البيانات وسوه رفرش ثاني رح تطلعله من المتصفح أعاده ارسال طبعاً رح يرسل لبيانات ايضا مرة ومرتين وثلاثة زين اذا اريده من يدوس على اعادة ارسال مينعاد الأرسال وتمنع اصحاب السبام والتكرار هذه هي عمل الاداة

كيف تعمل Token في ارسال البيانات ؟؟

الأن عندك الفورم هذا

رمز PHP:
<code style="white-space:nowrap"> <code> <form action="<?php echo $PHP_SELF; ?>" method="post">
<table width="50%">
<tr>
<td>اسم الموضوع</td>
<td>
<input type="text" name="thread_name" value="اسم الموضوع" />
</td>
</tr>
<tr>
<td>محتوى الموضوع</td>
<td>
<textarea name="thread_content" cols="4"></textarea>
</td>
</tr>
<tr>
<td>ارسال البيانات</td>
<td><input type="submit" name="send" value="ارسال البيانات" /></td>
</tr>
</table>
</form>
</code> </code>

فورم عادي طبعا يتكون من اسم الموضوع ومحتوى الموضوع
رح نستخدم اداة التوكين في الارسال فيه

فقط أنضيف حقل جديد اسمه token ومن نوع hidden والمحتوى مالته عباره عن شفره تتغير
عن طريق استخدام md5 و uniqid و mt_rand
بس بالأول انسوي متغير بال php أعلى الفورم يحتوي على سيشن ليخزن فيه التشفير
رمز PHP:
<code style="white-space:nowrap"> <code> <?php
$token
= $_SESSION&#91;'token'&#93; = md5(uniqid(mt_rand(),true));
?>
</code> </code>

وبعدين انضيف الحقل

رمز PHP:
<code style="white-space:nowrap"> <code> <form action="<?php echo $PHP_SELF; ?>" method="post">
<table width="50%">
<tr>
<td>اسم الموضوع</td>
<td>
<input type="text" name="thread_name" value="اسم الموضوع" />
</td>
</tr>
<tr>
<td>محتوى الموضوع</td>
<td>
<textarea name="thread_content" cols="4"></textarea>
</td>
</tr>
<tr>
<td>ارسال البيانات</td>
<td>
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="submit" name="send" value="ارسال البيانات" /></td>
</tr>
</table>
</form>
</code> </code>

الى الآن احنا كملنا الفورم والمتغير سويناه بقه عدنا
طريقة ارسال البيانات
بهذه الطريقة

رمز PHP:
<code style="white-space:nowrap"> <code> <?php
if($_POST&#91;'send'&#93{
if(isset(
$_SESSION&#91;'token'&#93 && $_POST&#91;'token'&#93; == $_SESSION&#91;'token'&#93{
$name = mysql_real_escape_string(strip_tags(addcslashes($name)));
$content = mysql_real_escape_string(strip_tags(addcslashes($content)));
$insert = mysql_query("insert into threads('name','content') values ('$name','$content')");
if(
$insert){
echo
"تم اضافة البيانات بنجاح";
}
}else{
echo
"السبام والتكرار ممنوع وتكفي اضافة مرة واحدة";
}
}
?>
</code> </code>

وفي الأخر العمل رح يكون عدنا بهذا الشكل

رمز PHP:
<code style="white-space:nowrap"> <code> <?php
session_start
();
$token = $_SESSION&#91;'token'&#93; = md5(uniqid(mt_rand(),true));
if(
$_POST&#91;'send'&#93{
if(isset(
$_SESSION&#91;'token'&#93 && $_POST&#91;'token'&#93; == $_SESSION&#91;'token'&#93{
$name = mysql_real_escape_string(strip_tags(addcslashes($name)));
$content = mysql_real_escape_string(strip_tags(addcslashes($content)));
$insert = mysql_query("insert into threads('name','content') values ('$name','$content')");
if(
$insert){
echo
"تم اضافة البيانات بنجاح";
}
}else{
echo
"السبام والتكرار ممنوع وتكفي اضافة مرة واحدة";
}
}
?>

<form action="<?php echo $PHP_SELF; ?>" method="post">
<table width="50%">
<tr>
<td>اسم الموضوع</td>
<td>
<input type="text" name="thread_name" value="اسم الموضوع" />
</td>
</tr>
<tr>
<td>محتوى الموضوع</td>
<td>
<textarea name="thread_content" cols="4"></textarea>
</td>
</tr>
<tr>
<td>ارسال البيانات</td>
<td>
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="submit" name="send" value="ارسال البيانات" /></td>
</tr>
</table>
</form>
</code> </code>

ارجوا لم أطيل عليكم كثيراً
وتحياتي وتقديري لكم اخوكم محمد الحسيني









©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©