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

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

NoBoDy 10-06-11 18:01

בעיה| תמיד אותם בעיות - חשוב מאוד!
 
שלום,
בניתי מערכת, היא עובדת מעולה כשאני מריץ אותה על המחשב (מערכת PHP).
עכשיו תמיד כשאני מעלה לאחסון יש את הבעיות האלו.
הבעיה הראשונה:
ה header לא עובד. אני מעביר location וזה לא עובד באחסון, אני מדבר על:
PHP קוד:

header("location: xxx.php"); 

ובמחשב עובד מעולה.

הבעיה השנייה היא בעיה ב session.
תמיד היא קורה לי כשאני מעלה לאחסון:
PHP קוד:

Warning:  session_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at /home/nie/public_html/czmember/index.php:1in /home/nie/public_html/czmember/config.php on line 2 

תוכלו להגיד לי איך לתקן את זה?

תודה!

Deagly 10-06-11 23:32

ציטוט:

נכתב במקור על ידי nirbe (פרסם 807266)
שלום,
בניתי מערכת, היא עובדת מעולה כשאני מריץ אותה על המחשב (מערכת PHP).
עכשיו תמיד כשאני מעלה לאחסון יש את הבעיות האלו.
הבעיה הראשונה:
ה header לא עובד. אני מעביר location וזה לא עובד באחסון, אני מדבר על:
PHP קוד:

header("location: xxx.php"); 

ובמחשב עובד מעולה.

הבעיה השנייה היא בעיה ב session.
תמיד היא קורה לי כשאני מעלה לאחסון:
PHP קוד:

Warning:  session_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at /home/nie/public_html/czmember/index.php:1in /home/nie/public_html/czmember/config.php on line 2 

תוכלו להגיד לי איך לתקן את זה?

תודה!

Headers שולחים בראש הדף לפני כל הדפסה על גבי הדף...
לא סתם קוראים לזה Header |קורץ|

mega-user 11-06-11 00:47

את session_start() עלייך להפעיל לפני שאתה שולח HEADERS , אם יש SESSION במסך זה הפקודה הראשונה שתבצע.

אדיר 11-06-11 01:02

בקיצור יש לך BOM או איזה תו כלשהו (רווח או משהו) בתחילת בקובץ..
תמחק אותו.

גורילה 11-06-11 02:03

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 807328)
בקיצור יש לך BOM או איזה תו כלשהו (רווח או משהו) בתחילת בקובץ..
תמחק אותו.

אציין ואוסיף כי notepad ++ מסיר BOM באופן אוטומטי ובגרסאות החדשות ניתן לבחור באופציה זו.

NoBoDy 11-06-11 07:30

ציטוט:

נכתב במקור על ידי Deagly (פרסם 807318)
Headers שולחים בראש הדף לפני כל הדפסה על גבי הדף...
לא סתם קוראים לזה Header |קורץ|

אז איך נגיד אני יכול לעשות seitch שמעביר נגיד את index.php?act=inx לעמוד הראשי? אי אפשר להשתמש ב header?
ציטוט:

נכתב במקור על ידי mega-user (פרסם 807327)
את session_start() עלייך להפעיל לפני שאתה שולח HEADERS , אם יש SESSION במסך זה הפקודה הראשונה שתבצע.

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

נכתב במקור על ידי גורילה (פרסם 807330)
אציין ואוסיף כי notepad ++ מסיר BOM באופן אוטומטי ובגרסאות החדשות ניתן לבחור באופציה זו.

אין לי מושג מה זה bom
ציטוט:

נכתב במקור על ידי xPerfection (פרסם 807328)
בקיצור יש לך BOM או איזה תו כלשהו (רווח או משהו) בתחילת בקובץ..
תמחק אותו.

אין לי רווח אחד. זה ככה:
PHP קוד:

<?php
session_start
();

וגם כשאני מוחק את ה header יש את השגאיה הזאתי...

PHP קוד:

Warningsession_start() [function.session-start]: Cannot send session cookie headers already sent by (output started at /home/nie/public_html/czmember/index.php:1in /home/nie/public_html/czmember/config.php on line 2

Warning
session_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at /home/nie/public_html/czmember/index.php:1in /home/nie/public_html/czmember/config.php on line 2 


קובץ ה config:

PHP קוד:

<?php
    session_start
();
    
    
$host "localhost";
    
$user "nie_user";
    
$password "12qwaszx";
    
$db "nie_czm";
    
    
mysql_connect($host,$user,$password);
    
mysql_select_db($db);
    
mysql_query("SET NAMES utf8;"); 
    
    
error_reporting("Undefined index: name");

    include(
"aNtisQL.php");
    
    function 
secure($name){
        
$post strip_tags(htmlspecialchars($name));
        return 
$post;
    }
    
    
$qmain mysql_query("SELECT * FROM members");
    
$rowmain mysql_fetch_assoc($qmain);    
?>

אני ניסיתי להוריד את הTAB לפני ה session זה לא עוזר.

Deagly 11-06-11 09:03

ציטוט:

נכתב במקור על ידי nirbe (פרסם 807338)
אז איך נגיד אני יכול לעשות seitch שמעביר נגיד את index.php?act=inx לעמוד הראשי? אי אפשר להשתמש ב header?

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

אין לי מושג מה זה bom

אין לי רווח אחד. זה ככה:
PHP קוד:

<?php
session_start
();

וגם כשאני מוחק את ה header יש את השגאיה הזאתי...

PHP קוד:

Warningsession_start() [function.session-start]: Cannot send session cookie headers already sent by (output started at /home/nie/public_html/czmember/index.php:1in /home/nie/public_html/czmember/config.php on line 2

Warning
session_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at /home/nie/public_html/czmember/index.php:1in /home/nie/public_html/czmember/config.php on line 2 


קובץ ה config:

PHP קוד:

<?php
    session_start
();
    
    
$host "localhost";
    
$user "nie_user";
    
$password "12qwaszx";
    
$db "nie_czm";
    
    
mysql_connect($host,$user,$password);
    
mysql_select_db($db);
    
mysql_query("SET NAMES utf8;"); 
    
    
error_reporting("Undefined index: name");

    include(
"aNtisQL.php");
    
    function 
secure($name){
        
$post strip_tags(htmlspecialchars($name));
        return 
$post;
    }
    
    
$qmain mysql_query("SELECT * FROM members");
    
$rowmain mysql_fetch_assoc($qmain);    
?>

אני ניסיתי להוריד את הTAB לפני ה session זה לא עוזר.

אם כך הדף נראה אז כמו ש xPerfection אמר - יש לך BOM בדף וצריך להורידו.
תפתח את המסמך NOTEPAD++ או DreamWeaver (יש עוד סוגים אבל ממליץ על אלה)
ובעת השמירה יש לך אפשרות לשמור כ UTF-8 Without BOM

NoBoDy 11-06-11 09:47

ציטוט:

נכתב במקור על ידי Deagly (פרסם 807340)
אם כך הדף נראה אז כמו ש xPerfection אמר - יש לך BOM בדף וצריך להורידו.
תפתח את המסמך NOTEPAD++ או DreamWeaver (יש עוד סוגים אבל ממליץ על אלה)
ובעת השמירה יש לך אפשרות לשמור כ UTF-8 Without BOM

שמרתי, עדיין לא עובד,
תוכל לשמור את הקובץ הזה כ BOM לשלוח לי? אולי אני עושה משהו לא טוב בשמירה...

Shay Ben Moshe 11-06-11 10:32

כל ההמלצות נכון לעכשיו נכונות.
מה שמעניין אותי זה מה זה השורה הזו?
PHP קוד:

error_reporting("Undefined index: name"); 


NoBoDy 11-06-11 10:33

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 807346)
כל ההמלצות נכון לעכשיו נכונות.
מה שמעניין אותי זה מה זה השורה הזו?
PHP קוד:

error_reporting("Undefined index: name"); 


כל ההמלצות לא עובדות...
השורה הזאתי מבטלת את השגיאה שיש hedaer("location: xx.php");
באמצע הדף.
וגם אם אני מוחק אותה, ואת ה header, זה עדיין לא עובד.

אדיר 11-06-11 12:15

תבדוק את זה גם ב- index.php.
תעשה את זה עם עורך מתקדם, אני גם ממליץ על Notepad++.

כדי להוריד את ה- BOM אתה נכנס בתפריט ל- Encoding ואז שמה יש לך:
Encode in\ Convert to UTF-8 without BOM

אם אתה מזהה שם שוב איזה רווח, תו כלשהו או משהו (סביר להניח שזה יהיה לפני ה <?php), תמחק אותו.

Shay Ben Moshe 11-06-11 12:50

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

לנושא, מה שאתה צריך לעשות זה להקפיד לא לשלוח שום פלט (בעזרת bom/echo/print/הודעת שגיאה [לדוגמה מהשורה שלך]) לפני הדרים.
שים לב שגם session נחשב הדר.

NoBoDy 11-06-11 15:31

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 807365)
תבדוק את זה גם ב- index.php.
תעשה את זה עם עורך מתקדם, אני גם ממליץ על Notepad++.

כדי להוריד את ה- BOM אתה נכנס בתפריט ל- Encoding ואז שמה יש לך:
Encode in\ Convert to UTF-8 without BOM

אם אתה מזהה שם שוב איזה רווח, תו כלשהו או משהו (סביר להניח שזה יהיה לפני ה <?php), תמחק אותו.

אני משתמש ב notepad++, וזה שומא כ bom, ואני מודע לזה שאסור שהיה רווחים. ואין רווח אחד, כמו שהראתי לכם למעלה.

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 807371)
ניר אתה כנראה עושה משהו לא נכון.
דבר ראשון, השורה הזו לא עושה כלום, היא פשוט מריצה שגיאה. תקרא על הפונקציה הזו בphp.net לא ככה משתמשים בה.

לנושא, מה שאתה צריך לעשות זה להקפיד לא לשלוח שום פלט (בעזרת bom/echo/print/הודעת שגיאה [לדוגמה מהשורה שלך]) לפני הדרים.
שים לב שגם session נחשב הדר.

לא הבנתי כלום.

בכל מקרה, בעמוד הקודם שלחתי את הקוד, ותשימו לב שהכל תקין,
ועוד משהו, אולי לא קראתם את זה, או דילגתם על זה, כתבתי שהמערכת עובדת באחסון על המחשב...

קובץ ה config:
PHP קוד:

 <?php 
    session_start
(); 
     
    
$host "localhost"
    
$user "nie_user"
    
$password "12qwaszx"
    
$db "nie_czm"
     
    
mysql_connect($host,$user,$password); 
    
mysql_select_db($db); 
    
mysql_query("SET NAMES utf8;");  
     
    
error_reporting("Undefined index: name"); 

    include(
"aNtisQL.php"); 
     
    function 
secure($name){ 
        
$post strip_tags(htmlspecialchars($name)); 
        return 
$post
    } 
     
    
$qmain mysql_query("SELECT * FROM members"); 
    
$rowmain mysql_fetch_assoc($qmain);     
?>

קובץ ה INDEX:
PHP קוד:

<?php
    
include("config.php");
    include(
"settingsconfig.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">

    <head>
        <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="style.css" title="style" />
        <title><?php echo $sitename?></title>
    </head>

<body>

    <! תפריט !>
    <?php include("models/menu.php"); ?>
    <! תפריט !>
    
    <! מיני פרופיל/התחברות !>
    <?php include("models/miniprofile.php"); ?>
    <?php include("models/newmem.php"); ?>
    <! מיני פרופיל/התחברות !>
    <div id="main">
        <script language="JavaScript">
            var browserName=navigator.appName; 
            if (browserName=="Microsoft Internet Explorer")
            {
                window.location = "no.php";
            }
        </script>
        <?php
            
switch($_GET["act"]){
                case 
inx: include("pages/inx.php"); break;
                case 
register: include("pages/register.php"); break;
                case 
login: include("pages/login.php"); break;
                case 
profile: include("pages/profile.php"); break;
                case 
edit: include("pages/edit.php"); break;
                case 
logoutsession_destroy(); echo "<br /><div id='success'>התנתקת בהצלחה</div>"; break;
                default: 
header("Location: index.php?act=inx");
            }
        
?>
    </div>
    <?php include("recent.php"); ?>
    <p class="copyright">כל הזכויות שמורות ל <strong>ניר ברקו</strong> מצוות <strong>cryzi</strong>
    <br />CZMember 0.4
    </p>
</body>
</html>


Scolpy 11-06-11 15:47

אתה יכול להעלות את קבצי המקור לאתר העלאות קבצים כלשהו?
אני חושב שמצאתי פה BOM אך אני לא בטוח האם הוא מופיע בגלל העורך של הפורום או בגלל שהוא באמת קיים.

NoBoDy 11-06-11 16:24

ציטוט:

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

http://www.f2h.co.il/4pva3fllkzt

אדיר 11-06-11 16:26

תערוך את הקבצים כשהם על השרת, לא על המחשב (אני מניח שלא עשית את זה עד עכשיו).
ייתכן שקליאנט ה- FTP שלך הוא שמוסיף את אותו BOM/ תו בתחילת הקובץ, זה קורה..

נ.ב
אחרי שאתה משנה את הקידוד ל- UTF-8 without BOM,
שים לב שאם לא ביצעת שום שינוי אחר אתה לא תוכל לשמור את הקובץ (ב- Notepad++ לפחות),
אז תכתוב איזה תו, תמחק אותו ואז תשמור.

NoBoDy 11-06-11 16:41

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 807393)
תערוך את הקבצים כשהם על השרת, לא על המחשב (אני מניח שלא עשית את זה עד עכשיו).
ייתכן שקליאנט ה- FTP שלך הוא שמוסיף את אותו BOM/ תו בתחילת הקובץ, זה קורה..

נ.ב
אחרי שאתה משנה את הקידוד ל- UTF-8 without BOM,
שים לב שאם לא ביצעת שום שינוי אחר אתה לא תוכל לשמור את הקובץ (ב- Notepad++ לפחות),
אז תכתוב איזה תו, תמחק אותו ואז תשמור.

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

אדיר 11-06-11 17:00

הכוונה שלי הייתה לכך שאם אתה עורך על המחשב אבל ברגע שאתה מעלה לשרת זה משתנה, זה לא יעזור.

ערכתי אצלי, תראה אם עובד:
http://f2h.nana10.co.il/c29gid9al3cc
היה לך BOM ב- index.php.

NoBoDy 11-06-11 17:25

ציטוט:

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

ערכתי אצלי, תראה אם עובד:
http://f2h.nana10.co.il/c29gid9al3cc
היה לך BOM ב- index.php.

עובד!
אז בעצם ערכת את הקובץ על השרת?

אדיר 11-06-11 17:30

לא..
הקובץ index.php היה שמור כ- UTF-8 במקום UTF-8 without BOM.

תהנה.

NoBoDy 11-06-11 17:30

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 807405)
לא..
הקובץ index.php היה שמור כ- UTF-8 במקום UTF-8 without BOM.

תהנה.

אוקי תודה רבה אחי, עזרת לי מאוד!


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

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