برگزیده های پرشین تولز

تکه کد های پی اچ پی (Code Snippets)

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
سلام
میخواستم این تاپیک رو در بخش آموزش بزنم که گویا اجازه ارسال تاپیک اونجا ندارم :hmm:
تو پست اول سعی میشه لیست تیکه کد ها رو بیارم.
امیدوارم همیاری کنید ...
-----------------------------------
1.باز کردن فایل زیپ
2.چک کردن صحت ایمیل
3.نمایش زمان باز شدن یک صفحه یا اجرای یک دستورالعمل
4.روشی دیگر برای چک کردن ایمیل (برای ورژن 5.2 به بالا)
5.نمایش سورس یک سایت
6.شمارش تعداد کلمات یک رشته
7.جستجو در سایت توسط گوگل (به همراه توضیحات بعضی از محدودیت هاش)
8.روشی دیگر برای نمایش سورس یک سایت
9.تغییر سطح دسترسی
10.تابعی ساده برای گرفتن whois
11. چک کردن صحت یک آی پی آدرس
12. چک کردن صحت کد ملی و توضیحاتی درباره استفاده از تابع count و sizeof در حلقه for
13.با کردن فایل tar با PHP
14.چک کردن https بودن سرور
15.کپی کردن یک فایل از آدرس درون هاست (دانلود یک فایل)
16.نمایش Gravatar
17.تشخیص امنیت پسورد
18.استفاده از FTP در PHP
19.اجبار کاربر به دانلود یک فایل با PHP
20. تبدیل HEX به RGB
21.تابع تبدیل حروف عجق وجق که با &# شروع میشوند مثل رشته  به حروف فارسی
22.تکه کد تغییر سایز عکس با PHP
23.آموزش اتصال به و ارسال ایمیل با PHP توسط Mandrill
 
Last edited:

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
با استفاده از کد زیر میتونید یک فایل زیپ شده رو توسط php از زیپ در بیارید .
PHP:
    function unzip($location,$newLocation){
        if(exec("unzip $location",$arr)){
            mkdir($newLocation);
            for($i = 1;$i< count($arr);$i++){
                $file = trim(preg_replace("~inflating: ~","",$arr[$i]));
                copy($location.'/'.$file,$newLocation.'/'.$file);
                unlink($location.'/'.$file);
            }
            return TRUE;
        }else{
            return FALSE;
        }
    }
?>
نحوه استفاده :
PHP:
<?php
include 'functions.php';
if(unzip('zipedfiles/test.zip','unziped/myNewZip'))
    echo 'Success!';
else
    echo 'Error';
؟>
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
این تابع برای چک کردن صحیح بودن ایمیل هستش:

PHP:
function is_valid_email($email, $test_mx = false)  
{  
    if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))  
        if($test_mx)  
        {  
            list($username, $domain) = split("@", $email);  
            return getmxrr($domain, $mxrecords);  
        }  
        else 
            return true;  
    else 
        return false;
}
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
نمایش زمان باز شدن یک صفحه یا اجرای یک دستورالعمل
PHP:
$start=microtime(true);
sleep(5);
$end=microtime(true);
echo number_format($end-$start,2);
 

Hasam

Registered User
تاریخ عضویت
2 اکتبر 2007
نوشته‌ها
665
لایک‌ها
159
محل سکونت
flynic.ir
تشکر از شما
موضوع خیلی خوبی هست اگر ادامه پیدا کنه. هم آموزش هست و هم ایده‌های دوستان دیگه مطرح میشه و نتایج کلی و بهتری به دست میاد.

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


این تابع برای چک کردن صحیح بودن ایمیل هستش:
در نسخه‌ی 5.2 تابع filter_var اضافه شده که روش ساده‌تری برای بررسی صحت آدرس ایمیل ارائه میده:

PHP:
var_dump(filter_var('[email protected]', FILTER_VALIDATE_EMAIL));
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
تشکر از شما
موضوع خیلی خوبی هست اگر ادامه پیدا کنه. هم آموزش هست و هم ایده‌های دوستان دیگه مطرح میشه و نتایج کلی و بهتری به دست میاد.

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

در نسخه‌ی 5.2 تابع filter_var اضافه شده که روش ساده‌تری برای بررسی صحت آدرس ایمیل ارائه میده:

PHP:
var_dump(filter_var('[email protected]', FILTER_VALIDATE_EMAIL));
filter_var عالیه،ولی هنوز عادت استفاده از این عبارات منظم روم مونده :دی باید کم کم به فکر ترکش باشم ...
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
با استفاده از این تیکه کد میتونید سورس یه سایت رو تو سایتون نشون بدید (مثل view source در مرورگرها)
PHP:
< ?php // display source code
$lines = file('http://google.com/'); // pick teh url
foreach ($lines as $line_num => $line) { 
    // loop thru each line and prepend line numbers
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "\n";
}
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
توسط کد زیر میتونید تعداد کلمات یک رشته را شمارش کنید :
PHP:
< ?php
    function word_count($sentence){
        $array = explode(" ", $sentence);
        return count($array);
    }
    $words = word_count("The is a group of words");
    echo $words;
?>
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
تاپیک خوبیه. ولی اگه میشه اول مقدمات رو آموزش بدید بهتر هست.
بعد از اون هم توابع رو آموزش بدید به نظرم بهتره.
پ.ن : آموزش ماهیگیری بهتر از ماهی دادنه!
سلام دوست عزیز
این تاپیک برای دوستانی هست که PHP بلد هستند و تو بعضی تیکه های پروژهاشون نیازمند ایده اند. این تیکه کدها ایده میدن :)
 

Hasam

Registered User
تاریخ عضویت
2 اکتبر 2007
نوشته‌ها
665
لایک‌ها
159
محل سکونت
flynic.ir
جستجوی گوگل
گاهی اوقات هست که نمایش نتایج جستجوی گوگل نیاز هست. برای این کار گوگل یک API رایگان ارائه داده، اما محدودیت‌های خاص خودش رو داره.

PHP:
$search_query = 'linux';

$data = file_get_contents('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=' . $search_query);
$data = json_decode($data);

print 'Google search results for "' . $search_query . ':<hr />';

foreach ($data->responseData->results as $item)
	print 'Title: ' . $item->title . '<br />URL: ' . $item->url . '<br />' . $item->content . '<hr />';

محدودیت‌ها:
در صورت چند request پی‌در‌پی با API بالا ممکن هست به جای نتایج پیامی با محتوای abuse یا suspected دریافت کنید. برای حل این مشکل از قسمت "گوگل کد" و در قسمت API ها لازم هست با گوگل اکانت لاگین کرده و یک key برای استفاده از این API دریافت کنید.
یا این حال با استفاده از key دریافت شده، فقط اجازه‌ی ارسال 100 کوئری در روز وجود داره. برای استفاده‌ی بیشتر لازم هست پرداختی داشته باشید (1000 کوئری 5$).
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
جستجوی گوگل
گاهی اوقات هست که نمایش نتایج جستجوی گوگل نیاز هست. برای این کار گوگل یک API رایگان ارائه داده، اما محدودیت‌های خاص خودش رو داره.

PHP:
$search_query = 'linux';

$data = file_get_contents('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=' . $search_query);
$data = json_decode($data);

print 'Google search results for "' . $search_query . ':<hr />';

foreach ($data->responseData->results as $item)
    print 'Title: ' . $item->title . '<br />URL: ' . $item->url . '<br />' . $item->content . '<hr />';

محدودیت‌ها:
در صورت چند request پی‌در‌پی با API بالا ممکن هست به جای نتایج پیامی با محتوای abuse یا suspected دریافت کنید. برای حل این مشکل از قسمت "گوگل کد" و در قسمت API ها لازم هست با گوگل اکانت لاگین کرده و یک key برای استفاده از این API دریافت کنید.
یا این حال با استفاده از key دریافت شده، فقط اجازه‌ی ارسال 100 کوئری در روز وجود داره. برای استفاده‌ی بیشتر لازم هست پرداختی داشته باشید (1000 کوئری 5$).

آقا من دارم میخوابم عمل چشم 2-3 هفته نیستم ، نذار بخوابه این تاپیک که شاید بقیه دوستان هم همیاری کنن توش ... :)
 

ardaviraf

کاربر تازه وارد
تاریخ عضویت
2 ژوئن 2013
نوشته‌ها
22
لایک‌ها
19
با استفاده از این تیکه کد میتونید سورس یه سایت رو تو سایتون نشون بدید (مثل view source در مرورگرها)
PHP:
< ?php // display source code
$lines = file('http://google.com/'); // pick teh url
foreach ($lines as $line_num => $line) { 
    // loop thru each line and prepend line numbers
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "\n";
}

روش بهتر:
PHP:
<?php
$source = file_get_contents('http://www.google.com');
echo $source;
 ?>
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
قاعدتا باید شبیه view source بشه
اینجا رو ببین:
html - Read source code with PHP - Stack Overflow

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

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
تغییر سطح دسترسی :

PHP:
< ?php
  function chmod_R($path, $filemode) 
{
  $dh = opendir($path);
while ($file = readdir($dh)) {if($file != '.' && $file != '..')
 {
$fullpath = $path.'/'.$file;echo 'chmod ' .$filemode.' '.$fullpath. "<br />";
chmod($fullpath, $filemode);
echo '<br />';
if(is_dir($fullpath)) 
{  chmod_R($fullpath, $filemode);  
}
}
}
  closedir($dh);
}
  chmod_R('.', 0755);
?>
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
تابعی ساده برای گرفتن whois :
PHP:
< ?
function whois($domain, $server="www.geektools.com")
{ 
$fp = fsockopen ($server, 43, &$errnr, &$errstr) or die("$errno: $errstr");
fputs($fp, "$domain\n");
while (!feof($fp))
echo fgets($fp, 2048);
fclose($fp); 
} 
 ?>
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
سلام
با استفاده از تیکه کد زیر می تونید صحت یک آی پی آدرس رو چک کنید (مثل چک کردن صحت ایمیل و ...)
PHP:
    $string = "255.255.255.255";
    if (preg_match(
    '/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',
    $string)) {
    echo "IP is good.";
    }
توی $string مقدار آی پی که میخواهید چک شود را وارد کنید
 

sh.n.n786

Registered User
تاریخ عضویت
28 سپتامبر 2011
نوشته‌ها
454
لایک‌ها
94
درود و ...
خیلی خوبه کم کم داشتم نا امید میشدم تالار PHP داشت مایه آبه رو ریزی میشد ( همش تبلیغات !!! )
خوب مهم نیست اول تشکر از استارتر حالا که تاپیک آموزشیه یه چنتایی هم ما بگیم :D

PHP:
for($i = 1;$i< count($arr);$i++){
...
این کد صحیحه اما اگه count بیون از حلقه باشه بهتره چون هر بار که حلقه برمیگرده مفسر PHP یه بار دیگه اینو صدا میزنه و اگه تعداد بالا باشه زمان بیشتری میبره و هر بار همین اتفاق می افته بهتره یه بار صدا زده بشه مثل این :
و به این ترتیب زمان اجرای اسکریپت از 1 ثانیه به 0.0001 تغییر میکنه و برای کسایی که براشون مهمه زمانه لود شدن اسکریپت بسیار حیاتیه.
PHP:
$cnt = count($arr);
for($i = 1;$i< $cnt;$i++){
...
شبیه view source در نمیاد به file_get_contents :دی
بله چون تابع htmlentities تگ های HTML رو خنثی میکنه و برای همین میتونید اونو ببینید

اعتبار سنجی کد ملی :
PHP:
 function nCode($code) {
        $code = substr($code, 0, 10);
        $sum = 0;
        for($i = 0; $i < 9; $i++) {
            $sum += ((10 - $i) * substr($code, $i, 1));
        }
        $sum %= 11;
        if($sum > 2) {
            $sum = 11 - $sum;
        }
        return ($sum == substr($code, -1));
    }
موفق باشید
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
درود و ...
خیلی خوبه کم کم داشتم نا امید میشدم تالار PHP داشت مایه آبه رو ریزی میشد ( همش تبلیغات !!! )
خوب مهم نیست اول تشکر از استارتر حالا که تاپیک آموزشیه یه چنتایی هم ما بگیم :D
سلام
واقعا هم همینطور بودش ، امید دارم پیشرفت کنه این تاپیک و بخش PHP تا دور هم چیزهای جدید یاد بگیریم :)
آدرس پستتون
این کد صحیحه اما اگه count بیون از حلقه باشه بهتره چون هر بار که حلقه برمیگرده مفسر PHP یه بار دیگه اینو صدا میزنه و اگه تعداد بالا باشه زمان بیشتری میبره و هر بار همین اتفاق می افته بهتره یه بار صدا زده بشه مثل این :
البته تابع sizeof هم مثل count عمل میکنه و در حلقه ترجیحا استفاده نشه بهتره . در صورت امکان تو پست خودتون این تابع رو هم ذکر کنید که بعضی از دوستان فکر نکنند فقط این مورد برای count هستش.
ممنون
بله چون تابع htmlentities تگ های HTML رو خنثی میکنه و برای همین میتونید اونو ببینید
دقیقا :)
 
بالا