علاقه مندان به php

saalek110

Well-Known Member
اگر در فضای مجانی کار می کنید نام تیبلها و نام ستون هایش را یادداشت کنید ، چون بعضی سایتها دیتابیس را اگر مدتی سر نزنید پاک می کنند. کدها را هم سعی کنید کپی بگیرید. دانلود را بزنید ...

با اکسپورت دیتابیس به یک فایل sql تمام تیبل ها ذخیره میشن ، بعدا ایمپورت خواهید کرد.
 
آخرین ویرایش:

saalek110

Well-Known Member
ارتباط php و جاوا اسکریپت:



در این سایت:

بحث ارتباط جاوا اسکریپت و php است ، در پاسخ اول گفته شده که php سمت سرور است و php خبر ندارد که سمت کلاینت چه اتفاقاتی می افتد. او گفته با ارسال اطلاعات فرم به php اطلاعات را بفرست.

سوال: واقعا تا فرمی نباشه و دکمه اش را نزنیم کدهایphp هیچ ارتباطی با کاربر ندارند؟

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

سالک،مدتی بعد : من یک روشی به کار بردم ، شاید روش های بهتری هم وجود داشته ولی کارم راه افتاد ، شرح:
من یک سری عملیات با جاوا اسکریپت انجام دادم ، بعد پیش خودم گفتم حالا چطوری به php منتقل کنم؟چون باید نتایج را در دیتابیس ذخیره می کردم ، البته شاید از روش من ساده تر و اصولی تر هم باشه ، ولی من نتایج کار را , با جاوا اسکریپت در یک سری input انداختم و بعد php راحت محتوای input ها را خواند. من نمی خواستم از کوکی استفاده کنم ، چون شاید یک نفر کوکی اش را بسته باشد.
البته اینجا باز هم فرم و زدن دکمه Submit را داریم. ولی یک سری کارها با جاوا اسکریپت انجام میشه و برای اینکه ثبت نهایی با php انجام میشه ، جاوا اسکریپت نتایج را در input ها می اندازد نه در پاراگراف ها یا ستون های جدول. چون من چیزی به ذهنم نرسید چطور یک پاراگراف سایت را با php بخونم.

یعنی اینجا input ها مثل بنادری هستند که کشتی php می تونه بیاید اونها را تخلیه کند ولی به جز input ها ، بقیه عناصر سایت در خشکی هستند و php چون کشتی است به خشکی دسترسی ندارد. البته من ممکنه الان دارم اشتباه میگم و راحت بشه بین جاوا اسکریپت و php رابطه برقرار کرد. مثلا متغیر جاوا اسکریپت را در متغیر php ریخت. ولی من دنبال این بودم فعلا کارم راه بیافته و فعلا راه افتاد.

شاید فیلد مخفی هم بتونه این کار را انجام بده ولی استفاده از input کار را بصری می کند و ملموس تر است. حالا اگر فیلد مخفی هم قابل استفاده بود ، بعد اینکه کدتان نهایی شد ، می توانید input ها را حذف کنید و فیلد مخفی استفاده کنید، ولی من خودم فیلد مخفی را برای ارتباط جاوا اسکریپت و php تست نکردم.
من خیلی کم در این مورد سرچ کردم و ممکنه مطالب سایتها را ندیدم ، ولی من دنبال این بودم سایتم راه بیافته ، دنبال بهترین روش نبودم. بعدا اگر مطالب دیگری در مورد ارتباط جاوا اسکریپت و php دیدم ، بیان می کنم.
ادامه و کد در پست بعد...
 
آخرین ویرایش:

saalek110

Well-Known Member
می دونید که یک input هم می تونه name داشته باشه و هم id
من در جاوا اسکریپت از id اش استفاده کردم و در php از name اون و اسم ها را یکسان گرفتم.
کد جاوا اسکریپت برای مقدار دادن به input :

JavaScript:
     document.getElementById("id_of_input").value = x2;

کد زیر برای رنگ کردن کف input است و ربطی به بحث ارتباط دهی بین php و جاوا اسکریپت نداره , چون php که کاری با رنگ input نداره و فقط محتوایش را می خواند. ولی برای اشنایی بیشتر با کار با input می نویسم:
JavaScript:
    document.getElementById("id_of_input").style.backgroundColor =x2;

در تاپیک جاوا اسکریپت قبلا گفته بودیم جاوا اسکریپت می تواند محتوای یک پاراگراف را تغییر دهد ،
اگر به یک td یعنی ستون table بیاییم id نسبت دهیم ، می توانیم محتوای اون ستون جدول را هم با جاوا اسکریپت تغییر دهیم. اینکه td داری id میشه ، همون css منظورم است.
که فرقی با مقدار دادن به input در جاوا اسکریپت نداره:

JavaScript:
      document.getElementById("id_of_td").style.backgroundColor=x2;

حالا اگر input داخل ستون یک جدول باشه ، با کدهای بالا شما هم رنگ ستون و هم رنگ input و هم محتوای input را تغییر می دهید در شکل زیر ستون سمت راستی بهش تغییرات اعمال شده و به ستون سمت چپی تغییرات اعمال نشده:

Screenshot_۲۰۲۳-۰۵-۰۱_۰۸۱۸۲۲.jpg

محتوای این پست جاوا اسکریپت است نه php
ولی چون بحث ارتباط بین جاوا اسکریپت و php بود این پست اینجا زده شده.

حالااگر کسی php بلده ولی جاوا اسکریپت بلد نیست ، و بخواد این کدها را استفاده کنه باید بهش بگیم که کدهای جاوا اسکریپت باید بین تگهای script باشه. این طوری:
JavaScript:
<script>
let x1,x2,x3,x4,x5,x6,x7;



function myFunction() {
  document.getElementById("demo").innerHTML = "Hello World";
}

</script>


<button type="button"  style=" font-size:50px; height:120px; width:250px;" onclick="myFunction()">color test</button>

کد بالایک باتون داره که در منطقه html است و داخل منطقه بین تگ های script نیست. و این باتون تابعی را صدا می زنه که داخل منطقه جاوا اسکریپت است. و اون تابع یک جزیی که id اش demo است را درش می نویسه heloo world. حالا اون جز می تونه یک پاراگراف باشه
HTML:
<p id="demo"> abcdefgh </p>
که محتوای فلعی اش که الان abcdefgh است با اعمال کد میشه ، hello world.

حالا در پست فعلی ما با پاراگراف کار نکردیم ، با محتوای یک ستون جدول html و یک input کار کردیم ، کد input:

PHP:
    echo"<td id='id_of_td'>"; echo'number: <input type="text"    style="font-size: 24pt"  id="id_of_input" name="name_of_input" size="7">'; echo"</td>";

کد بالا با echo چاپ شده ، چاپ یک ستون جدول است و چاپ یک input.
می بینید که input هم id دارد و هم name.
من با اسمش در php صداش کردم و با id اش در جاوا اسکریپت ،
احتمالا با اسمش در جاوا اسکریپت هم میشه صدایش کرد ولی حالامهم نیست و من با id اش صدایش کردم.
بدون echo این طوری میشه ، یعنی به حالت html :
HTML:
    <td id='id_of_td'>
number: <input type="text"    style="font-size: 24pt"  id="id_of_input" name="name_of_input" size="7">
 </td>

اون id_of_td و id_of_input و name_of_input اسمهای اختیاری است ، من موقع ارسال در سایت تغییر دادم وگرنه اسم های مورد نیاز من بود قبلش.
 
آخرین ویرایش:

saalek110

Well-Known Member
تاریخ فارسی:
طرز استفاذه را از سایت بالا بخوانید

و از لینک زیر دانلود کنید:

البته از اونجا که دانلود می کنید هم طرز استفاده را گفته ولی سایت بالایی مختصر مفید گفته
یک فایل هست که یک جا آپلود کنید jdf.php است اسمش. بعد اینکلود کنید محلش را:
PHP:
require_once 'jdf.php';
منظورم اینه اگر در پوشه ای گذاشتید اسم پوشه را هم اولش بیاورید.

بقیه توضیح را از سایت بالا بخوانید.
 

saalek110

Well-Known Member
اگر می خواهید در یک کلمه بگه بروسر چیه
و خرت و پرت اضافه کنارش نباشه....
یک دوستی از لینک زیر زحمت نوشتن تابع اش را کشیده:

سالک: من خودم تست کردم. بروسرهای اپرا ، فایرفاکس و کروم را استفاده کردم ، درست اسمش را گفت.

کد تابع:
PHP:
function getBrowser() {
  $u_agent = $_SERVER['HTTP_USER_AGENT'];
  $bname = 'Unknown';
  $platform = 'Unknown';
  $version= "";

  //First get the platform?
  if (preg_match('/linux/i', $u_agent)) {
    $platform = 'linux';
  }elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
    $platform = 'mac';
  }elseif (preg_match('/windows|win32/i', $u_agent)) {
    $platform = 'windows';
  }

  // Next get the name of the useragent yes seperately and for good reason
  if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)){
    $bname = 'Internet Explorer';
    $ub = "MSIE";
  }elseif(preg_match('/Firefox/i',$u_agent)){
    $bname = 'Mozilla Firefox';
    $ub = "Firefox";
  }elseif(preg_match('/OPR/i',$u_agent)){
    $bname = 'Opera';
    $ub = "Opera";
  }elseif(preg_match('/Chrome/i',$u_agent) && !preg_match('/Edge/i',$u_agent)){
    $bname = 'Google Chrome';
    $ub = "Chrome";
  }elseif(preg_match('/Safari/i',$u_agent) && !preg_match('/Edge/i',$u_agent)){
    $bname = 'Apple Safari';
    $ub = "Safari";
  }elseif(preg_match('/Netscape/i',$u_agent)){
    $bname = 'Netscape';
    $ub = "Netscape";
  }elseif(preg_match('/Edge/i',$u_agent)){
    $bname = 'Edge';
    $ub = "Edge";
  }elseif(preg_match('/Trident/i',$u_agent)){
    $bname = 'Internet Explorer';
    $ub = "MSIE";
  }

  // finally get the correct version number
  $known = array('Version', $ub, 'other');
  $pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
  if (!preg_match_all($pattern, $u_agent, $matches)) {
    // we have no matching number just continue
  }
  // see how many we have
  $i = count($matches['browser']);
  if ($i != 1) {
    //we will have two since we are not using 'other' argument yet
    //see if version is before or after the name
    if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
        $version= $matches['version'][0];
    }else {
        $version= $matches['version'][1];
    }
  }else {
    $version= $matches['version'][0];
  }

  // check if we have a number
  if ($version==null || $version=="") {$version="?";}

  return array(
    'userAgent' => $u_agent,
    'name'      => $bname,
    'version'   => $version,
    'platform'  => $platform,
    'pattern'    => $pattern
  );
}

طرز استفاده از تابع:
PHP:
$ua=getBrowser();
$yourbrowser=  $ua['name'];

بروسرهای متفرقه را میگه کروم. شاید هسته اونها کروم است و فقط یک روکش دارند.
ولی اپرا و فایرفاکس را گفت اپرا و فایرفاکس.

متفرقه مثلا کیوی و hibrowser

در مورد hibrowser در اسم مفصلش کلمه hibrowser بود ولی تابع دوستمان در تک کلمه گفت کروم.به همین خاطر شاید بهتر باشه هم حالت تک کلمه را داشته باشیم هم اسم مفصل را.
 
آخرین ویرایش:

saalek110

Well-Known Member
Get به جایpost


ساختن فرم و ایجاد کد پاسخ دهنده به اون کمی سخته ، و اگر چندین دکمه و چندین کد پاسخ دهنده در صفحه باشه باعث شلوغی و سردرگمی میشه

یک راه اینه که دو فایل بسازید ، در یکی درخواست بدید و در دومی با get دستورات را انجام بدهید.
از نظر راحتی و خوانایی به نظرم بهتره.
البته جاهای خاصی کاربرد داره ، مثلا اگر قراره لیستی از دستورات را بدهیم و می خواهیم صفحه اول شلوغ نشه این کار شاید خوب باشه ، مثلایک صفحه ادمین سایت دارید و خرده دستور زیاد دارید ، اگر بخواهیدبرای هر عملیات یک صفحه درست کنید ، خیلی صفحه درست میشه و اگر با post بخواهید همه را در همون صفحه انجام بدهید ، باعث شلوغی صفحه میشه ،

پس یک صفحه ادمین داریم و یک صفحه ادمین دوم که پاسهای ادمین اول را گل می کنه.
اگر امنیت بیشتر می خواهید از post هم باید بشه بین دوصفحه استفاده کرد ولی من از get استفاده کردم.

اولای کار برای امنیت بیشتر خودتون را اذیت نکنید. راحتی را بیشتر ترجیح بدهید.
 

جدیدترین ارسال ها

بالا