הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 22-12-06, 18:44   # 1
tnadav
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 216

tnadav לא מחובר  

ציטוט:
נכתב במקור על ידי LosNir צפה בהודעה
שלום,
שמתי לב צל הרבה מתכנתים פה, שהם משתמשים בשיטה לא הכי יעילה בשביל לבדוק אם ה 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 
"שגיאה!"
פשוט לכו לפי הדמיון שלכם

תהנו
זה לא כזה חדש..
בכל מקרה, אני אישית בניתי איזה מערכת עם אבטחה חשובה ותחזוקה מהירה, והייתי צריך לעשות משהו דומה לחלקים גדולים, אז עשיתי משהו כזה:
PHP קוד:
include("places/".$_GET['act']."/main.php"); 
__________________
"אני לא מעצב גרפי... אני לא פלאשר תותח... בטח שלא מנכ"ל של חברת בניית אתרים, כעיקרון אסור לי להיות מועסק.. אבל אני... מתכנת ב-PHP , וגם, לא ממש מציעה.." (יצא לי מוזר משהו...חח)
  Reply With Quote
ישן 22-12-06, 18:49   # 2
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

למה לא להשתמש ב SWITCH ? הכי פשוט..
לתת לו מספר קייסים אפשריים...אם לא נתפס באחד מהם אז זה הולך ל DEAFULT
ככה שאין שום דבר ושום בעיה של אבטחה...
  Reply With Quote
ישן 22-12-06, 20:24   # 3
psycho
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 35
הודעות: 1,926

psycho לא מחובר  

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

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

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

יש יותר מדי אופציות אחרות יעילות ואפילו עדיפות מבחינת אופטימיזציה
  Reply With Quote
ישן 22-12-06, 20:45   # 4
nevo
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 1,217

nevo לא מחובר  

עוד רעיון חמוד,
נכון שהACT הוא בדר"כ Id מהמסד והId לא יכול להיות אפס.
תחשבו על זה ערך מספרי של טקסט זה 0.(זה יכול לפתור בעיות עם משהו מכניס בACT מחרוזת)
אין רשומה כזה 0 גם.
מה עושים, פתרון :P
PHP קוד:
$getAct = (isset( $_GET['act']))?$_GET['act']:0;
if( 
intval$_GET['act']) >){
    
// true value and the include :)
}
else
{
    
// false value


Last edited by nevo; 22-12-06 at 20:49..
  Reply With Quote
ישן 22-12-06, 20:54   # 5
tnadav
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 216

tnadav לא מחובר  

ציטוט:
נכתב במקור על ידי psycho צפה בהודעה
בדיוק.

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

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

יש יותר מדי אופציות אחרות יעילות ואפילו עדיפות מבחינת אופטימיזציה
יש לך מושג על מה אתה מדבר בכלל?
Include-ים מיותרים?
מה נראה לך שב- Switch עושים?

Switch אולי יותר בטוח, ממש לא יותר מהיר וקשה לתחזוק, אם אתה רוצה משהו יותר נורמאלי תוציא מערך ממסד נתונים שמכיל את כל ה- ACT-ים ה"מותרים" ותבדוק עם ה- act שקיבלת מ- get נמצא במערך...
__________________
"אני לא מעצב גרפי... אני לא פלאשר תותח... בטח שלא מנכ"ל של חברת בניית אתרים, כעיקרון אסור לי להיות מועסק.. אבל אני... מתכנת ב-PHP , וגם, לא ממש מציעה.." (יצא לי מוזר משהו...חח)
  Reply With Quote
ישן 22-12-06, 21:04   # 6
psycho
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 35
הודעות: 1,926

psycho לא מחובר  

ציטוט:
נכתב במקור על ידי tnadav צפה בהודעה
יש לך מושג על מה אתה מדבר בכלל?
Include-ים מיותרים?
מה נראה לך שב- Switch עושים?

Switch אולי יותר בטוח, ממש לא יותר מהיר וקשה לתחזוק, אם אתה רוצה משהו יותר נורמאלי תוציא מערך ממסד נתונים שמכיל את כל ה- ACT-ים ה"מותרים" ותבדוק עם ה- act שקיבלת מ- get נמצא במערך...
נשמה, כמה מניפולציות על ה משתנה שמתקבל ב GET וישר רץ ל INCLUDE ואני נחשף לכלכך הרבה פירצות אבטחה.

לא עדיף פשוט לעבוד נטו עם מסד?
או במקרה הכי גרוע ובא לי להשקיע עוד דקה ולעבוד עם MOD REWRITE
  Reply With Quote
ישן 22-12-06, 21:22   # 7
tnadav
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 216

tnadav לא מחובר  

ציטוט:
נכתב במקור על ידי psycho צפה בהודעה
נשמה, כמה מניפולציות על ה משתנה שמתקבל ב GET וישר רץ ל INCLUDE ואני נחשף לכלכך הרבה פירצות אבטחה.

לא עדיף פשוט לעבוד נטו עם מסד?
או במקרה הכי גרוע ובא לי להשקיע עוד דקה ולעבוד עם MOD REWRITE
ואיזה מניפולציות?..
אתה יודע מה? הנה קוד שאני מביא לך ותמצא לו פירצה:
PHP קוד:
<?php
include("db.php"); //connecting to DataBase!
//------------------------------------------------------------
$query mysql_query("SELECT `acts` FROM `sitedna`");

while(
$info=mysql_fetch_array($query))
    
$acts[] = $info['acts'];
//------------------------------------------------------------
if(in_array($_GET['act'], $acts)
{    
    if(
file_exists($_GET['act'].".php")
        include(
$_GET['act'].".php");
}
?>
כמו שאתה רואה, קוד פשוטף בלי שטויות של תחזוק.
תמצא חור אבטחה, אני יתקן, תמצא עוד אחד, אני יתקן...
__________________
"אני לא מעצב גרפי... אני לא פלאשר תותח... בטח שלא מנכ"ל של חברת בניית אתרים, כעיקרון אסור לי להיות מועסק.. אבל אני... מתכנת ב-PHP , וגם, לא ממש מציעה.." (יצא לי מוזר משהו...חח)

Last edited by tnadav; 22-12-06 at 21:30..
  Reply With Quote
ישן 22-12-06, 21:43   # 8
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

ציטוט:
נכתב במקור על ידי tnadav צפה בהודעה
ואיזה מניפולציות?..
אתה יודע מה? הנה קוד שאני מביא לך ותמצא לו פירצה:
PHP קוד:
<?php
include("db.php"); //connecting to DataBase!
//------------------------------------------------------------
$query mysql_query("SELECT `acts` FROM `sitedna`");

while(
$info=mysql_fetch_array($query))
    
$acts[] = $info['acts'];
//------------------------------------------------------------
if(in_array($_GET['act'], $acts)
{    
    if(
file_exists($_GET['act'].".php")
        include(
$_GET['act'].".php");
}
?>
כמו שאתה רואה, קוד פשוטף בלי שטויות של תחזוק.
תמצא חור אבטחה, אני יתקן, תמצא עוד אחד, אני יתקן...
אם REGISTER_GLOBALS דולקים אז כן יכולה להיות לך בעיה..

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

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

אהה וגם לא טיפלת במקרה שה ACT לא מורשה...אין לך שום דבר מוגדר כ DEAFULT....
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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