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

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

ASTeam 20-11-07 21:24

php| הפרדה והוצאת נתונים ע"י הפרדה בסימן, אינכלוד מרוחק
 
שלום פורום;)
נגיע ישר לעיקר.. אני כרגע יושב על מערכת בה יש מערכת הרשאות...
חשבתי לעשות כזה דבר -
בטבלת users יהיה עמודה של access וההרשאות יופרדו ב";"
כך שמנהל שיש לו הרשאות לעריכת דפים, צפייה במשתמשים יהיה משהו כמו זה בעמודה access
pages;view_users
ולמנהל אחר שיש לו דפים, מנהלים, משתמשים, בלוקים
pages;admins;users;blocka
ולשאלה - כיצד אני עושה את זה ? באקספלוד אני לא יכול כי הרי אין מס' קבוע של הרשאות(לכל מנהל) וזה לא באותו סדר..

לשאלה השניה
האם יש לי אפשרות לעשות include לקובץ PHP משרת אחר?
אם לא, האם יש אפשרות לייבא קובץ PHP משרת אחר?
תודה וערב טוב

Tomer 20-11-07 21:31

אתה יכול לעשות explode על ; (נקודה פסיק) ואז למצוא אם ההרשאה קיימת ע"י in_array

חיים 20-11-07 21:35

אני במערכת SITETOU עשיתי פונצקייה שמביא לך מערך של הרשאות ובמסד היה לי משהוא כזה: 1;1;0;1;0;0;1
ואז אתה מריץ בדיקה שאם ההרשאה המספר בה הוא 1 אז זה מאשר אם לא אז לא.. אתה מוזמן להסתכל בקוד :)
ולשאלה השנייה נראה לי שאפשר לעשות אינקלוד משרת אחר אבל אם אני לא טועה צריך להיות משהוא מיוחד מופעל בשרת.. אני לא יודע בידיוק כי לא יצא לי להשתמש או לנסות אז אני לא יכול להגיד לך אלא רק לשער

ASTeam 20-11-07 22:54

ציטוט:

אני במערכת SITETOU עשיתי פונצקייה שמביא לך מערך של הרשאות ובמסד היה לי משהוא כזה: 1;1;0;1;0;0;1
כשכתבתי את השאלה עלה לי הרעיון הזה..אבל הוא ארוך... (ביחד למה ששאלתי..)
Tomer
צריך לעשות
array("users", "page"");
ובמסד זה ככה -
users;page

-roee- 20-11-07 23:01

הדרך שלך והרעיון טובים מאוד והביצוע קל ביותר.

לדוגמא יש קובץ ניהול ששמו pages.php ששולט על הדפים באתר, ובמסד יש לך בדיוק את המצב כמו שתיארנו, הראשות המופרדות ע"י נקודה פסיק ;

בתחילת הקובץ pages.php אתה עושה משהו בסגנון:
PHP קוד:


$myID 
get_my_id(); // Get the current administration ID
$permission_query mysql_query("select allowed_areas from admins where id='$myID'");
$my_permissions mysql_fetch_array($permission_query);
$my_permissions explode(";",$my_permissions);

if( ! 
in_array("pages",$my_permissions) )
{
    exit(
"Sorry, but your account is not allowed to enter this file");
}

..
..
and continue 
your code 


ASTeam 20-11-07 23:06

תודה!
חשבתי שin_array אפשר רק בהפרדה של גרשיים ופסיקים..תודה רבה..

מה לגבי אינקלוד מרוחק?

יש לי שאלה נוספת שקשורה לאבטחה.
במידה ויש לי קובץ admin.php ובget הוא מייבא דפים אחרים.
האם לכל דף אני צריך לבדוק שם-משתמש וסיסמא?(ע"מ לאמת שזהו המשתמש?)

-roee- 20-11-07 23:08

ייבוא קובץ משרת אחר, ייבא את הפלט של אותו קובץ ולא את הקוד במידה וכולל.

Tomer 20-11-07 23:29

ציטוט:

נכתב במקור על ידי ASTeam (פרסם 581345)
כשכתבתי את השאלה עלה לי הרעיון הזה..אבל הוא ארוך... (ביחד למה ששאלתי..)
Tomer
צריך לעשות
array("users", "page"");
ובמסד זה ככה -
users;page

בגלל זה אמרתי לך להשתמש ב explode שמפרק את המחרוזת למערך עפ"י מה שקבעת :|

-roee- 20-11-07 23:39

ציטוט:

נכתב במקור על ידי ASTeam (פרסם 581353)
תודה!
יש לי שאלה נוספת שקשורה לאבטחה.
במידה ויש לי קובץ admin.php ובget הוא מייבא דפים אחרים.
האם לכל דף אני צריך לבדוק שם-משתמש וסיסמא?(ע"מ לאמת שזהו המשתמש?)

אין צורך לבדוק את זה בכל קובץ, רק במידה ויש הרשאות שונות שאתה רוצה להגדיר לכל קובץ בנפרד.
אבל, מה שיש לבדוק זה שלא יכנסו לקובץ pages.php לדוגמא ע"י הקלדה בשורת הכתובות.

ASTeam 21-11-07 09:12

שלא יכנסו לקובץ pages.php לדוגמא ע"י הקלדה בשורת הכתובותואיך אני עושה את זה?

לגבי אינקלוד-
אם כך אין שום דרך לייבא קובץ מרחוק?

talbeno 21-11-07 10:00

תעשה איזה קובץ header.php שיבדוק אם יש הרשאה, ותעשה לו include לכל דפי המנהלים.
יש תוכנות שיכולות לרוץ על FTP ולראות את כל הקבצים והשמות שלהם שיש לך על השרת, אז שים על כולם בדיקת הרשאות.

שים את הקוד PHP שלך בקובץ txt ותעשה לו include, נראה לי שאמור לעבוד.

ASTeam 21-11-07 17:14

ציטוט:

תעשה איזה קובץ header.php שיבדוק אם יש הרשאה, ותעשה לו include לכל דפי המנהלים.
יש תוכנות שיכולות לרוץ על FTP ולראות את כל הקבצים והשמות שלהם שיש לך על השרת, אז שים על כולם בדיקת הרשאות.
לא ממש עוזר..
זה במילים אחרות לבדוק בכל הדפים אם יש הרשאה..ואני מעדיף לא לעבור על כל קבצים האדמין

ציטוט:

שים את הקוד PHP שלך בקובץ txt ותעשה לו include, נראה לי שאמור לעבוד.
תודה אני ינסה..
חשבתי לעשות משהו אחר - לשים את קובץ הPHP(בעיקרון זה כמה שורות.. רק לאמת משהו..)בתוך מסד ואז להוציא אותו ע"י הוצאה ממסד מרוחק.
מה אומרים?יש סיכוי שזה יעבוד?

Rom 21-11-07 17:36

בשביל לקבל קובץ PHP משרת רחוק אתה צריך להשתמש בFTP

ASTeam 21-11-07 18:12

אני לא יכול להשתמש בPHP..הקובץ אצל לקוח..

RS324 22-11-07 16:22

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

AlmogBaku 25-11-07 12:57

אתה יכול לבנות api לתקשורת משרת מרחוק כך שתתקשר באמצעות פרוקטוקול שתבנה שישתמש בשיטת post או get.

ואם ברצונך פשוט לבנות קוד שמתעדכן אוטומטית ע"י השרת אבל אין לו גישה ממשית לשרת- צור קובץ(כמובן תגן עליו בעזרת כל מיני שיטות של IP, GET, POST וכו') שברגע שתפנה אליו נכון הוא ידפיס את קוד ה-PHP.
ברגע שתפנה אל הקובץ מהשרת המרוחק עם ההרשאה המתאימה תקבל את קוד ה-php הרצוי. כל מה שנשאר כעת הוא להפעיל את הקוד בעזרת פונקציית eval פשוטה.
**את הקובץ המרוחק יש לבנות בצורה כזו שיתאים ל eval.

ASTeam 25-11-07 13:43

איך אני בונה אותו שיתאים לaval?
מה זה api?

AlmogBaku 25-11-07 14:13

*eval
ופשוט אתה שובר אפה שצריך וכו'..
php.net/eval

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

דוגמא:
אם הIP של הלקוח(במקרה הזה השרת) מורשה המשך, אם לא הצג שגיאה: גישה לא מורשת.
במידה והגישה מורשת בדוק סיסמאת POST.. וכו'

במידה ועברת את כל בקרות הרשאה אתה למשל מבקש הצגת כל המשתמשים הרשומים לאתר שבשרת X אתה פונה אל השרת ככה למשל:
api_server.php?code=a5d1qa65d1a&command=show_users
והוא מדפיס את הבקשה שלך..
ובשרת השני אתה מעבד את הבקשה וכו'..

הכי חשוב בנושא הזה הוא בקרת הרשאות ואבטחה- IP מורשים, סיסמאות בGET סיסמאות ב POST, הגנה מפני רובוטי חיפוש, שינוי סיומת הקובץ ל xapi למשל(htaccess) וכו'.

ASTeam 25-11-07 15:59

האמת, אני משתמש באינקלוד ע"מ לעשות שאילתת SQL..
אני לא יכול לתת ללקוח את השאילתה - כי אז יש סיכוי למסדים של אחרים.
אך חשבתי על פיתרון יעיל במקום הנ"ל..
תודה בכ"מ.

AlmogBaku 25-11-07 16:03

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

ASTeam 25-11-07 16:18

אוקי...תודה רבה
שאלה אחרונה...
ע"פ מה שרועי אמר -
ציטוט:

מה שיש לבדוק זה שלא יכנסו לקובץ pages.php לדוגמא ע"י הקלדה בשורת הכתובות.
איך אני עושה את זה?

AlmogBaku 25-11-07 16:42

השאלה היא מה?

מה אתה רוצה לחסום? לוח בקרה? api של שליטה מרחוק שיש גישה רק לשרת מסויים??

ASTeam 25-11-07 16:45

אני דיברתי על שני מקירם שונים..
עכשיו אני מצדבר על משהו אחר..
כיצד אני יחסום כניסה לדף מסויים ע"י הקלדתו בשורת הכתובות
(הכווהנ שלי היא כזו
כאשר אני יקליד -
admin.php?act=pages
הוא יכנס לי לדף sources/pages.php
אבל, כאשר אני יקליד
sources/pages.php בשורת הכתובות שלא יכנס...
מדוע אני צריך את זה?
ע"מ לחסוך לעצמי את בדיקת הרשאות המשתמש בכל דף ודף..)

-roee- 25-11-07 16:53

תעשה בקובץ admin.php איזשהו define והערך שלו יהיה true
ובכל דף ודף שאתה לא רוצה שיכנסו דרך הכתובת אלא דרך admin.php תעשה:
PHP קוד:

if( ! defined('ADMIN_FILE') )
{
   exit(
"You can't access this file directly");



AlmogBaku 25-11-07 16:55

אני לא מבין, כאילו אנחנו בונים לך את המערכת?
תחשוב קצת!- אם אתה עובד עם לקוחות זו לא צריכה להיות בעיה בשבילך!..

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

ASTeam 25-11-07 16:56

אז לא יותר פשוט לעשות include לקובץ שבודק הרשאה?

עריכה
Bakuאתם לא בונים לי את המערכת..
לא סתם אני שואל פה..הרי יכולתי למצוא הכל באתר php
אני שואל כאן שאלות שיש מאחוריהם רעיון לשאר האנשים.

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

AlmogBaku 25-11-07 17:03

אני לא מתכוון לפגוע או משהוא, אבל הדברים האלו מאוד בסיסיים...

בכל אופן, בהצלחה.

NDVNDV 26-11-07 02:08

ציטוט:

נכתב במקור על ידי ASTeam (פרסם 583187)
אז לא יותר פשוט לעשות include לקובץ שבודק הרשאה?

עריכה
Bakuאתם לא בונים לי את המערכת..
לא סתם אני שואל פה..הרי יכולתי למצוא הכל באתר php
אני שואל כאן שאלות שיש מאחוריהם רעיון לשאר האנשים.

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

אני משתמש באינקלוד לקובץ שבודק את כל מה שאני צריך לדעת על המשתמש / במידה והוא לא משתמש אז אורח וזה משאיר אותו מחוץ לקבצים המסוימים חח...
אז למשל במקרה שלך אתה יכול לעשות אינקלוד לקובץ logincheck.php שככה אני קורא לו אצלי ^_^ וקודם כל אתה בודק אם המשתמש קיים ואז משווה את הסיסמה שלו בעוגייה לסיסמה שבמסד...
ואז בקוד שהביא לך רועי נוי בעמוד הראשון אתה עושה באותו קובץ logincheck שימוש באותו תנאי רק שאתה לא מביא שגיאה בקובץ בדיקה אתה רק נותן ערך true/1 למשתנה $pages למשל
ואז התנאי הראשי אחרי שאתה עושה אינקלוד לקובץ logincheck.php בקובץ page.php הוא if ($page=1) למשל...
ואם לא אתה מביא לו שגיאה שאין לו הרשאה לעמוד המסוים...

ככה אתה גם חוסך לעצמך בשלבים מאוחרים יותר אם אתה רוצה לשנות משהו בתנאי את הלעבור בכל הקבצים ולשנות את התנאי... ואתה פשוט משנה את הקובץ logincheck.php

ASTeam 26-11-07 10:49

ככה פעלתי עד היום..
ניסתי לחסוך לעצמי את זה;)

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

BlueNosE 26-11-07 15:05

אם אינקלוד מרחוק כ"כ חשוב לך, כנס ל:
www.php.net/ftp
ותעבוד ככה.

NDVNDV 29-11-07 11:33

ציטוט:

נכתב במקור על ידי ASTeam (פרסם 583452)
ככה פעלתי עד היום..
ניסתי לחסוך לעצמי את זה;)

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

אם ככה פעלת עד היום..
מה יש לך לחסוך ?
כמה שורות קוד שמצורפות לכל דף שאתה רוצה שזה יופעל בו :)


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

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