رفتن به مطلب

کد و تابع php کار نمیکنه


پست های پیشنهاد شده

با سلام و خسته نباشید

من میخوام با استفاده از این کد :


<?php
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $behnam, $matches);
echo $matches['0'];
?>

قیمت هارو از سایت

http://widgets.farsnews.com/cars

فراخوانی بکنم اما کار نمیکنه و صفحه سفید میاد

توی لوکال هاست و با نرم افزار easyphp بدون مشکل کار میکنه اما روی هاست کار نمیکنه

میشه ببینید مشکل از کجاست ؟

ممنون

لینک به ارسال

این کد شما ناقصه فرقی هم نمی کنه لوکال یا غیر لوکال این بخش کد به تنهایی کافی نیست و باید مقدار $matches هم براش تعریف بشه


$matches = "توضیح یا فراخوانی یک تابع"

احتمالا چند خط بالاتر باید مقدار به این صورت باشه

لینک به ارسال

این کد شما ناقصه فرقی هم نمی کنه لوکال یا غیر لوکال این بخش کد به تنهایی کافی نیست و باید مقدار $matches هم براش تعریف بشه


$matches = "توضیح یا فراخوانی یک تابع"

احتمالا چند خط بالاتر باید مقدار به این صورت باشه

ممنون از پاسخ

اگر همین کد را داخل لوکال هاست تست کنید میبینید که به درستی کار میکنه و فراخوانی میکنه اما روی هاست کار نمیکنه

روی لوکال به درستی میاره ملاحظه کنید :

4zz0b6066gwacci3muj9.jpg

لینک به ارسال

این کد شما ناقصه فرقی هم نمی کنه لوکال یا غیر لوکال این بخش کد به تنهایی کافی نیست و باید مقدار $matches هم براش تعریف بشه


$matches = "توضیح یا فراخوانی یک تابع"

احتمالا چند خط بالاتر باید مقدار به این صورت باشه

آقای فخار عزیز من خودم چند بار تست کردم متوجه شدم این سایت کدی استفاده میکنه که نمیزاره فراخوانی بکنی

کد را به صورت کامل استفاده کردم که تگ body را کامل بیاره :


<?php
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<body>.*?body>/s', $behnam, $matches);
echo $matches['0'];
?>

که نتیجه این شد :

0gxz8sarduwz9q9muucl.jpg

کدهای داخل صفحه هم اینه :


<body><h1>Object Moved</h1>This document may be found <a HREF="http://widgets.farsnews.com/cars/">here</a></body>

لینک به ارسال

متوجه preg_match نشدم

الان مشکلتون چیه؟

کد را کجا گذاشتید که کار نکرده

مستندات تابع رو بخونید

http://ir1.php.net/m....preg-match.php

لینک به ارسال

متوجه preg_match نشدم

الان مشکلتون چیه؟

کد را کجا گذاشتید که کار نکرده

مستندات تابع رو بخونید

http://ir1.php.net/m....preg-match.php

ببینید آقای فخار عزیز این کد من برای مثال همین انجمن خودتون رو به درستی میاره :


<?php
$behnam = file_get_contents("http://wp-parsi.com");
preg_match('/<body>.*?body>/s', $behnam, $matches);
echo $matches['0'];
?>

و هیچ مشکلی نداره

اما برای سایتی که ذکر کردم وقتی اینو استفاده میکنم :


<?php
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<body>.*?body>/s', $behnam, $matches);
echo $matches['0'];
?>

با خطای زیر روبرو میشم :

0gxz8sarduwz9q9muucl.jpg

برای همه سایت ها به درستی کار میکنه اما برای این سایت :

http://widgets.farsnews.com/cars

کار نمیکنه

لینک به ارسال

آهان متوجه شدم خب اینکه مسلمه من در مورد این کدی که میگیرید تو گوگل سرچ کردم به نظرم یه محدودیتی روی سایت گذاشته با استفاده از session باید بیشتر بررسی کنید

بله خودم هم جستجو کردم ولی نمیدونم این محدودیت چی هست و چرا کار نمیکنه

بزارید ببینیم آقای فخار میدونن باید چیکار کرد یا خیر

لینک به ارسال

به php.ini دسترسی دارید؟

اگر دارید مقدار تابع curl رو از false به true تبدیل کنید و چک کنید

لینک به ارسال

به php.ini دسترسی دارید؟

اگر دارید مقدار تابع curl رو از false به true تبدیل کنید و چک کنید

سلام آقای فخار

دسترسی ندارم ولی به هاستینگ گفتم و گفتم به صورت پیش فرض true میباشد

لینک به ارسال

سلام آقای فخار

دسترسی ندارم ولی به هاستینگ گفتم و گفتم به صورت پیش فرض true میباشد

توی تمام هاستینگ ها به صورت پیش فرض فعال هست

این سایتی که میخوای ازش فراخوانی کنی دسترسی یوزر داره یعنی چک میشه اگر کاربر بودی نمایش بده در غیر اینصورت همون خطارو بده

لینک به ارسال

توی تمام هاستینگ ها به صورت پیش فرض فعال هست

این سایتی که میخوای ازش فراخوانی کنی دسترسی یوزر داره یعنی چک میشه اگر کاربر بودی نمایش بده در غیر اینصورت همون خطارو بده

خوب الآن باید چیکارش بکنم؟

به php.ini دسترسی دارید؟

اگر دارید مقدار تابع curl رو از false به true تبدیل کنید و چک کنید

گفتند تمامي توابع php مثل curl و allow_url_fopen و ... روي هاستم فعاله

لینک به ارسال

نسخه php سایتتون هم که قطعا 4 به بالاست

این تابع پیش نیاز دیگه ای نداره فقط نسخه php باید بالاتر از چهار باشه

لینک به ارسال

نسخه php سایتتون هم که قطعا 4 به بالاست

این تابع پیش نیاز دیگه ای نداره فقط نسخه php باید بالاتر از چهار باشه

تشکر از پاسخ گوئی

بله نسخه php 5.4 هست

آقای فخار عزیز اگر خودتون تست کنید متوجه میشید خیلی جالبه روی لوکال هاست و با نرم افزار easyphp درست میاره و مشکلی نداره اما روی هاست نمیاره هاستینگ هم میگه تمامی توابع فعاله و مشکل از کد php شماست

ویرایش شده توسط beh9am
لینک به ارسال

البته کار اصلی تابع اینکار نیست و اینکه برای این مورد به مشکل بخوره تقریبا طبیعیه این تابع وظیفه اش چک کردن content

حالا با یک نشانی داخلی (بدون hhtp) تست بگیرید ببینید کار می کنه یا خیر

لینک به ارسال

تشکر از پاسخ گوئی

بله نسخه php 5.4 هست

آقای فخار عزیز اگر خودتون تست کنید متوجه میشید خیلی جالبه روی لوکال هاست و با نرم افزار easyphp درست میاره و مشکلی نداره اما روی هاست نمیاره هاستینگ هم میگه تمامی توابع فعاله و مشکل از کد php شماست

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

1 - بررسی ارور ها :


error_reporting(-1);
ini_set('display_errors','On');[/left]


[left]

خطوط بالا رو بزارید ابتدای کدتون و ارور هایی که میده رو ارسال کنید.

2 - نحوه کارتون رو عوض کنید شاید به نوع مرورگر حساس باشه. یعنی هدر را توسط کورل ست کنید و بررسی کنید ببینید جواب میده یا نه. موفق باشید.

ویرایش شده توسط parsigroup
لینک به ارسال

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

1 - بررسی ارور ها :


error_reporting(-1);
ini_set('display_errors','On');[/left]


[left]

خطوط بالا رو بزارید ابتدای کدتون و ارور هایی که میده رو ارسال کنید.

2 - نحوه کارتون رو عوض کنید شاید به نوع مرورگر حساس باشه. یعنی هدر را توسط کورل ست کنید و بررسی کنید ببینید جواب میده یا نه. موفق باشید.

تشکر بابت پاسخگوئی

این خطارو داد :


Notice: Undefined index: 0 in /home4/biman/public_html/cars.php on line 6

کدهامم اینه :


<?php
error_reporting(-1);
ini_set('display_errors','On');
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $behnam, $matches);
echo $matches['0'];
?>

البته کار اصلی تابع اینکار نیست و اینکه برای این مورد به مشکل بخوره تقریبا طبیعیه این تابع وظیفه اش چک کردن content

حالا با یک نشانی داخلی (بدون hhtp) تست بگیرید ببینید کار می کنه یا خیر

آقای فخار گرامی تشکر از پیگیر بودنتون و پاسخ

من خودم در استفاده از php بسیار مبتدی هستم و اگر خدا بخواد دارم کم کم شروع میکنم به تست و کار کردن و یاد بگیرم

بدون نشانی هم نمیاره

فقط برای این سایت کاتر نمیکنه و اگر همین کد را برای انجمن خودتون تست کنید بدون مشکل فراخوانی میکنه !

لینک به ارسال

دوست عزیز اینو تست کنید کار میکنه :


<?php
$kasra = file_get_contents("http://widgets.farsnews.com/cars/");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $kasra, $matches);
echo $matches['0'];
?>

یا اگر بازم کار نکرد ( که بعید میدونم چون تست کردم ) از این استفاده کنید که با Curl هست :


<?php
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://widgets.farsnews.com/cars/');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);
$kasra = curl_exec($ch);
preg_match('/<body>.*?body>/s', $kasra, $matches);
echo $matches['0'];
?>

به صورت 100% تست کردم با چند تا هاست متفاوت و بدون مشکل کار میکنن

لینک به ارسال

تشکر بابت پاسخگوئی

این خطارو داد :


Notice: Undefined index: 0 in /home4/biman/public_html/cars.php on line 6

کدهامم اینه :


<?php
error_reporting(-1);
ini_set('display_errors','On');
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $behnam, $matches);
echo $matches['0'];
?>

آقای فخار گرامی تشکر از پیگیر بودنتون و پاسخ

من خودم در استفاده از php بسیار مبتدی هستم و اگر خدا بخواد دارم کم کم شروع میکنم به تست و کار کردن و یاد بگیرم

بدون نشانی هم نمیاره

فقط برای این سایت کاتر نمیکنه و اگر همین کد را برای انجمن خودتون تست کنید بدون مشکل فراخوانی میکنه !

نکته: اینجا انجمن من نیست من هم مثل شما کاربرم و با هدف یادگیری می آم انجمن

البته من منظورم این بود که یکی از صفحات سایت خودتون رو با این کد بخونید

نه اینکه همون نشانی رو

لینک به ارسال

تشکر بابت پاسخگوئی

این خطارو داد :


Notice: Undefined index: 0 in /home4/biman/public_html/cars.php on line 6

کدهامم اینه :


<?php
error_reporting(-1);
ini_set('display_errors','On');
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $behnam, $matches);
echo $matches['0'];
?>

آقای فخار گرامی تشکر از پیگیر بودنتون و پاسخ

من خودم در استفاده از php بسیار مبتدی هستم و اگر خدا بخواد دارم کم کم شروع میکنم به تست و کار کردن و یاد بگیرم

بدون نشانی هم نمیاره

فقط برای این سایت کاتر نمیکنه و اگر همین کد را برای انجمن خودتون تست کنید بدون مشکل فراخوانی میکنه !

شما کدت رو به این صورت تغییر بده :


<?php
error_reporting(-1);
ini_set('display_errors','On');
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $behnam, $matches);
print_r($matches);
?>[/left]


[left]

این ارور یعنی توی متغییر matches که یک آرایه هست خانه ای با ایندکس صفر موجود نیست.

لینک به ارسال

دوست عزیز اینو تست کنید کار میکنه :


<?php
$kasra = file_get_contents("http://widgets.farsnews.com/cars/");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $kasra, $matches);
echo $matches['0'];
?>

یا اگر بازم کار نکرد ( که بعید میدونم چون تست کردم ) از این استفاده کنید که با Curl هست :


<?php
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://widgets.farsnews.com/cars/');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);
$kasra = curl_exec($ch);
preg_match('/<body>.*?body>/s', $kasra, $matches);
echo $matches['0'];
?>

به صورت 100% تست کردم با چند تا هاست متفاوت و بدون مشکل کار میکنن

بله تشکر تست کردم و کار کرد

نکته: اینجا انجمن من نیست من هم مثل شما کاربرم و با هدف یادگیری می آم انجمن

البته من منظورم این بود که یکی از صفحات سایت خودتون رو با این کد بخونید

نه اینکه همون نشانی رو

ببخشید آقای فخار من به اسمتون توجهی نکردم و خواستم استاد صداتون کنم که شایستتون باشه

به روی چشم

البته من منظورم این بود که یکی از صفحات سایت خودتون رو با این کد بخونید

نه اینکه همون نشانی رو

با سایت خودم هم تست میکردم و کار میکرد یعنی با همه سایت ها تست کردم و کار میکرد اما با اون سایت نه ولی کدی که جناب کسرا دادن کار کرد و متوجه نشدم مشکل کجا بود چون کدها مشابه بودن !

شما کدت رو به این صورت تغییر بده :


<?php
error_reporting(-1);
ini_set('display_errors','On');
$behnam = file_get_contents("http://widgets.farsnews.com/cars");
preg_match('/<table class="tbl" cellpadding="0" cellspacing="0">.*?form>/s', $behnam, $matches);
print_r($matches);
?>[/left]


[left]

این ارور یعنی توی متغییر matches که یک آرایه هست خانه ای با ایندکس صفر موجود نیست.

کد شما هم صفحه سفید میاره

با کد جناب کسرا مشکلم حل شد و الان جدول هارو میاره

الان مشکلم اینه که گاهی خطای تایم اوت میده چون طول میکشه از سایت بخونه ومیخوام کاری بکنم که این اطلاعات در یک فایلروی هاستم ذخیره بشه مثلا فایلی به نام mashin.txt یا mashin.php و بعد کد از روی هاست خودم فراخوانی بکنه

یا اگر اون اطلاعات را تو دیتابیس ذخیره بکنه و بعد از اون بخونه عالی میشه

این کارو چجوری میتونم انجام بدم ؟

تشکر از پاسخگوئیتون

ویرایش شده توسط beh9am
لینک به ارسال

از این کلاس برای ذخیره اطلاعات توی هاستتون میتونید استفاده کنید

<?php

/*

* cache class ~ put in file

*

* @author : reza <info@rezaonline.net>

* @pakage : rezaworkshop.ir

* @varsion : 1.0

* @date : 1392/6/27

*/

class cache

{

static private $ins=null;

static private $perfix = '';

static private $cacheDir = null;

static public function ins()

{

if(self::$cacheDir===null)

self::$cacheDir = dirname(__FILE__).'/cache/';

if( ! file_exists(self::$cacheDir))

{

@mkdir(self::$cacheDir, 0777);

$fp = fopen(self::$cacheDir.'index.html', "wb");

if (!$fp)

die('eroor in make cache dir file in file ~ `'. __FILE__ .'` and line `'.__LINE__ .'`');

fwrite($fp, 'cache its work :) <br> www.rezaonline.net');

fclose($fp);

}

if(self::$ins===null)

self::$ins = new self;

return self::$ins;

}

public function setPerfix($str = '')

{

self::$perfix = strip_tags($str);

}

public function hash($str='')

{

return self::$perfix.md5($str);

}

public function set($key=2 , $val=2,$expire=3600)

{

return $this->add($key,$val,$expire);

}

public function add($key=1,$val=1 ,$expire=3600)

{

self::delete($key);

$data = array(

'key'=>$key ,

'val'=>$val ,

'expire'=>time() + $expire ,

);

$fileName = self::hash($key).'.php';

$fp = fopen(self::$cacheDir.$fileName, "wb");

if (!$fp)

die('eroor in make cache dir file in file ~ `'. __FILE__ .'` and line `'.__LINE__ .'`');

fwrite($fp, '<?php die; ?>'.serialize($data));

fclose($fp);

return file_exists(self::$cacheDir.$fileName);

}

public function get($key=1)

{

$fileName = self::hash($key).'.php';

$f = self::$cacheDir.$fileName;

if( ! file_exists($f))

return null;

$data = file_get_contents($f);

if(empty($data))

return NULL;

$data = str_replace('<?php die; ?>','',$data);

$data = unserialize($data);

if(empty($data['expire']) or $data['expire']<time())

{

self::delete($key);

return NULL;

}

if(empty($data['key']) or $data['key']!=$key)

{

self::delete($key);

return NULL;

}

return $data['val'];

}

public function delete($key=1)

{

$fileName = self::hash($key).'.php';

if( ! file_exists(self::$cacheDir.$fileName))

return true;

@unlink(self::$cacheDir.$fileName);

if(file_exists(self::$cacheDir.$fileName))

return false;

return true;

}

public function flush()

{

$path = self::$cacheDir;

if(($handle=opendir($path))===false)

return;

while(($file=readdir($handle))!==false)

{

if($file[0]==='.')

continue;

$fullPath=$path.DIRECTORY_SEPARATOR.$file;

@unlink($fullPath);

}

closedir($handle);

}

}

اینم نحوه ذخیره و بازیابی


cache::ins()->add('name','reza',3600); // save for 3600 second
echo cache::ins()->get('name'); //read

ویرایش شده توسط NESTED
درج کد در bbcode longbox
لینک به ارسال

از این کلاس برای ذخیره اطلاعات توی هاستتون میتونید استفاده کنید

<?php

/*

* cache class ~ put in file

*

* @author : reza <info@rezaonline.net>

* @pakage : rezaworkshop.ir

* @varsion : 1.0

* @date : 1392/6/27

*/

class cache

{

static private $ins=null;

static private $perfix = '';

static private $cacheDir = null;

static public function ins()

{

if(self::$cacheDir===null)

self::$cacheDir = dirname(__FILE__).'/cache/';

if( ! file_exists(self::$cacheDir))

{

@mkdir(self::$cacheDir, 0777);

$fp = fopen(self::$cacheDir.'index.html', "wb");

if (!$fp)

die('eroor in make cache dir file in file ~ `'. __FILE__ .'` and line `'.__LINE__ .'`');

fwrite($fp, 'cache its work :) <br> www.rezaonline.net');

fclose($fp);

}

if(self::$ins===null)

self::$ins = new self;

return self::$ins;

}

public function setPerfix($str = '')

{

self::$perfix = strip_tags($str);

}

public function hash($str='')

{

return self::$perfix.md5($str);

}

public function set($key=2 , $val=2,$expire=3600)

{

return $this->add($key,$val,$expire);

}

public function add($key=1,$val=1 ,$expire=3600)

{

self::delete($key);

$data = array(

'key'=>$key ,

'val'=>$val ,

'expire'=>time() + $expire ,

);

$fileName = self::hash($key).'.php';

$fp = fopen(self::$cacheDir.$fileName, "wb");

if (!$fp)

die('eroor in make cache dir file in file ~ `'. __FILE__ .'` and line `'.__LINE__ .'`');

fwrite($fp, '<?php die; ?>'.serialize($data));

fclose($fp);

return file_exists(self::$cacheDir.$fileName);

}

public function get($key=1)

{

$fileName = self::hash($key).'.php';

$f = self::$cacheDir.$fileName;

if( ! file_exists($f))

return null;

$data = file_get_contents($f);

if(empty($data))

return NULL;

$data = str_replace('<?php die; ?>','',$data);

$data = unserialize($data);

if(empty($data['expire']) or $data['expire']<time())

{

self::delete($key);

return NULL;

}

if(empty($data['key']) or $data['key']!=$key)

{

self::delete($key);

return NULL;

}

return $data['val'];

}

public function delete($key=1)

{

$fileName = self::hash($key).'.php';

if( ! file_exists(self::$cacheDir.$fileName))

return true;

@unlink(self::$cacheDir.$fileName);

if(file_exists(self::$cacheDir.$fileName))

return false;

return true;

}

public function flush()

{

$path = self::$cacheDir;

if(($handle=opendir($path))===false)

return;

while(($file=readdir($handle))!==false)

{

if($file[0]==='.')

continue;

$fullPath=$path.DIRECTORY_SEPARATOR.$file;

@unlink($fullPath);

}

closedir($handle);

}

}

اینم نحوه ذخیره و بازیابی


cache::ins()->add('name','reza',3600); // save for 3600 second
echo cache::ins()->get('name'); //read

تشکر

الان چطور میتونم کد شمارو با اون کد قبلی که فراخوانی میکنه مخلوط بکنم ؟

لینک به ارسال
  • 2 هفته بعد...

به گفتگو بپیوندید

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

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...