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

سلام خدمت همه.

مشکلی برای باز کردن و خواندن اطلاعات یک فایل مثل: index.php?id=1 دارم. البته این فایل قراره از سرور دیگه ای خونده بشه. به عنوان مثال شما در نظر بگیرید که قراره اطلاعات یه فایلی مثل همینی که گفتم در سرور دیگه ای به نمایش گذاشته بشه. خوب باید اول فایل باز بشه و بعدم خونده بشه. اما مشکل اینجاست که فایل به صورت id=1? باز نمیشه و فقط index.php باز میشه و در نتیجه اطلاعات به درستی نمایش پیدا نمی کنه.

اگه امکان داره لطفا دلیل این اشکال را بگید و چه راه حلی هم داره که درست فایل باز بشه.

اینم کدها برای باز کدن و خواندن فایل:

PHP:
$Fopen = @fopen( @"index.php?id=1", "r" );
$Content = fgetc( $Fopen );
 
آخرین ویرایش:

ooghry

Member
اين کد من برای ويرايش صفحات نوشتم،از مثالای راهنماي php،فکر کنم مشکل شمارو حل ميکنه.

PHP:
<?php
$lines = file($file);
foreach ($lines as $line_num => $line) {
    echo  htmlspecialchars($line) ;
}
?>

-----
PHP:
<?
header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 

?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<title>New Page 1</title>
</head>

<body>





<?

if ( isset($_POST['B1'] )){

$filename= $_POST['file'];
$somecontent=$_POST['source'];

if (is_writable($filename)) {

    // In our example we're opening $filename in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $somecontent will go when we fwrite() it.
    if (!$handle = fopen($filename, 'w')) {
         echo "Cannot open file ($filename)";
         exit;
    }


    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote to file ($filename)";

    fclose($handle);

} else {
    echo "The file $filename is not writable";
}



}else if ( isset ($_GET['file'] )){

$file=$_GET['file'];


?>

<form method="POST" action="milad.php">
<input name="file" value="<? echo $file ?>" type="hidden" >
<textarea name="source" cols="152" rows="45">
<?php
$lines = file($file);
foreach ($lines as $line_num => $line) {
    echo  htmlspecialchars($line) ;
}
?> 
</textarea>



 
  <p align="center"><input type="submit" value="Submit" name="B1">;&nbsp;&nbsp;&nbsp;
  <input type="reset" value="Reset" name="B2"></p>
</form>

<? } ?>



</body>

</html>
 
سلام خدمت همه!

مرسی از توجهت ooghry جان. میدونم شما در در چه موردی صحبت کردید. اما مشکل من الان چیز دیگست. یکی از توابعی که میاد syntax رو میشناسه get_file_contents هست. یعنی تا اینجا index.php?id=1 بطور کامل شناسایی شده و اطلاعات فراخونی شده. اما اشکالی دیگه برام پیش اومده که حقیقتا خودم نمیدونم چرا اینجوری شده! :sad:

در اصل من میخوام یجور لایسنس برای سی ام اس ام بذارم. که کسی که سیستم رو خریداری کرده موقع وارد شدن به ادمین جدا از یوزر و رمز عبور یه کدی که از من گرفته هم وارد کنه و سیستم بیاد با توجه به کدی که طرف وارد کرده از سرور من فایل مورد نظر برای تایید لایسنس رو پردازش کنه و اگر تایید کرد ادامه بده.

که مشکل اساسی من الان همون if ای هست که باید ببینه برابر هست یا نه. فایلی که در سرور منه برای هر کد یه دامین میشناسه. وقتی کاربر کد رو وارد میکنه اگه کدش درست باشه فایلی که در سرور منه خروجیش همون دامینی هست که من براش ثبت کردم. واسه همینم if میاد بررسی میکنه که اون دامینی که خروجیه با دامینی که الان سیستم توش هست برابره یا نه که مشکل هم اینجاست. یعنی خروجی همون دامین هست اما نمیدونم چرا نمیتونه برابر با دامین فعلی باشه!

فکر کنم کامل توضیح داده باشم دیگه. اینم یه سری از کدهایی که نوشتم:

فایلی که در سرور منه:

PHP:
<?php
function validate(){
if(isset($_GET['code']))
{
$sql = "SELECT * FROM lisence WHERE lisence='".$_GET['code']."'";
$result = $db->query($sql);
$row = $result->fetch();
$domain = $row['domain'];
return trim($domain);
}
}
echo validate();
?>

اینم یه مثال برای دیدن:

اینم فایل لوگین که در سرور خریدار هست:
PHP:
$Validate_Text = file_get_contents("http://www.info.../Vali../Lise...php?code=".$_POST['CODE']."");

if ($_SERVER['HTTP_HOST'] == $Validate_Text)
انجام مراحل


منتظرم/.:)
 

ooghry

Member
اینو یه تست بزن
PHP:
$file="http://www.info.../Vali../Lise...php?code=".$_POST['CODE']; // ;-D
$Validate_Text = file($file); 

if ($_SERVER['HTTP_HOST'] == $Validate_Text) 
انجام مراحل
باید درست کار کنه
 
آخرین ویرایش:
اینم نشد. نمیدونم واقعا چرا نمیشه. همون کدی هم که خودم نوشتم مشکلی نداره اما :sad:
 
سلام خدمت همه.

بالاخره تونستم بفهم مشکل از کجا بوده :D

همونطوری که میدونید اگه اطلاعات دریافت بشه و همون اطلاعات echo بشند فقط حاصل نمایش داده میشه اما در پشت پرده یه سری کاراکترها هم در فایل وجود داره که نمایش داده نمیشند. :wink:

اول از همه از دوست عزیزم amir jafari تشکر می کنم که file_get_contents رو بهم معرفی کرد که البته قبلا ازش استفاده کرده بودم اما نه زیاد و تونستم از این طریق اطلاعات رو کامل دریافت کنم. از طرف دیگر هم از جناب ooghry تشکر می کنم که حداقل توجه داشتند. :)

گفتم روش حل رو هم برای شما بذارم که اگه شما هم با این مشکل برخوردید رفعش کنید!( البته حمل بر جسارت نباشه. )

وقتی فایل توسط get_file_contents فراخوانی میشه نتیجه رو با تابع htmlentities بازیابی می کنیم تا ببینیم همون کاراکترهای مخفی چی هستند که برای من کدهای اسکیش میشدند این:


&iuml;&raquo;&iquest; &iuml;&raquo;&iquest;

حالا هم با تابع str_replace این کاراکترها رو بر میداریم تا دامین درست ست بشه.


البته در آخر یه گله ای هم دارم:

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

قصد جسارت و توهینی نداشتم. امیدوارم منظورم و درست متوجه شده باشید.

موفق باشید/.
 

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

بالا