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

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

-roee- 15-03-06 11:51

נתקעתי במשהו שאני בונה [ ARRAY ] + [ GET ]
 
שלום,

אני בונה איזה משהו ועשיתי לו מין מודולים... בכל מודל יש משהו אחר. (לדוגמא: חדשות, הורדות וכו..)

כדי לבדוק מה המודל שהמשתמש בחר יש לי את הקוד הזה:
PHP קוד:

 $act = array(
news => "news"
); 
if(
$_GET["act"] == "")
{
$act "news";
}
require 
"./modules/{$act}.php"


מתואר בקוד שאם לא נבחר מודל ( ACT ) אז המודל שהוא בוחר זה מודל news..
לפי הקוד, הכתובת שאמורה להיות אם בוחרים במודל news היא: index.php?act=news
עד לפה הכל בסדר.. אבל נגיד שמישהו בוחר לראות את הכתבה המורחבת שהכתובת שלה היא: index.php?act=news&op=full&id=1 אז הוא כבר מציג את השגיאה הזאת:


ציטוט:
ציטוט:

Warning: main(./modules/Array.php): failed to open stream: No such file or directory in /home/*******/domains/*******/public_html/portal/index.php on line 94

Warning: main(./modules/Array.php): failed to open stream: No such file or directory in /home/*******/domains/*******/public_html/portal/index.php on line 94

Fatal error: main(): Failed opening required './modules/Array.php' (include_path='.:/usr/local/lib/php') in /home/*******/domains/*******/public_html/portal/index.php on line 94




לפי קובץ index.php, שורה 94 היא:

PHP קוד:

 require "./modules/{$act}.php"



מקווה שתעזרו לי, תודה.

meshuga 15-03-06 11:53

PHP קוד:

$act = array( 'news' => "news");  
if(
$_GET["act"] == "") { 
    
$act "news"

require 
"./modules/".$act.".php"

תנסה את זה, למרות שאין פה שינויים קריטים..אבל תנסה ונמשיך משם...

עריכה:
אה...יא מסטול.....אתה קורא למשתנה עצמו שבעצם אתה צריך למערך שלו....לדוגמא:
PHP קוד:

require "./modules/".$act[$_GET["act"]].".php"

ובקוד עצמו אתה צריך לשנות את התנאי
PHP קוד:

if($_GET["act"] == "") { 
    
$act "news"


ל

PHP קוד:

if($_GET["act"] == "") { 
    
$_GET["act"]= "news"


אקיצר הקוד צריך להיות ככה:
PHP קוד:

$act = array( 'news' => "news");  
if(
$_GET["act"] == "") { 
    
$_GET["act"] = "news"

require 
"./modules/".$act[$_GET["act"]].".php"

הצעה, עדיף לך את $_GET["act"] לשים במשתנה מסויים....ואותו לשים במערך.

עוד הצעה, אתה צריך לעשות בדיקה שקיים במערך מה ששמים ב$_GET["act"] כי אז זה ינסה לייבא קובץ .php וזה יעשה שגיאה כל עוד אין קובץ כזה או שזה יעשה שגיאה במערך עצמו, לא זוכר..

-roee- 15-03-06 12:36

תודה

עכשיו אין שגיאה אבל זה עדיין לא עובד

meshuga 15-03-06 12:46

ציטוט:

נכתב במקור על ידי bigsmoke
תודה

עכשיו אין שגיאה אבל זה עדיין לא עובד

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

-roee- 15-03-06 13:00

PHP קוד:

$act $_GET["act"];

$choice = array(
                
'news'       =>   "news"
                
);

if (!isset(
$choice[$act])) {
    
$act "news";
}

require 
"./modules/{$choice[$act]}.php"

האם יש בעיה בקוד?

meshuga 15-03-06 13:01

ציטוט:

נכתב במקור על ידי bigsmoke
PHP קוד:

$act $_GET["act"];

$choice = array(
                
'news'       =>   "news"
                
);

if (!isset(
$choice[$act])) {
    
$act "news";
}

require 
"./modules/{$choice[$act]}.php"

האם יש בעיה בקוד?

בהסתכלות ראשונית, לא....
אם יש, תגיד מה השגיאה.
אגב, במקום הisset אתה יכול להשתמש בזה:
array_key_exists
סתם לידע כללי..

Unknown 15-03-06 20:22

המלצה לא להשתמש בצורה הזאת בחיים
תמיד תגביל למילים שיכולים לרשום בGET
אם לא, אז יכולים לפרוץ לך את הקוד בעזרת הזרקות בכתובת
תעשה IF או CASE לכל אפשרות שיכולה להיות לACT

meshuga 15-03-06 20:52

ציטוט:

נכתב במקור על ידי Unknown
המלצה לא להשתמש בצורה הזאת בחיים
תמיד תגביל למילים שיכולים לרשום בGET
אם לא, אז יכולים לפרוץ לך את הקוד בעזרת הזרקות בכתובת
תעשה IF או CASE לכל אפשרות שיכולה להיות לACT

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


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

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