אני צריכה כיוון לגבי שינוי ה URL בשפת PHP ויצירת דפים דינמיים. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

אני צריכה כיוון לגבי שינוי ה URL בשפת PHP ויצירת דפים דינמיים.


aerosmith

Recommended Posts

שלום.

בהמשך לאשכול הקודם שפתחתי בקישור הבא

http://hwzone.co.il/community/index.php?topic=552410.10

שמדבר על SESSIONS ועוד כמה דברים, ישבתי ולמדתי על SESSIONS והצלחתי ליצור מערכת LOGIN באתר שמשתמשת ב SESSIONS בצורה טובה. שניצל, תודה.

עכשיו אני רוצה לעשות שלכל משתמש יהיה דף משלו, וקראתי על כך ב GOOGLE והבנתי שאי אפשר באמת לעשות דף לכל משתמש וגם אם אפשר זה יהיה קשה מאוד לכן צריכה לעשות דף דינמי שיראה משהו כמו www.domain.com/id=1

אני לא יודעת איך לעשות את זה, וזה את האמת לא מה שחשוב, מה שחשוב זה שאני אבין איך אפשר ליצור בכלל ID כזה שיהיה 1, 2 , 3 וכו', ייחודי לכל משתמש. יש לי ב DATABASE כמובן COLUMN של ID שעולה אוטומטית בכל פעם שמישהו חדש נרשם, אבל איך אני מציגה את זה ל URL, אני יודעת שיש משהו עם GET אבל אני תמיד משתמשת ב POST כי זה יותר מאובטח לפי מה שהבנתי ואז ככה הסיסמא של המשתמש לא תעבור ל URL בטעות...

אשמח לכל כיוון ממכם.

קישור לתוכן
שתף באתרים אחרים

קודם כל, חשוב שתדעי: post לא באמת יותר מאובטח מ-get. כל ההבדל הוא שב-get הפרמטרים שנשלחים לדף הם חלק מה-url, וב-post הם נשלחים בגוף של בקשת ה-http. מי שמסוגל להאזין לתעבורה ברשת שלך יכול לראות את הפרמטרים בשני המקרים.

באופן רעיוני, צריך להשתמש ב-post על מנת לשלוח מידע לאתר, וב-get על מנת לבקש מידע מהאתר. חוץ מזה, get זה ברירת המחדל (כלומר כשאת סתם כותבת url כלשהו בשורת הכתובת, הדפדפן שולח בקשת get).

תסתכלי לדוגמה על הכתובת של ת'רד כלשהו בפורום:

http://hwzone.co.il/community/index.php?topic=553369.0

הבקשה הזו מופנית לדף community/index.php עם הפרמטר topic=553360.0. כלומר, היא מבקשת את הנושא שהמזהה שלו הוא 553360. באותו אופן, שאילתת חיפוש בגוגל היא תמיד בקשת get.

לעומת זאת, כשאת עושה login ל-hwzone, אז את עושה post עם שם המשתמש והסיסמה, ככה שהם לא חלק מה-url אלא נשלחים בגוף של ההודעה (ליתר דיוק הם מוצפנים ואז נשלחים, אבל זה משהו אחר שצריך לדאוג לו) ובאותו אופן כשאת שולחת הודעה, אז ההודעה נשלחת ב-post כשהתוכן של ההודעה הוא בגוף בקשת ה-http.

שימי לב שגם בבקשת post אפשר לשלוח פרמטרים בשורת ה-url.

הסיבה היחידה ש-post נחשב קצת יותר מאובטח מ-get היא שהדפדפנים יודעים להתייחס לפרמטרים בצורה יותר נכונה. ניסית פעם לפרסם הודעה בפורום, ואז ללחוץ על back? הדפדפן יזהיר אותך שכבר שלחת את בקשת ה-post הזו ולכן הוא רוצה לוודא שאת רוצה לשלוח אותה שוב. ב-get זה לא יקרה. באופן דומה, כיוון שהמידע שנשלח בבקשת post הוא חלק מגוף הבקשה ולא מה-url, אז המידע הזה הוא לא חלק מהכתובת של הדף, ולכן לא ישמר אם תעשי לדוגמה bookmark.

קישור לתוכן
שתף באתרים אחרים

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

העניין הוא כזה, אז עכשיו אם אני מעוניינת ליצור לכל ID של משתמש דף משלו, אז אני אמורה לעשות את זה איכשהו ע"י id=1 או id=23 וכו'. איך אני בונה את העמוד הזה? איך אני גורמת שלכל USER יהיה ID משלו ב URL או לא ב URL, אלא איפה שצריך, ושלכל משתמש אני אציג פרופיל משלו ... ואותו דבר תקף גם לגבי סתם כתבות, למשל יש לי אתר בלוג, אז אני ארצה שלכל פוסט בבלוג יהיה ID משלו ושאני אוכל לקשר לעמוד שיהיה רק של הפוסט המסויים ולא של כל הבלוג.. וכו'... אני מקווה שהבנת מה אני רוצה לעשות..

קישור לתוכן
שתף באתרים אחרים

ניקח לדוגמה את הרעיון של הבלוג. את בעצם רוצה שלכל פוסט בבלוג יהיה מזהה ייחודי, ואז לדוגמה הלינק www.blabla.com/blog/view_post.php?id=1212 יציג את פוסט מספר 1212.

הרעיון הכללי הוא די פשוט - ב-database צריכה להיות טבלה של "פוסטים", שיהיו בה לפחות שני שדות - מזהה ייחודי (שדה מספרי id) ותוכן הפוסט (שדה מטיפוס שיכול להחזיק הרבה מידע, לדוגמה blob). בדף view_post.php תשלפי (ב-SQL כמובן) את הרשומה עם ה-id המבוקש, ותציגי בדף את התוכן של הפוסט. כמובן בטבלה הזו תחזיקי עוד כל מיני שדות (מי העלה את הפוסט, מתי, טאגים לפוסט, וכן הלאה), אבל זה הבסיס.

אותו דבר עבור דף משתמש - בטבלת המשתמשים שלך יהיו שדות שיכילו מידע על המשתמש, ואז יהיה לדוגמה דף view_user.php שיקבל פרמטר id ויציג את כל הפרטים הרלוונטיים למשתמש הזה (ואם לדוגמה המשתמש הוא המשתמש הנוכחי אז תהיה לו אופציה לערוך את הדף).

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

קישור לתוכן
שתף באתרים אחרים

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

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

בקיצור -

למשל: יש לי בלוג, יש לי איזה 1000 כתבות שהן בתוך ה DATABASE ואני רוצה בצד ימין של האתר לעשות קישור לכל ה-1000 כתבות האלה, לרשום כותרת של הכתבה (שכבר קיימת במסד נתונים, נגיד שיש לכל כתבה כותרת) אז אני מציגה מצד ימין של האתר את הכותרת של הכתבה, בעזרת שאילתא מתאימה, ואז אני רוצה לעשות קישור לכל כתבה כזאת, שכתבה מספר 631 תיקח אותי לתוכן של ID 631, וכתבה מספר 102 שהכותרת שלה היא ככה וככה תיקח אותי לעמוד שהתוכן שלו הוא התוכן שיש בעמודה מסויימת ב ID 102, וכן הלאה, איך זה יקרה?

תודה.

קישור לתוכן
שתף באתרים אחרים

הכל באופן דינמי.

את יכולה באמצעות שאילתת SQL לשלוף את כל הרשומות מטבלת הפוסטים, ואז מכל רשומה לשלוף את ה-id שלה (ועוד פרטים שתרצי להשתמש בהם, לדוגמה הכותרת) ולבנות את הלינק מתוך ה-id. כלומר אם לדוגמה שלפת רשומה כלשהי ושמרת במשתנים post_id ו-post_title את המזהה והכותרת שלה, אז תיצרי קישור לרשומה הזו באופן הבא:

echo "<a href='view_post.php?id=" . $post_id . "'>" . $post_title . "</a>"

מבינה?

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

קישור לתוכן
שתף באתרים אחרים

אוקיי התחלתי וזה אפילו עובד יפה!

תודה רבה!

עכשיו, מה אומר סימן השאלה? למה שמתי אותו? אפשר בדרך אחרת לשלוח את ה GET? בדף של ה"כתבה" של הבלוג, קיבלתי דרך GET את ה ID של הכתבה ולפי זה הצגתי תמונה, כותרת ותוכן שכולם ב ROW של הכתבה שה ID שלה נשלח מה GET. זה יפה מאוד, אהבתי. האם יש דרך אחרת לשלוח ל GET? בכל מה שלמדתי עד כה לא ממש הבנתי שזה השימוש של GET, ומתי בד"כ נשתמש ב GET? מתי אסור בתכלית האיסור להשתמש ב GET, ומתי מומלץ?

תודה!

קישור לתוכן
שתף באתרים אחרים

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

את יכולה לקרוא כאן על מבנה של url:

http://en.wikipedia.org/wiki/Uniform_resource_locator

כמו שאמרתי, get זה ברירת המחדל. כל לינק רגיל הוא get. כשאת בונה טופס (form) אז את יכולה לבחור אם הוא ישלח ב-get או ב-post. כשהטופס נשלח ב-get אז כל השדות שלו נשלחים ב-query (כלומר אחרי סימן השאלה ב-url) ואז ב-php אפשר לגשת אל הפרמטרים באמצעות GET_$, וב-post כל השדות נשלחים בגוף של הבקשה ואז ב-php אפשר לגשת אליהם באמצעות POST_$.

אגב, אפשר לדעת מאיזה מקור את לומדת?

קישור לתוכן
שתף באתרים אחרים

2 הסנט שלי:

אם את לומדת כדי ליצור מערכת משלך..ובכן לא חושב שיש טעם ליצור הכל מאפס..יש הרבה frameworks ומערכות תוכן[drupal,joomla] שעושים לך את העבודה לרוב באופן יותר מאובטח.

כמובן ששווה ללמוד ולדעת איך הקוד עובד מאחורה

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

אגב, אפשר לדעת מאיזה מקור את לומדת?

שניצל, היה לי ספר שאני לא זוכרת את שמו אבל משהו כמו "PHP IN 24 HOURS", ועכשיו יש לי ספר שהוא די ישן שעל תקן PHP 3+4. הנוכחי נקרא PHP FOR THE WORLD WIDE WEB, דבר שני קראתי תמדריכים באתר של איתן.. php.eitan או eitan.php משהו כזה.. ואני די חורשת את גוגל בכל בעיה שאני נתקעת בה..

2 הסנט שלי:

אם את לומדת כדי ליצור מערכת משלך..ובכן לא חושב שיש טעם ליצור הכל מאפס..יש הרבה frameworks ומערכות תוכן[drupal,joomla] שעושים לך את העבודה לרוב באופן יותר מאובטח.

כמובן ששווה ללמוד ולדעת איך הקוד עובד מאחורה

הסנט שלי: אם לומדים משהו מאפס הרבה יותר קל לגשת למשהו מ-60% או יותר... בכל אופן תודה.. אבל תחשוב שמן הסתם אני לא מחפשת את הג'ומלה וה wordpress וכל שאר הירקות כי כרגע אני בשלבי לימוד לא בשלבי בנייה.. בעתיד אולי אגש אליהם ואבחן אותם, אבל אני חושבת שמנסיון, בתור מנהלת פורום לשעבר (כשעוד הייתי צעירה)* ניהלתי פורום שהיה בנוי ב PHP, ופרצו לי אליו, אז עם כל הכבוד ל PHP ולמערכות מוכנות, אני מעוניינת ללמוד לבד, להבין במה מדובר ואז ככה אני אוכל לבטוח יותר במוצרים מסויימים. כמובן שאני לא הולכת לבנות עכשיו מערכת משלי עם של ה CIA חח אבל אתה מבין תרעיון... חרדות מהעבר...

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...