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

הוסטס - פורום אחסון האתרים הגדול בישראל (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=104728)

Tyler 27-07-13 19:40

איך אני משנה מיקום של דף PHP?
 
אז ככה
יש לי קובץ PHP אחד וקובץ HTML
בתוך הHTML רציתי שיהיה לי את הPHP (מערכת התחברות לאתר), אז עשיתי include login.php
סבבה, המערכת בתוך הHTML, רק שהיא מופיעה בראש הדף כי עשיתי את הinclude בהתחלה..

איך אני משנה את המיקום של המערכת לאמצע הדף לאיפה שאני רוצה שהיא תהיה? כי אם אני משנה את השורה של הinclude זה לא מאפשר לי ומוציא לי שגיאה כי יש לי בHTML משהו שם שלא מאפשר לשים include באמצע..

יש עוד הצעות?

הקוד:

קוד:

<?php


include 'config.php';
include 'login.php';


if(MODULE == 'none')
{
        include(LOVE_ROOT . '/system/love_head.php');
        $content = '<h2>  Welcome to my site - Login </h2>
<br>
כאן זה המקום לתוכן הדף כפי ששמתם לב, אך אין לי אפשרות להכניס לפה את הפאנל התחברות.
<br /> <br /> <br />       

';       
        include(LOVE_ROOT . '/system/love_foot.php');
}
else
{
        header('Location: modules/' . MODULE);
}

?>


כפי שאתם רואים, ה"תוכן" של הדף עצמו איפה שאמורה להיות המערכת אמור להיות לאחר הכותרת H2, בתוך המשתנה של $content, אך אני לא יכול לשים שם את פקודת הinclude הרי ייצא שאני משתמש בphp בתוך משתנה, מה שלא מתאפשר לי. לכן הייתי חייב לשים את הinclude בראש הקוד מיד לאחר קריאת הconfig, אך עכשיו זה מציג לי את פאנל ההתחברות בראש הדף.. יש אפשרות להזיז אותו לתוך משתנה הcontent? לאמצע הדף?

תודה רבה לעוזרים.

אדיר 27-07-13 20:04

קרא על MVC ו- Templates - ככל שתתחיל לעבוד נכון מוקדם יותר, יותר טוב.

Tyler 27-07-13 20:13

ציטוט:

נכתב במקור על ידי אדיר (פרסם 880150)
קרא על MVC ו- Templates - ככל שתתחיל לעבוד נכון מוקדם יותר, יותר טוב.


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

אני מכיר את עיקרון הmvc ולא בדיוק הבנתי על מה אתה מדבר כשאתה אומר templates , על מערכות מוכנות?

2 הדברים הללו לא עוזרים לי לפתור את הבעיה.

אדיר 27-07-13 20:45

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

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

הנה כמה קישורים רלוונטים:
http://net.tutsplus.com/tutorials/other/mvc-for-noobs
http://www.1stwebdesigner.com/css/ho...bsite-template
http://coding.smashingmagazine.com/2...php-templating

בהצלחה.

Tyler 27-07-13 21:10

ציטוט:

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

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

הנה כמה קישורים רלוונטים:
http://net.tutsplus.com/tutorials/other/mvc-for-noobs
http://www.1stwebdesigner.com/css/ho...bsite-template
http://coding.smashingmagazine.com/2...php-templating

בהצלחה.

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

מה שעשיתי זה הוספתי בסוף הקוד של פאנל ההתחברות את השורות הבאות להגדרת המשתנה להוצאת הנתונים:

החלפתי את ה;()ob_end_flush
ב;()out1 = ob_get_contents$
;()ob_end_clean

ולאחר מכן בדף הראשי ניסיתי להציג את הפאנל ע"י echo $out1 , אך שום דבר לא יצא מזה..

אני חושב שיש משהו במשתנה ה$content שאינו מאפשר לי להכניס php לתוך הדף, יש לך מושג?

maor224 28-07-13 03:02

נתעלם לרגע מההצעות של אדיר (אגב הצעה מעולה), ונחזור לקוד המקורי שלך.

PHP קוד:

<?php


include 'config.php';

if(
MODULE == 'none')
{
    include(
LOVE_ROOT '/system/love_head.php');
    
$content '<h2>  Welcome to my site - Login </h2>
<br>
כאן זה המקום לתוכן הדף כפי ששמתם לב, אך אין לי אפשרות להכניס לפה את הפאנל התחברות.
<br /> <br /> <br />     

'
;
        include 
'login.php';
    include(
LOVE_ROOT '/system/love_foot.php');
}
else
{
    
header('Location: modules/' MODULE);
}

?>

לא הבנתי למה משהו כזה לא מתאפשר לך (שים לב ששיניתי את מיקום ה-include)

Tyler 28-07-13 08:48

ציטוט:

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

PHP קוד:

<?php


include 'config.php';

if(
MODULE == 'none')
{
    include(
LOVE_ROOT '/system/love_head.php');
    
$content '<h2>  Welcome to my site - Login </h2>
<br>
כאן זה המקום לתוכן הדף כפי ששמתם לב, אך אין לי אפשרות להכניס לפה את הפאנל התחברות.
<br /> <br /> <br />     

'
;
        include 
'login.php';
    include(
LOVE_ROOT '/system/love_foot.php');
}
else
{
    
header('Location: modules/' MODULE);
}

?>

לא הבנתי למה משהו כזה לא מתאפשר לך (שים לב ששיניתי את מיקום ה-include)

לא מתאפשרת לי האפשרות שציינתי, להכניס את הinclude login.php לתוך משתנה ה$content בגלל סיבה כלשהי אין לי מושג למה שאלתי בכל מקום אפשרי ישבתי על זה עם הnetbeans עד הלילה ולא מצאתי פתרון.. את הדרך שלך (החלפת מיקום הinclude) וההוצאה שלו מתוך משתנה ה$content ניסיתי, והפאנל התחברות מוצג אך בראש הדף ולא באמצע הדף כפי שאני צריך.

אני פשוט לא מבין מה הבאג פה

----
עריכה:
ניסיתי כרגע לעשות משהו כזה, ועדיין זה לא מציג לי את הפאנל:
קוד:

<?php


include 'config.php';

if(MODULE == 'none')
{
    include(LOVE_ROOT . '/system/love_head.php');
    $content = "
<?php
include 'login.php'; 
?>
<br>
כאן זה המקום לתוכן הדף כפי ששמתם לב, אך אין לי אפשרות להכניס לפה את הפאנל התחברות.
<br /> <br /> <br />     
";

    include(LOVE_ROOT . '/system/love_foot.php');
}
else
{
    header('Location: modules/' . MODULE);
}

?>


אדיר 28-07-13 11:53

אתה לא יכול לשים קוד PHP ככה בתוך HTML...

לפי מה שאני מבין -
אם תעשה את ה- include login אחרי ה include love_head, זה בעצם מה שאתה צריך לא?

Tyler 28-07-13 12:08

ציטוט:

נכתב במקור על ידי אדיר (פרסם 880174)
אתה לא יכול לשים קוד PHP ככה בתוך HTML...

לפי מה שאני מבין -
אם תעשה את ה- include login אחרי ה include love_head, זה בעצם מה שאתה צריך לא?

לא משנה איפה אני שם את הinclude login הוא מופיע לי בראש הדף, כל עוד זה מעל משתנה ה$content זה יופיע בראש הדף.
במידה וזה לאחר משתנה הcontent זה בכלל לא יופיע..

אני צריך לדעת האם אפשרי להכניס את הקוד PHP של הinclude login או איכשהו להכניס את המערכת לתוך משתנה הcontent?

עריכה:

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

זה בעיקרון מה שניסיתי, זה החלק מהקובץ HTML שמקושר למשתנה של הcontent:
קוד:

                        <div class="content">
<?php
include 'login.php'; 
?>
                                {content}
                               
                        </div></div>

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

אבי בר 28-07-13 12:48

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

בכל מקרה אם הלכת על קוד ספגטי לפחות תעשה סדר בין הhtml לphp
ולא ברור למה אתה מכניס הכול למשתנה content?
עשית סלט שלם

Tyler 28-07-13 18:02

ציטוט:

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

בכל מקרה אם הלכת על קוד ספגטי לפחות תעשה סדר בין הhtml לphp
ולא ברור למה אתה מכניס הכול למשתנה content?
עשית סלט שלם

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

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

אבי בר 28-07-13 19:31

ציטוט:

נכתב במקור על ידי Tyler (פרסם 880185)
המשתנה content כבר מובנה בעצם בכל האתר, ככה זה מצמצם לי את העבודה. בכל דף באתר אני מכניס אותו ועליו אני מכניס את הPHP של העיצוב העליון של האתר, מתחתיו אני מכניס את העיצוב התחתון של האתר, ואז בעצם אני לא צריך להתחיל לכתוב כל דף מהתחלה באתר, אלא רק להכניס למשתנה וזהו.

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

כי לא ככה עושים אחי, באמת כל הכבוד על היצירתיות אבל תלמד קצת oop לפחות אם לא על mvc
ותתחיל מההתחלה.

אם כבר אתה הולך קוד בסגנון הזה אז תעשה משהו כזה
תיצור לך 2 קבצים חדשים header.php - בתוכו תשים את הלמעלה של האתר.
footer.php בתוכו תשים את הלמטה של האתר.
עכשיו בקובץ login.php תעשה משהו כזה:
include header.php
<form>
טופס התחברות
</form>
include footer.php

ככה בכל הקבצים של האתר.

Tyler 28-07-13 20:02

ציטוט:

נכתב במקור על ידי אבי בר (פרסם 880192)
כי לא ככה עושים אחי, באמת כל הכבוד על היצירתיות אבל תלמד קצת oop לפחות אם לא על mvc
ותתחיל מההתחלה.

אם כבר אתה הולך קוד בסגנון הזה אז תעשה משהו כזה
תיצור לך 2 קבצים חדשים header.php - בתוכו תשים את הלמעלה של האתר.
footer.php בתוכו תשים את הלמטה של האתר.
עכשיו בקובץ login.php תעשה משהו כזה:
include header.php
<form>
טופס התחברות
</form>
include footer.php

ככה בכל הקבצים של האתר.

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

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

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

אבי בר 28-07-13 20:33

ציטוט:

נכתב במקור על ידי Tyler (פרסם 880194)
שמע אני מבין, אתה לא הראשון שאומר לי שהקוד על הפנים וחובבני ועלוב ודפוק ועדיף לכתוב מהתחלה וכו'.
אני פשוט תקוע איתו כבר מספר ימים אם לא שבוע, וקשה לי עכשיו לזרוק הכל לפח ולהתחיל מ0, אתה מבין?

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

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

למה מה שהצעתי לא עובד?
אחי אתה לא ממציא את הגלגל מיליוני אתרי אינטרנט נבנו ונבנים בהצלחה, עוזרים לך ואתה ממשיך להתעקש.

בכל מקרה תרשום כאן את הקוד של login.php ומה השגיאה שאתה מקבל שאתה שם אותו בתוך המשתנה

maor224 28-07-13 20:39

הרעיון הוא שקובץ ה-login (או כל קובץ אחר באתר יראה ככה בערך):
PHP קוד:

<?php
include config.php// config file...sessions, DBs, etc...

include header.php// head file
echo <<<HTML
YOUR HTML CODE HERE {$youCANuseVars}
HTML;
include 
footer.php// footer file
?>

כמובן שהדרך הזו גם לא הכי טובה, אבל היא עדיפה על מה שאתה עושה.
הכי פשוט להשתמש במערכת Templates כמו Smarty / RainTPL.

Tyler 01-08-13 15:19

ציטוט:

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

בכל מקרה תרשום כאן את הקוד של login.php ומה השגיאה שאתה מקבל שאתה שם אותו בתוך המשתנה

ציטוט:

נכתב במקור על ידי maor224 (פרסם 880198)
הרעיון הוא שקובץ ה-login (או כל קובץ אחר באתר יראה ככה בערך):
PHP קוד:

<?php
include config.php// config file...sessions, DBs, etc...

include header.php// head file
echo <<<HTML
YOUR HTML CODE HERE {$youCANuseVars}
HTML;
include 
footer.php// footer file
?>

כמובן שהדרך הזו גם לא הכי טובה, אבל היא עדיפה על מה שאתה עושה.
הכי פשוט להשתמש במערכת Templates כמו Smarty / RainTPL.


ניסיתי מה שאמרתם

קוד:

<?php

include('config.php');

if(MODULE == 'none')
{
        include(LOVE_ROOT . '/system/love_head.php');
$content='<h2>ברוכים הבאים בלהלבהלבלה!! </h2>

echo <<< HTML
include('reg.php')
HTML;

<br>


<br /> <br /> <br />       
';
       
        include(LOVE_ROOT . '/system/love_foot.php');
}
else
{
        header('Location: modules/' . MODULE);
}
?>

השגיאה המתקבלת:
קוד:

Parse error: syntax error, unexpected T_STRING
בשורה:
קוד:

include('reg.php')
תאמינו לי אני כבר מיואש אין לי מושג פשוט BLANKKK ענק במוח יש לי מזה

אבי בר 01-08-13 17:27

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

echo <<< HTML
include('reg.php')
HTML;
במקום פשוט
ציטוט:

include('reg.php');
למה הecho?
ויכול להיות שזה קורה בגלל שלא רשמת ; אחרי האינקלוד תבדוק

Tyler 01-08-13 17:35

ציטוט:

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

למה הecho?
ויכול להיות שזה קורה בגלל שלא רשמת ; אחרי האינקלוד תבדוק


אממ תקשיב אחי, אני ניסיתי בכל הכח לעשות את הקוד חכם ונקי יותר.
עכשיו תראה מה הבעיה.
ברגע שאני פותח את המשתנה content כמו שאתה רואה, אני אמור להכניס בו את כל ה"תוכן" שאני רוצה שיהיה באותו עמוד. כך הגדרתי בקובץ הPHP של העיצוב (love_head.php) הכוונה. עשיתי שב$content ייכנס כל התוכן.

בגלל זה אם אני אסגור את המשתנה עם ; , ואני אכניס את האינקלוד אז יש 2 אופציות:
או שהמערכת התחברות תהיה בראש הדף מעל כל העיצוב (מעל הlove_head.php)
או שהמערכת בכלל לא תופיע

במידה ואני מנסה לעשות אינקלוד בתוך המשתנה עצמו, בתוך הcontent, כמו שראית יוצאת לי שגיאה.

וזה לא משנה אם אני משתמש בecho או לא, כל עוד אני מכניס את פקודת הinclude בתוך משתנה הcontent, יש שגיאה בדף.

זה מה שמשגע אותי,
הבנת מה הבעיה עכשיו?

אבי בר 01-08-13 17:37

בהסתכלות שנייה יש לך שם עוד בעיות, קבל תיקון(שעדיין גרוע):
קוד:


<?php

include('config.php');

if(MODULE == 'none')
{
        include(LOVE_ROOT . '/system/love_head.php');
$content='<h2>ברוכים הבאים בלהלבהלבלה!! </h2>';

$content.= include('reg.php');

$content .= '<br>';


$content .= '<br /> <br /> <br />';       

       
        include(LOVE_ROOT . '/system/love_foot.php');
}
else
{
        header('Location: modules/' . MODULE);
}
?>

תכלס נמאס לענות לך אתה לא מקשיב גבר.

לא נהוג להכניס לתוך משתנה אינקלוד וכל השטויות שעשית שם אני ממליץ אם כבר לעשות משהו כזה:
א. קודם כל להעיף את כל ה<br><br><Br> האלה אם הם כאלה חשובים תכניס אותם לפוטר.
ואז הקוד יראה ככה: (שים לב שהעפתי את המשתנה content אין בו צורך לפחות אם עשית כמו שהראינו לך)
ב. להכניס את הכותרת h2 לתוך reg.php או לתוך הheader
קוד:

<?php

include('config.php');

if(MODULE == 'none')
{
        include(LOVE_ROOT . '/system/love_head.php');
       
include('reg.php');

        include(LOVE_ROOT . '/system/love_foot.php');
}
else
{
        header('Location: modules/' . MODULE);
}
?>



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

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