2015-06-11 4 views
3

Я хочу создать систему с лицензией с моим собственным кодом, но дает мне ошибкуПредупреждение: Fread(): параметр Length должен быть больше, чем 0

код, как это и в lic.txt является тот же 1234567, что не так?

Это ошибка, если я ставлю @ перед FREAD доцент показать ошибку, но не открыть файл

Предупреждение: Fread(): параметр Length должно быть больше, чем 0 в/дома/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

. Кажется, у вас не установлено $ filename, оно должно быть целым числом выше 0. В значительной степени то, что говорит ошибка. – piddl0r

ответ

0

Существует причина, за

Предупреждение: Fread(): параметр Length должно быть больше, чем 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 /). Это делает код более читаемым –

Смежные вопросы