• 12 Vote(s) - 2.58 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ذخیره متغیرهای جاوا اسکریپت در MySQL
#1
با درود و احترام خدمت تمامی کاربران انجمن بی نظیر  پارسی کدرز
قصد دارم یکسری آموزش ها در زمینه برنامه نویسی های مختلف ، برای شما عزیزان قرار دهم . لازم است از تمامی مدیران فروم قدردانی کنم بابت این فروم بسیار مفید و کاربردی.


ما به شما نحوه ذخیره متغیر های جاوا اسکریپت را در  PHP/MySQL نشان خواهیم داد.
به cPanel خود وارد شوید، MySQL Databases را پیدا کنید و یک دیتابیس جدید ایجاد کنید . یک یوزر (کاربر) ایجاد کنید و آن را به دیتا بیس اضافه نمایید.  از این کاربر برای اتصال به DB استفاده می کنیم.
phpMyAdmin را باز کرده و باید DB جدید را در لیست ببینید. آن را انتخاب کنید و یک جدول جدید ایجاد کنید. 
در این مثال ، من آن را usertimes می نامم.
تنظیم اولیه را برای افزایش خودکار (A_I) تنظیم کنید و اطمینان حاصل کنید که فیلد name یک مقدار منحصر به فرد است.
date (تاریخ) را ذخیره نموده و بدانید بقیه متغیر ها به مشخصات شما بستگی دارد. تنظیمات را هنگامی که انجام شد ذخیره کنید. پایگاه داده برای دریافت ورودی آماده است.
تابع جاوا اسکریپت زیر ، متغیر ها را جمع می کند و آن ها را به فایل savesettings.php ارسال می کند. 
#saveWarningText div نمایش پیغام موفقیت آمیز از فایل پی اچ پی یا پیغام خطا  را نمایش می دهد
سه متغیر ، name ، amount و times ایجاد می کنیم ، زیرا شناسه (ID) به صورت خودکار افزایش می یابد و تاریخ (date) را می توان در سمت سرور ایجاد کرد.
 
function saveUserTimes() {
    $.post("savesettings.php",
    {
        name: $("#userName").val(),
        amount: aGlobalVariable,
        times: '1,2,3,4,5,6,7',
    },
    function(data,status){
        document.getElementById("saveWarningText").innerHTML = data;
        $( "#saveWarningText" ).fadeIn(100);
        setTimeout(function(){ $( "#saveWarningText" ).fadeOut(100); }, 3000);
    });
}
یک فایل PHP برای رمزگشایی (decode ) پارامتر های پست ایجاد کنید و آن ها را در DB وارد کنید. 
در ابتدای فایل، رشته اتصال پایگاه داده (database connection string) را مشخص می کنیم. 
بعد ما سه متغیر را با روش پست (post method) ارسال می کنیم .
به یاد داشته باشید که جاوا اسکریپت در سمت سرویس گیرنده (مشتری) اجرا می شود بنابراین همه بررسی می شوند و پارامتر هایی را که ما به فایل پی اچ پی  ارسال می کنیم را همه میبینند . هکر ها می دانند که متغیر هایی که پست می کنیم می توانند query های پایگاه داده را از طریق پرونده ما اجرا کنند. به همین دلیل است که در کنار رشته ای که ارسال می شود ، ما نیز طول رشته "times" را بررسی می کنیم و اگر داده ها بیش از حد بزرگ باشند، اجازه ذخیره آن را نمی دهند. شما می توانید اقدامات امنیتی بیشتری را برای جلوگیری از حمله هکر ها انجام دهید. اجازه دادن به تعداد محدودی از query ها از یک آدرس آی پی (IP) می تواند خطر را کاهش دهد. 
در خطوط زیر ما query sql را ایجاد می کنیم. در جدول پایگاه داده name ، amount و times و متغیر های date وارد می کنیم. شناسه به صورت خودکار تنظیم می شود و تاریخ  query از CURDATE() استفاده می کند . در صورتی که مقدار نام فعلی در پایگاه داده موجود باشد، 3 متغیر دیگر در آن ردیف به روز می شوند.
 
محتویات فایل savesettings.php:
 
 
<?php
$servername = "localhost";
$username = "databaseUserName";
$password = "userPassword";
$dbname = "databaseName";

$conn = new mysqli($servername, $username, $password, $dbname); // Create connection
if ($conn->connect_error) {     // Check connection
    die("Connection failed: " . $conn->connect_error);


$name = mysqli_real_escape_string($conn, $_POST['name']);
$amount = mysqli_real_escape_string($conn, $_POST['amount']);
$times = mysqli_real_escape_string($conn, $_POST['times']);

if (strlen($times) > 200000) {  $times = "";    }

$sql = "INSERT INTO usertimes (name,date,amount,times)
VALUES ('$name', CURDATE(), '$amount', '$times') ON DUPLICATE KEY UPDATE    
date=CURDATE(), amount='$amount', times='$times'";

if ($conn->query($sql) === TRUE) {
    echo "Page saved!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
خواندن از پایگاه داده
درست مانند نوشتن، ما نیاز به عملکرد جاوا اسکریپت برای ارسال متغیر به فایل PHP و پردازش داده های بازیابی شده داریم.
 
function openUserTimes(username) {
    $.post(
        "returndata.php",
        { name: username },
        function(response) {
            var myvariable = response.amount;
            var times = response.times;

            console.log('Retreived data: ', myvariable, times);
        }, 'json'
    );  
}
تنها اطلاعاتی که ما در این مثال می فرستیم نام کاربری است که ما می خواهیم این دو متغیر را دریافت کنیم و آنها را در کنسول وارد کنیم.

فایل پی اچ پی با رشته اتصال ( connection string) شروع می شود، سپس نام کاربری ارسال شده از جاوا اسکریپت را دریافت می کند. بعد query SQL است که همه چیز را در جدول DB انتخاب می کند که در آن فیلد نام با نام کاربری فعلی مطابقت داده می شود . 
در نهایت داده های بازگشتی را به فرمت JSON بسته بندی می کنیم که می تواند به راحتی با جاوا اسکریپت رمزگشایی شود.

 
فرمت JSON تولید شده توسط پی اچ پی:
 
 
{"name":"JohnDoe","date":"2017-02-01","amount":"4","times":"1,2,3,4"}
محتوای فایل returndata.php:
 
 
<?php
header('Content-type: application/json');

$servername = "localhost";
$username = "databaseUserName";
$password = "userPassword";
$dbname = "databaseName";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$name = mysqli_real_escape_string($conn, $_POST['name']);

$sql = 'SELECT * FROM usertimes WHERE name ="'. $name. '"';

$result = $conn->query($sql);
$response = array();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $response['name'] = $row["name"];
        $response['date'] = $row["date"];
        $response['amount'] = $row["amount"];
        $response['times'] = $row["times"];
    }
    echo json_encode($response);
} else {
    echo "  0 results";
}
$conn->close();     
?>
 
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)