הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה ב-fread (https://hosts.co.il/forums/showthread.php?t=73600)

Jonathan Zeierman 15-04-09 00:19

בעיה ב-fread
 
שלום לכולם.
אני מנסה לערוך קובץ וכשאני מנסה לקרוא אותו אני מקבל את השגיאה הבאה:
Warning: fread() [function.fread]: Length parameter must be greater than 0
הנה הקוד, הבעיה היא בשורה 36:
PHP קוד:

<center>
<h1>Uploading a file:</h1>
<form action="<?php echo $PHP_SELF?>" method="post" enctype="multipart/form-data">  
Upload file: <input type="file" name="my_file"/>
<br/> 
<input type="submit" name="upload_file" value="Upload file!">
</form>
<br>
<h2>Open a file:</h2>
<form method="post">
<tr>
<td><gb>Name of the file to open:</gb></td>
<td><input type=text name="file" value="test.txt"></td>
</tr>
<tr>
<input type="submit" name="open_file" value="Open file!">
</form>
<br>
</center>
<?php
if(isset($_POST['upload_file']))    {
    if (!empty(
$_FILES["my_file"]["name"]))    {
        
$dir getcwd()."/files/"
        
move_uploaded_file($_FILES["my_file"]["tmp_name"] , $dir.$_FILES["my_file"]["name"]);  
        echo 
"<center><b>Message:</b></center>";
        echo 
"<center>The file was uploaded!</center>";
}
else    {
    echo 
"<center><b>Error:</b></center>";
    echo 
"<center>Falied to upload the file!</center>";
    }
}
if(isset(
$_POST['open_file']))    {
    echo 
"<center>Editing the file:<b>{$_POST['file']}</b></center>";
    
$file_open fopen("files/{$_POST['file']}""wb");
    
$text fread($file_openfilesize("files/{$_POST['file']}"));
    
$br_text str_replace("\n""<BR>"$text);
    echo 
"<center><tr><td><textarea rows='20' name='edit_area' cols='50' value='{$br_text}'></textarea></tr></td></center>";
    echo 
"<center><tr><td><input type='submit' name='edit_file' value='Edit file!'></tr></td></center>";
if(isset(
$_POST['edit_file']))    {
    
fwrite($file_open$_POST["edit_area"]);
    echo 
"<center><b>Message:</b></center>";
    echo 
"<center>Succsess to edit the file!</center>";
    }
    
fclose($file_open);
}
?>


Daniel 15-04-09 00:25

PHP קוד:

Warningfread() [function.fread]: Length parameter must be greater than 0 

נסתכל ב-php.net ונראה,
http://il.php.net/manual/en/function.fread.php
הפרמטר השני הוא "Length".

זאת אומרת שכנראה
PHP קוד:

filesize("files/{$_POST['file']}"

לא מחזיר תוצאות כמצופה.

תשים מעל השורה,
var_dump($_POST['file']);
ותראה בעצמך מה יוצא.

Jonathan Zeierman 15-04-09 00:27

ציטוט:

נכתב במקור על ידי MasterT (פרסם 708830)
PHP קוד:

Warningfread() [function.fread]: Length parameter must be greater than 0 

נסתכל ב-php.net ונראה,
http://il.php.net/manual/en/function.fread.php
הפרמטר השני הוא "Length".

זאת אומרת שכנראה
PHP קוד:

filesize("files/{$_POST['file']}"

לא מחזיר תוצאות כמצופה.

תשים מעל השורה,
var_dump($_POST['file']);
ותראה בעצמך מה יוצא.

מדפיס לי את התוצאה הבאה:
קוד:

string(8) "test.txt"
Warning: fread() [function.fread]: Length parameter must be greater than 0


Daniel 15-04-09 00:29

ציטוט:

נכתב במקור על ידי Yoni | Ventrilo.co.il (פרסם 708832)
מדפיס לי את התוצאה הבאה:
קוד:

string(8) "test.txt"
Warning: fread() [function.fread]: Length parameter must be greater than 0


אל תגרום לשיחה הזאת להיות משפט-משפט. האם הקובץ הזה באמת קיים בתיקיה המבוקשת?
(אגב, אני מקווה שיש את הדבר הבא בקוד שלך:
PHP קוד:

error_reporting(E_ALL); 

)

השלב הבא יהיה לעשות var_dump(filesize("files/{$_POST['file']}"));

Jonathan Zeierman 15-04-09 00:40

ציטוט:

נכתב במקור על ידי MasterT (פרסם 708833)
אל תגרום לשיחה הזאת להיות משפט-משפט. האם הקובץ הזה באמת קיים בתיקיה המבוקשת?
(אגב, אני מקווה שיש את הדבר הבא בקוד שלך:
PHP קוד:

error_reporting(E_ALL); 

)

השלב הבא יהיה לעשות var_dump(filesize("files/{$_POST['file']}"));

אין את הדבר בקוד שלי.
אני די חדש בכל ה- FOPEN וכו'.
זה מה שעשיתי:
PHP קוד:

<center>
<h1>Uploading a file:</h1>
<form action="<?php echo $PHP_SELF?>" method="post" enctype="multipart/form-data">  
Upload file: <input type="file" name="my_file"/>
<br/> 
<input type="submit" name="upload_file" value="Upload file!">
</form>
<br>
<h2>Open a file:</h2>
<form method="post">
<tr>
<td><gb>Name of the file to open:</gb></td>
<td><input type=text name="file" value="test.txt"></td>
</tr>
<tr>
<input type="submit" name="open_file" value="Open file!">
</form>
<br>
</center>
<?php
if(isset($_POST['upload_file']))    {
    if (!empty(
$_FILES["my_file"]["name"]))    {
        
$dir getcwd()."/files/"
        
move_uploaded_file($_FILES["my_file"]["tmp_name"] , $dir.$_FILES["my_file"]["name"]);  
        echo 
"<center><b>Message:</b></center>";
        echo 
"<center>The file was uploaded!</center>";
}
else    {
    echo 
"<center><b>Error:</b></center>";
    echo 
"<center>Falied to upload the file!</center>";
    }
}
if(isset(
$_POST['open_file']))    {
    echo 
"<center>Editing the file:<b>{$_POST['file']}</b></center>";
    
var_dump($_POST['file']);
    
var_dump(filesize("files/{$_POST['file']}"));
    
$file_open fopen("files/{$_POST['file']}""r");
    
$text fread($file_openfilesize("files/{$_POST['file']}"));
    
$br_text str_replace("\n""<BR>"$text);
    echo 
"<center><tr><td><textarea rows='20' name='edit_area' cols='50' value='{$br_text}'></textarea></tr></td></center>";
    echo 
"<center><tr><td><input type='submit' name='edit_file' value='Edit file!'></tr></td></center>";
//if(isset($_POST['edit_file']))    {
    //fwrite($file_open, $_POST["edit_area"]);
    //echo "<center><b>Message:</b></center>";
    //echo "<center>Succsess to edit the file!</center>";
    //}
    
fclose($file_open);
}
?>

מדפיס:
string(8) "test.txt" int(4)
ולא מראה לי שום דבר בתוך תיבת הטקסט.
עריכה:
נזכרתי כשיש textarea אין value.
ניסתי לפתוח תקובץ ולהדפיס לתוך text input, והדפיס.
איך אני מכניס לתוך textarea value?

DorOaki 15-04-09 14:39

PHP קוד:

<textarea>{$br_text}</textarea


בניה 15-04-09 14:45

ציטוט:

נכתב במקור על ידי DorOaki (פרסם 708917)
PHP קוד:

<textarea>{$br_text}</textarea


מומלץ להעביר את מה שאתה מדפיס לתוך ה textarea דרך htmlspecialchars
PHP קוד:

<textarea><?php echo htmlspecialchars($val); ?></textarea>

ובנוגע לבעיה, הפונקציה fread צריכה בפרמטר השני מספר של בייטים לקרוא, והמספר שהיא מקבלת בקוד שלך מהפונקציה filesize הוא 0, כי יש מצב שהקובץ ריק.
אז מה שאתה יכול לעשות זה לעשות תנאי שאם הקובץ בגודל 0, שפשוט לא יקרא את התוכן שלו והtextarea יהיה ריק.

intercooler3819 15-04-09 15:35

תריץ
is_file("files/$_POST['xxx']")

ותראה (:


כל הזמנים הם GMT +2. הזמן כעת הוא 21:25.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ