2015-06-11 43 views
3

我想創建一個與自己的代碼的許可證制度,但給我一個錯誤警告:FREAD():長度參數必須大於0

的代碼是這樣的,並lic.txt是同樣的1234567,有什麼不對?

這是錯誤,如果我把@在FREAD面前dosent顯示錯誤,但不打開文件

警告:FREAD():長度參數必須大於0在/ home/u422978792 /的public_html/platforma /許可證/上線的index.php 7 無效許可證密鑰

 <?php 



    $fp = fopen("http://platforma.dar-project.org/license/lic.txt", "r"); 
    stream_set_timeout($fp, 10); 
    $license = fread($fp, filesize($filename)); 
    fclose($fp); 

    if ($license == "1234567") { 

    echo "Your license key is valid"; 

    } else { 

    die("Invalid license key"); 
    } 

    ?> 
+0

其中是$ filename? – Goikiu

+0

你有沒有想過這件事?大家誰訪問這個PHP腳本將會看到「您的許可密鑰有效」 – Daan

+0

你似乎並沒有設置$文件名它需要高於整數0差不多的錯誤說什麼.... – piddl0r

回答

0

有後面

一個原因

警告:FREAD():長度參數必須大於0

文件lic.txt應該是空的。因此,fread()無法讀取文件中的任何內容。

因此,您的狀況會導致回聲'無效的許可證密鑰'。

0

$filename未定義。這樣做:

$filename = "lic.txt";

不要忘記追加的URL。我建議你把它作爲一個不同的變量。

+0

在'filesize'函數中似乎也有問題 –

3

使用之前您需要檢查文件大小if(filesize($my_file) > 0)fread

例如:

<?php 

$my_file = 'list.txt'; 
$handle = fopen($my_file, 'r'); 
$data = ''; 
if(filesize($my_file) > 0) 
    $data = fread($handle,filesize($my_file)); 
//--- 
echo $data; 
//--- 
fclose($handle); 

?> 
0

PHP將返回警告和/或如果文件不存在錯誤(也許是拼寫錯誤或格式錯誤的URL),或者如果文件大小爲0字節。

這是一個小函數,用於驗證並返回字符串中的文件內容,或者返回一個「-1」,在這種情況下,您知道讀取時出現問題。

$file_content = ReadtextFile("file.txt"); // caller 


function ReadtextFile($FileName) 
    { 
    if (file_exists($FileName)) 
    { 
    $file_size = filesize($FileName); 
    if ($file_size == 0) return ""; 
    } 
    else return "-1"; 

    if (!$fp = fopen($FileName, "r")) return "-1"; 

    $s01 = fread($fp, filesize($FileName)); 
    fclose($fp); 

    return $s01; 
    } 
+0

您是否至少可以正確格式化您的代碼?爲什麼不使用'file_get_contents'? –

+0

感謝您的評論,我覺得這個格式正確。已編程超過30年。對不起,你沒有覺得它有用。 – Rick

+0

不客氣與此格式的工作,但當前的PHP編程,建議用講的變量和格式如[PSR-2](https://www.php-fig.org/psr/psr-2工作/)。這使得代碼更具可讀性 –

相關問題