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

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

dor77 04-02-11 19:33

בעיה מוזרה ברמות על.
 
זו בעיה כל כך מוזרה..
אני רוצה להגיד למערכת לאיפה להעלות את הקובץ.

ככזה הכל טוב ויפה:

PHP קוד:


$dir
="abc";
$uploaddir './uploads/'.$dir.'/audio/'

PHP קוד:


$dir
=$_COOKIE['username'];
$uploaddir './uploads/'.$dir.'/audio/'

ככה לא עובד.
לעוגייה קוראים username ויש עוגייה, בדקתי.
מוזר! מה יכולה להיות הבעיה?
מיליון פעם עבדתי ככה, בדף הזה זה לא עובד.

hi_sorie 04-02-11 19:52

אם אתה ממש בטוח שיש תוכן בתוך$_COOKIE['username'] אז :

האם יש הרשאה 777 בתיקייה עבור הערך של username ?
יש תיקייה בעבור הערך של username ?

נסה את זה ככה :

PHP קוד:



$dir
=$_COOKIE['username'];
$base './uploads/'.$dir.'/';

if(!
is_dir($base)){
    
mkdir($base0777));
}
$uploaddir $base.'audio/'

אמור להיות פיתרון לכל השאלות שלי...

BlueNosE 04-02-11 19:56

אתה יודע שאתה מסתכן פה עם העבודה מול הCOOKIE

dor77 04-02-11 20:00

לא עובד..
אני בטוח שיש הרשאות כי אם אני כותב את השם של התקייה במשום להציבו במשתנה אז הכל בסדר.
אני לא מסתכןן, אני עושה הצלבה מול המסד נתונים..גם אם תשנה את שם המשתמש בעוגייה, לא יתחבר לך.

BlueNosE 04-02-11 20:05

debug:

PHP קוד:

$dir="abc";
$uploaddir './uploads/'.$dir.'/audio/';  
echo 
$dir,"\n",$uploaddir;exit; 

PHP קוד:

$dir=$_COOKIE['username']; 
$uploaddir './uploads/'.$dir.'/audio/';  
echo 
$dir,"\n",$uploaddir;exit; 

אם פה הפלט שווה (תדאג שבמקום abc יהיה באמת את שם המשתמש שאתה בודק מולו), הבעיה היא בהמשך הקוד שלא עובד באופן שווה עם עוגיה, ולא בקטע שהבאת.

dor77 04-02-11 20:14

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 795106)
debug:

PHP קוד:

$dir="abc";
$uploaddir './uploads/'.$dir.'/audio/';  
echo 
$dir,"\n",$uploaddir;exit; 

PHP קוד:

$dir=$_COOKIE['username']; 
$uploaddir './uploads/'.$dir.'/audio/';  
echo 
$dir,"\n",$uploaddir;exit; 

אם פה הפלט שווה (תדאג שבמקום abc יהיה באמת את שם המשתמש שאתה בודק מולו), הבעיה היא בהמשך הקוד שלא עובד באופן שווה עם עוגיה, ולא בקטע שהבאת.

יצא פלט שווה

הנה כל הקוד:

PHP קוד:


<?php


$dir
=$_COOKIE['username'];
$uploaddir './uploads/'.$dir.'/audio/';  
$file $uploaddir basename($_FILES['uploadfile']['name']); 
$size=$_FILES['uploadfile']['size'];
if(
$size>5242880)
{
    echo 
"Error: file size > 5 MB";
    
unlink($_FILES['uploadfile']['tmp_name']);
    exit;
}
if (
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
  echo 
"success"
} else {
    echo 
"error ".$_FILES['uploadfile']['error']." --- ".$_FILES['uploadfile']['tmp_name']." %%% ".$file."($size)";
}


?>

תודה רבה!

BlueNosE 04-02-11 22:00

אז תבדוק עוד דברים.. תבדוק את $file ושאר המשתנים. הבעיה איפשהו שם, לא בקטע שהבאת.

dor77 04-02-11 23:58

אין מצב אחי, אני רק משנה את המשתנה במקום לתת לו ערך מהcookie אני נותן לו ערך רגיל כמו "dor" והוא קורא את הקבצים.
זה מטריף אותי..
מה יכולה להיות הבעיה?
איזו דרך יש לפתור את זה?

תודה.

BlueNosE 05-02-11 03:05

תקשיב אבל זה לא עובד ככה. האפשרות היחידה שאני יכול לחשוב עליה היא תו בלתי נראה או משהו כזה, אבל זה לא נראה לי המצב.
תצא מהקבעון שנכנסת אליו שהבעיה היא בקטע של הCOOKIE, כי אם הפלט זהה, הבעיה היא לא שם. תבדוק אם הפלט באמת זהה, תעשה בתנאי IF אם הStringים שווים ותבדוק איפה הבעיה - אם הם שווים אתה מחפש במקום הלא נכון.

dor77 05-02-11 12:41

אחי אחי, סתכל,

ככה זה עובד:

PHP קוד:


<?php
$uploaddir 
'./uploads/audio/dor/'
$file $uploaddir basename($_FILES['uploadfile']['name']); 
$size=$_FILES['uploadfile']['size'];
if(
$size>1048576)
{
    echo 
"error file size > 1 MB";
    
unlink($_FILES['uploadfile']['tmp_name']);
    exit;
}
if (
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
  echo 
"success"
} else {
    echo 
"error ".$_FILES['uploadfile']['error']." --- ".$_FILES['uploadfile']['tmp_name']." %%% ".$file."($size)";
}
?>




ככה זה לא עובד:

PHP קוד:


<?php
$uploaddir 
'./uploads/audio/'.$_COOKIE['username'].'/'
$file $uploaddir basename($_FILES['uploadfile']['name']); 
$size=$_FILES['uploadfile']['size'];
if(
$size>1048576)
{
    echo 
"error file size > 1 MB";
    
unlink($_FILES['uploadfile']['tmp_name']);
    exit;
}
if (
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
  echo 
"success"
} else {
    echo 
"error ".$_FILES['uploadfile']['error']." --- ".$_FILES['uploadfile']['tmp_name']." %%% ".$file."($size)";
}
?>

שאני מוציא פלט אני מקבל את שניהם שווים.
אז איפה פה הבעיה?
זה הדף שאחראי על העלאה..
זה כל כך מוזר, הרי זה אותו פלט, אז מה ההבדל?
זה הדבר הכי מוזר שנתקלתי בו..


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

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