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

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

LosNir 22-12-06 16:39

[טיפ] איך לדעת שה ACT שהכניסו הוא תקין
 
שלום,
שמתי לב צל הרבה מתכנתים פה, שהם משתמשים בשיטה לא הכי יעילה בשביל לבדוק אם ה ACT תקין.

מה שהם עושים זה לעשות תנאי IF ולבדוק כל פעם ב OR אם ה ACT תקין.

למשל:

PHP קוד:

$act $_GET['act'];
if(
$act == "1" OR $act == "2" OR $act == "3" OR $act == "4" OR $act == "5")
include(
"$act.php");
else
echo 
"error"

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

אז אני מראה לכם טיפ קטן שמצאתי, שיכול לעזור לכם:

PHP קוד:

$act $_GET['act'];
if(!@include(
"pages/$act.php"))
echo 
"שגיאה!"

הסבר של הקוד:

בשורה ראשונה אנחנו שולפים את ה ACT שלנו דרך ה GET, כרגיל.
שורה שניה (תנאי ה IF), זה פשוט למדי,
אנחנו בודקים אם לא ניתן לעשות include ל ACT,
אם לא ניתן מציגים שגיאה.. אם כן ניתן, זה פשוט עושה Include אוטומטית.

הערה: שמתי לפני ה include את התו "@" על מנת "להשתיק" את ה include במידה ולא ניתן לעשות include ל ACT.

אופן שימוש:

עכשיו כל דף שאתם מעוניינים שיהיה בתוך ה ACT, מכניסים אותה לתיקיה pages.

ניתן לשפץ קצת את הקוד, ולעשות שרק דפים שמתחילים ב page_ יהיו בתוך ה ACT, ככה למשל:

PHP קוד:

$act $_GET['act'];
if(!@include(
"pages/page_$act.php"))
echo 
"שגיאה!"

פשוט לכו לפי הדמיון שלכם :)

תהנו |קורץ|

DorWD 22-12-06 16:48

וואלה תודה רעיון נחמד :)

SDF 22-12-06 16:53

PHP קוד:

$act $_GET['act'];
if(!@include(
"pages/$act.php"))
echo 
"שגיאה!"

במידה ואנחנו עושים משהו כמו

קוד:

bla.php?act=../../../../usr/home/someuser/somedomain.com/public_html/index
מה יקרה?
לפי דעתי זו לא דרך חכמה לבנות סקריפט שמשתמש הקצה הוא הקובע איזה קובץ הוא יקבל,
צריך להכין רשימה קבוע מראש של קבצים.

Tomer 22-12-06 17:10

ציטוט:

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

$act $_GET['act'];
if(!@include(
"pages/$act.php"))
echo 
"שגיאה!"

במידה ואנחנו עושים משהו כמו

קוד:

bla.php?act=../../../../usr/home/someuser/somedomain.com/public_html/index
מה יקרה?
לפי דעתי זו לא דרך חכמה לבנות סקריפט שמשתמש הקצה הוא הקובע איזה קובץ הוא יקבל,
צריך להכין רשימה קבוע מראש של קבצים.

נתחיל בזה ש include סה"כ יצרף את הקוד לדף, ולא יציג לך אותו.
דבר שני, incldue לא יכול לגשת לתיקיות שאתה לא יכול, וגם לא יכול להוסיף דפים מחוץ לתיקיית ה public_html.

Eli-Hai 22-12-06 17:13

אני מעדיף יותר להשתמש ב-readdir כדי למפות את כל הקבצים שנמצאים אצלי ואיתם אני משתמש ב-$_GET, ואז ליצור איתם switch, שמתעדכן לפי הקובץ, פשוט וקל. יש כאלה שלא בונים עמודים, אלא קוראים לפונקציות מתוך switch או if, elseif, else או כל שיטה אחרת שעולה בדעתכם.
אם תרצו, אני יעבוד על זה עוד מעט, נעשה לכם משהו פשוט עם readdir ו-switch.

tnadav 22-12-06 18:44

ציטוט:

נכתב במקור על ידי LosNir (פרסם 392842)
שלום,
שמתי לב צל הרבה מתכנתים פה, שהם משתמשים בשיטה לא הכי יעילה בשביל לבדוק אם ה ACT תקין.

מה שהם עושים זה לעשות תנאי IF ולבדוק כל פעם ב OR אם ה ACT תקין.

למשל:

PHP קוד:

$act $_GET['act'];
if(
$act == "1" OR $act == "2" OR $act == "3" OR $act == "4" OR $act == "5")
include(
"$act.php");
else
echo 
"error"

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

אז אני מראה לכם טיפ קטן שמצאתי, שיכול לעזור לכם:

PHP קוד:

$act $_GET['act'];
if(!@include(
"pages/$act.php"))
echo 
"שגיאה!"

הסבר של הקוד:

בשורה ראשונה אנחנו שולפים את ה ACT שלנו דרך ה GET, כרגיל.
שורה שניה (תנאי ה IF), זה פשוט למדי,
אנחנו בודקים אם לא ניתן לעשות include ל ACT,
אם לא ניתן מציגים שגיאה.. אם כן ניתן, זה פשוט עושה Include אוטומטית.

הערה: שמתי לפני ה include את התו "@" על מנת "להשתיק" את ה include במידה ולא ניתן לעשות include ל ACT.

אופן שימוש:

עכשיו כל דף שאתם מעוניינים שיהיה בתוך ה ACT, מכניסים אותה לתיקיה pages.

ניתן לשפץ קצת את הקוד, ולעשות שרק דפים שמתחילים ב page_ יהיו בתוך ה ACT, ככה למשל:

PHP קוד:

$act $_GET['act'];
if(!@include(
"pages/page_$act.php"))
echo 
"שגיאה!"

פשוט לכו לפי הדמיון שלכם :)

תהנו |קורץ|

זה לא כזה חדש..8-)
בכל מקרה, אני אישית בניתי איזה מערכת עם אבטחה חשובה ותחזוקה מהירה, והייתי צריך לעשות משהו דומה לחלקים גדולים, אז עשיתי משהו כזה:
PHP קוד:

include("places/".$_GET['act']."/main.php"); 


RS324 22-12-06 18:49

למה לא להשתמש ב SWITCH ? הכי פשוט..
לתת לו מספר קייסים אפשריים...אם לא נתפס באחד מהם אז זה הולך ל DEAFULT
ככה שאין שום דבר ושום בעיה של אבטחה...

LosNir 22-12-06 19:38

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

RS324 22-12-06 19:41

ציטוט:

נכתב במקור על ידי LosNir (פרסם 392949)
נו זה הקטע,
אבל אם יש לך מלא עמודים?
כל פעם תוסיף קייס? לא הכי יעיל...

הרבה יותר יעיל..ובטוח....

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

psycho 22-12-06 20:24

ציטוט:

נכתב במקור על ידי RS324 (פרסם 392920)
למה לא להשתמש ב SWITCH ? הכי פשוט..
לתת לו מספר קייסים אפשריים...אם לא נתפס באחד מהם אז זה הולך ל DEAFULT
ככה שאין שום דבר ושום בעיה של אבטחה...

בדיוק.

כל שאר האלטרנטיבות פשוט לא יעילות.

ולמה להשתמש בשיטה הזו אי-פעם בכלל? של ה INCLUDEים. מיותר.

יש יותר מדי אופציות אחרות יעילות ואפילו עדיפות מבחינת אופטימיזציה


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

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