2015-06-11 44 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工作/)。这使得代码更具可读性 –

相关问题