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

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

LDan 20-01-07 11:54

בעיה בסשן
 
שלום,
ניתקלתי בשגיאה בסשן
קוד:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/labdan/domains/prozit.net/public_html/root/nihul.php:1) in /home/labdan/domains/prozit.net/public_html/root/nihul.php on line 3
הקובץ זה מופיע בו:
PHP קוד:

<?php


session_start
();
require(
'configure.php');
require(
'header.php');
if ((isset(
$_SESSION['id'])) && (isset($_SESSION['user'])) && (isset($_SESSION['pass']))) {

switch (
$_GET['a']) {
case 
"logout":
session_destroy();
?>
<meta http-equiv="Refresh" content="0; URL=index.php">
<?php
break;
case 
".$a.update":
$id1$a;
$text $_POST['text'];
$headline $_POST['headline'];
if (
$_POST['text'] && $_POST['headline']) {
mysql_query("DELETE FROM  `nihul` WHERE `id`='.$a.'") or die (mysql_error()); 
$add1 "INSERT INTO nihul (id, text, headline) VALUES ('$id1', '$text','$headline')";

///////mysql_query("UPDATE 'nihul' WHERE `id`='1' SET headline='".$_POST['headling']."',text='".$_POST['text']."'") or die (mysql_error());

mysql_query($add1);
?>
השינויים עודכנו בהצלחה. הנך מועבר<br>
אם אינך מועבר בתוך מספר שניות, אנא לחץ <a href="<?= $_SERVER['PHP_SELF']; ?>?a=.$a."><b>כאן</b></a>
<meta http-equiv="Refresh" content="2; URL=<?= $_SERVER['PHP_SELF']; ?>$=.$a.">
<?php
} else {
echo 
"<b>אנא חזור אחורה ומלא את כל הפרטים, תודה</b>";
}
break;
case 
".$a.":
$n31 =  mysql_query("SELECT * FROM `nihul` WHERE `id`='.$a.'") or die(mysql_error());
$n1 mysql_fetch_array($n31);
?>
<form action="<?= $_SERVER['PHP_SELF']; ?>?a=.$a.update" method="POST">
    <table cellspacing="0" cellpadding="0" style="border: 0px solid #00009C;" width="95%" align="center">
        <tr>
            <td background="images/menu_00.jpg" align="center" height="20"><font color="FFFFFF"><b>עדכון פרטים</b></font></td>
</tr></table>
    <table cellspacing="1" cellpadding="0" style="border: 1px solid #00009C;" width="95%" align="center">
<tr>
    <td align="right" width="80%"><input type="text" dir="rtl" name="headline" value="<?= $n1['headline']; ?>" style="width: 500pxpx;"></td>
            <td align="right" dir="rtl" width="20%"><b><u>כותרת</b></u></td>

</tr>
<tr>
            <td align="right" width="80%"><TEXTAREA  NAME="text" onkeypress="return isNumberKey(event)"  style="width: 500px; height: 350px;" /><? echo "$n1[text]"?></TEXTAREA></td>
            <td align="right" dir="rtl" width="20%"><b><u>תוכן</b></u></td>
</tr>
</table>
<br>

<input type="submit" name="send" value="עדכן">
</form>



<?php
break;
}
mysql_close($connation);
} else {
header("Location: index.php");
}

?>

תודה לעזורים:-)

Eli-Hai 20-01-07 12:00

הבעיה היא, שאתה משתמש בפונקציה session_start(); ויש Headerים שמודפסים למעלה. אישית, לא רואה למעלה, תשתמש ב-ob_start() ו-ob_end_flush()

tnadav 20-01-07 12:13

אתה משתמש בקידוד UTF-8?

LDan 20-01-07 12:16

ציטוט:

נכתב במקור על ידי tnadav (פרסם 408914)
אתה משתמש בקידוד UTF-8?

כן

PHP קוד:

<?php

// Copyright © Hanan. All rights reserved.
ob_start();
require(
'configure.php');
require(
'header.php');
if ((isset(
$_SESSION['id'])) && (isset($_SESSION['user'])) && (isset($_SESSION['pass']))) {

switch (
$_GET['a']) {
case 
"logout":
session_destroy();
?>
<meta http-equiv="Refresh" content="0; URL=index.php">
<?php
break;
case 
".$a.update":
$id1$a;
$text $_POST['text'];
$headline $_POST['headline'];
if (
$_POST['text'] && $_POST['headline']) {
mysql_query("DELETE FROM  `nihul` WHERE `id`='.$a.'") or die (mysql_error()); 
$add1 "INSERT INTO nihul (id, text, headline) VALUES ('$id1', '$text','$headline')";

///////mysql_query("UPDATE 'nihul' WHERE `id`='1' SET headline='".$_POST['headling']."',text='".$_POST['text']."'") or die (mysql_error());

mysql_query($add1);
?>
השינויים עודכנו בהצלחה. הנך מועבר<br>
אם אינך מועבר בתוך מספר שניות, אנא לחץ <a href="<?= $_SERVER['PHP_SELF']; ?>?a=.$a."><b>כאן</b></a>
<meta http-equiv="Refresh" content="2; URL=<?= $_SERVER['PHP_SELF']; ?>$=.$a.">
<?php
} else {
echo 
"<b>אנא חזור אחורה ומלא את כל הפרטים, תודה</b>";
}
break;
case 
".$a.":
$n31 =  mysql_query("SELECT * FROM `nihul` WHERE `id`='.$a.'") or die(mysql_error());
$n1 mysql_fetch_array($n31);
?>
<form action="<?= $_SERVER['PHP_SELF']; ?>?a=.$a.update" method="POST">
    <table cellspacing="0" cellpadding="0" style="border: 0px solid #00009C;" width="95%" align="center">
        <tr>
            <td background="images/menu_00.jpg" align="center" height="20"><font color="FFFFFF"><b>עדכון פרטים</b></font></td>
</tr></table>
    <table cellspacing="1" cellpadding="0" style="border: 1px solid #00009C;" width="95%" align="center">
<tr>
    <td align="right" width="80%"><input type="text" dir="rtl" name="headline" value="<?= $n1['headline']; ?>" style="width: 500pxpx;"></td>
            <td align="right" dir="rtl" width="20%"><b><u>כותרת</b></u></td>

</tr>
<tr>
            <td align="right" width="80%"><TEXTAREA  NAME="text" onkeypress="return isNumberKey(event)"  style="width: 500px; height: 350px;" /><? echo "$n1[text]"?></TEXTAREA></td>
            <td align="right" dir="rtl" width="20%"><b><u>תוכן</b></u></td>
</tr>
</table>
<br>

<input type="submit" name="send" value="עדכן">
</form>



<?php
break;
}
mysql_close($connation);
} else {
header("Location: index.php");
ob_end_flush();
}
// Copyright © Prozit. All rights reserved.
?>

טוב אז עשיתי עם הOB
וזה כותב את השגיאה הבאה:
קוד:

Warning: Cannot modify header information - headers already sent by (output started at /home/labdan/domains/prozit.net/public_html/root/nihul.php:1) in /home/labdan/domains/prozit.net/public_html/root/nihul.php on line 67
(זאת השורה:
header("Location: index.php");
)

RS324 20-01-07 12:17

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

LDan 20-01-07 12:20

ניסתי עם הסשן לצמצם את הרווח כתב לי
בעיה בשורה 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/labdan/domains/prozit.net/public_html/root/nihul.php:1) in /home/labdan/domains/prozit.net/public_html/root/nihul.php on line 2

(שם הסשן סטרט)

omercnet 20-01-07 12:53

תוודא שאין לך שום אנטרים לפני שאתה פותח את הPHP, זאת בד"כ הבעייה

Matchs 20-01-07 12:56

כנראה יש לו BOM בגלל שזה utf8.
אתה צריך להשתמש בעורך אחר כמו Notepad++.

LosNir 20-01-07 13:10

ציטוט:

נכתב במקור על ידי Matchs (פרסם 408944)
כנראה יש לו BOM בגלל שזה utf8.
אתה צריך להשתמש בעורך אחר כמו Notepad++.

בדיוק.

UTF-8 משחרר לך פלט כלשהו אוטמטית..

LDan 20-01-07 13:14

אין לי שמץ של מושג מהז ה משנה איזה עורך
למה אותם קודים:\

אבל ננסה...:)


הורדתי
אבל במקום עברית יוצא ג'בריש
ואיפה משנים לקידוד UTF-8
?

Matchs 20-01-07 13:17

ציטוט:

נכתב במקור על ידי LDan (פרסם 408953)
אין לי שמץ של מושג מהז ה משנה איזה עורך
למה אותם קודים:\

אבל ננסה...:)

אל תשכח שם בקידוד לשים UTF8 Without BOM, או מה שלא יהיה..
ותעתיק את כל הקוד אחרי ה-<?php שלך, ואחר כך תוסיף אותו ידנית.

LDan 20-01-07 13:20

הורדתי
אבל במקום עברית יוצא ג'בריש
ואיפה משנים לקידוד UTF-8?



גירסא 2.0

omercnet 20-01-07 13:47

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

LDan 20-01-07 14:03

ציטוט:

נכתב במקור על ידי omercnet (פרסם 408940)
תוודא שאין לך שום אנטרים לפני שאתה פותח את הPHP, זאת בד"כ הבעייה

אנטרים = לשורות ריקות?

BlueNosE 20-01-07 18:44

ציטוט:

נכתב במקור על ידי LDan (פרסם 408993)
אנטרים = לשורות ריקות?

כן.
זה שולח את ההיידרים..

tnadav 21-01-07 15:03

ציטוט:

נכתב במקור על ידי Matchs (פרסם 408959)
אל תשכח שם בקידוד לשים UTF8 Without BOM, או מה שלא יהיה..
ותעתיק את כל הקוד אחרי ה-<?php שלך, ואחר כך תוסיף אותו ידנית.

UTF8 without signature

ומן הסתם אם אתה תשמור את זה כ- UTF-8 ב- Zend הבעיה לא תקרה...
מדובר בבאג ב- PHP, שמשום מה החליטו לדחות את תיקונו ל- PHP 6...|עצוב|

LDan 21-01-07 15:20

בדקתי עם סיישן סטרט
ברווחים הורדתי את כולם
וזה כותב אותה בעיה כמו בהודעה הראשונה בשורה השניה (זאת עם הסשן)

ולגבי
הOB
ניסתי זה כותב בעיה בשורה של HEADER LOCATION
אם מורידים אותה הכל לבן:\

sUP 21-01-07 15:28

יש אפשרות לפתור את זה ב NOTEPAD?

ו ZEND אין לכולם :P

LDan 21-01-07 15:51

חצי מהאנשים פה
אנא הסבירו את עצמכם למה אין לי מושג על מה אתם מדברים
ZEND???

RS324 21-01-07 17:15

Zend Stuido - לא בעיה להוריד...

תבדוק אם יש לך שורות ריקות לפני ההתחלה של <?php

LosNir 21-01-07 17:23

ציטוט:

נכתב במקור על ידי RS324 (פרסם 409721)
Zend Stuido - לא בעיה להוריד...

תבדוק אם יש לך שורות ריקות לפני ההתחלה של <?php

אם לא שמת לב הוא משתמש ב UTF-8 וכנראה BOM מופעל..
אין לי מושג מזה ממש, אבל אני יכול להגיד לך שזה שולח Headers כלשהו בלי שתראה.


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

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