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

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

z_arkady 21-12-06 16:20

עזרה | תכנות PHP (מה לא בסדר בקוד שלי?)
 
מה לא בסדר בקוד הזה?

קוד:

<html dir="rtl">

<head>
<title>Icq</title>
</head>

<body>



<form method="GET" action="">
          <p align="center">
          <input type="text" name="d" size="13">
          <input type="submit" value="Go" name="B1"></p>
</form>



<?php
$q = "icq";

if ($_GET['d'] == $q) {

header("Location: index.html/");

}
?>

</body>

</html>

אני רושם icq שולח וזה נותן לי שגיאה ולא מעביר אותי לדף index.html

זאת השגיאה:

קוד:

Warning: Cannot modify header information - headers already sent by (output started at /home/[צונזר]/domains/[x]/public_html/1.php:19) in /home/[צונזר]/domains/[x]/public_html/1.php on line 24

opsite 21-12-06 16:27

למה לא הגדרת את הפעולה שהוא יעשה?

action="שים כאן את הפעולה"

z_arkady 21-12-06 16:30

ציטוט:

נכתב במקור על ידי opsite (פרסם 392178)
למה לא הגדרת את הפעולה שהוא יעשה?

action="שים כאן את הפעולה"

כי אז לא משנה מה אני ירשום בתיבת טקסט זה יעביר אותי ל index.html

http://shush.il-il.com/1.php

הינה קישור לקובץ

LosNir 21-12-06 16:49

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

PHP קוד:


<?php 
$q 
"icq"

if (
$_GET['d'] == $q) { 

header("Location: index.html/");


?>

<html dir="rtl">

<head>
<title>Icq</title>
</head>

<body>



<form method="GET" action="">
          <p align="center">
          <input type="text" name="d" size="13">
          <input type="submit" value="Go" name="B1"></p>
</form>

</body>

</html>


z_arkady 21-12-06 17:11

זה לא עזר :(

עכשיו בכלל כשאני רושם icq הוא מראה לי שהדף לא נמצא...

הינה תסתכל בעצמך: http://shush.il-il.com/2.php


נ.ב הדף index.html כן קיים

sUP 21-12-06 17:15

עשית index.html/
אתה צריך בלי / זה לא תקיה.. זה קובץ.

DorWD 21-12-06 17:27

עריכה: רשמתי פוסט במקום הלא נכון :|

DCB 21-12-06 19:47

תוסיף בראש העמוד את הפונקציה
ob_start
זה צריך לטפל בבעיה

tnadav 22-12-06 11:22

ציטוט:

נכתב במקור על ידי DCB (פרסם 392346)
תוסיף בראש העמוד את הפונקציה
ob_start
זה צריך לטפל בבעיה

...
כבר פתרו את הבעיה...
ו- ob_start זה פיתרון דיי מסריח..

נריה 22-12-06 12:15

ציטוט:

נכתב במקור על ידי tnadav (פרסם 392651)
...
כבר פתרו את הבעיה...
ו- ob_start זה פיתרון דיי מסריח..

מה מסריח בו?
הוא פשוט וקל
בלעדיו אתה לא תוכל לעשות פלט לפני עוגיה/הידר
אז למה לא להשתמש בו ולעשות את התיכנות ליותר קל

WebProject 22-12-06 12:26

ציטוט:

נכתב במקור על ידי נריה (פרסם 392687)
מה מסריח בו?
הוא פשוט וקל
בלעדיו אתה לא תוכל לעשות פלט לפני עוגיה/הידר
אז למה לא להשתמש בו ולעשות את התיכנות ליותר קל

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

נריה 22-12-06 12:32

קודם כל כן אני יודע
ובכל מקרה לא שמים אותה בכל דף
אם יש דף שאתה צריך(ואין פתרון זמין אחר) שים אותה

sUP 22-12-06 13:10

ציטוט:

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

מה היא באמת עושה?8-*

TopSite 22-12-06 14:49

ציטוט:

נכתב במקור על ידי sUP (פרסם 392713)
מה היא באמת עושה?8-*

http://il.php.net/manual/en/function.ob-start.php

tnadav 22-12-06 14:51

ציטוט:

נכתב במקור על ידי נריה (פרסם 392687)
מה מסריח בו?
הוא פשוט וקל
בלעדיו אתה לא תוכל לעשות פלט לפני עוגיה/הידר
אז למה לא להשתמש בו ולעשות את התיכנות ליותר קל

אם יש לך אתר גדול? אתה מכפיל את הזיכרון ש-PHP משתמשת בו לפלט, אם יש לך פלט HTML גדול, ייקח יותר זמן לעבד הכל.

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

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

ציטוט:

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

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

LosNir 22-12-06 15:13

ציטוט:

נכתב במקור על ידי tnadav (פרסם 392775)
אם יש לך אתר גדול? אתה מכפיל את הזיכרון ש-PHP משתמשת בו לפלט, אם יש לך פלט HTML גדול, ייקח יותר זמן לעבד הכל.

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

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


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

צודק.

לא צריך לנסות לפתור את הבעיה בדרך עקיפין,
צרךי לפצח אותה ישר מהשורש!
אז תשקיע עוד 10 דקות בשביל למצוא פתרון לשים את ה HEADER לפני.. (במידה ואתה עושה Include לקובץ מסוים..).


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

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