|
|
# 1 |
|
חסום
|
שגיאה עם קוקיס ו headers
זה השגיאה :
קוד:
Warning: Cannot modify header information - headers already sent by (output started קוד:
<html dir="rtl">
<head>
<title>דף ראשי</title>
<? include "config.php"; ?>
</head>
<body>
<?
$hour = time() + 3600;
$username = $_COOKIE['user'];
$password = $_COOKIE['pass'];
if(!isset($_COOKIE['user']))
{
echo "אתה אינך מחובר :: <a href=\"?act=loginform\">התחברות</a><br />";
}
else
echo "ברוך הבא $username :: <a href=\"?act=logout\">התנתק</a><br />";
$act = $_GET['act']; // הגדרת משתנה ראשי
if ($act == "logincheck") // בדיקת התחברות
{
// הכנסת פרטי הטופס למשתנים
$user = $_POST['User'];
$pass = $_POST['Pass'];
// בדיקת טופס
echo "
<table class=\"loginchecktable\">
<tr><td valign=\"top\" dir=\"rtl\" class=\"login_check_td_table\">";
if ($pass == "")
{
echo "סיסמא לא הוזנה";
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1;URL=?act=loginform\">";
}
else if ($user == "")
{
echo "שם משתמש לא הוזן";
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1;URL=?act=loginform\">";
}
else
{
$s = mysql_query("SELECT * FROM members WHERE username='$user' && password='$pass'") or die(mysql_error());
$checkform = mysql_num_rows($s);
if ($checkform == "0")
{
echo "אחד מהפרטים אינו נכון";
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1;URL=?act=loginform\">";
}
else
{
echo "התחברת בהצלחה";
setcookie(user, $user, $hour);
setcookie(pass, $pass, $hour);
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1;URL=index.php\">";
}
}
echo "</td></tr>";
echo "</table>";
}
else if ($act =="loginform") // טופס התחברות
{
if(!isset($_COOKIE['user']))
{
echo <<<LOGINFORM
<form action="?act=logincheck" method="post">
<table class="logintable">
<tr><td valign="top" dir="rtl" class="logintdtable">שם משתמש: </td>
<td valign="top" dir="rtl" class="logintdtable"><input type="text" name="User"></td>
</tr>
<tr><td valign="top" dir="rtl" class="logintdtable">סיסמא: </td>
<td valign="top" dir="rtl" class="logintdtable"><input type="password" name="Pass"></td>
</tr>
<tr><td valign="top" dir="rtl" class="logintdtable"></td>
<td valign="top" dir="rtl" class="logintdtable"><input type="reset" value="נקה"><input type="submit" value="התחבר"></td>
</tr>
</table>
</form>
LOGINFORM;
}
else
{
echo "אתה מחובר למערכת";
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1;URL=index.php\">";
}
}
else if($act == "logout")
{
$past = time() - 100;
setcookie(user, gone, $past);
setcookie(pass, gone, $past);
echo "התנתקת בהצלחה";
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1;URL=index.php\">";
}
?>
</body>
</html>
קוד:
setcookie(user, $user, $hour); setcookie(pass, $pass, $hour); |
|
|
|
# 2 |
|
הוסטסניון
|
זה בגלל ששלחת HTML לפני יצירת העוגיה..
אתה צריך לרשום בראש העמוד: PHP קוד:
PHP קוד:
__________________
אימיל \ מסן : amirs91 [at] gmail.com |
|
|
|
# 3 |
|
חסום
|
ניסי י מקודם לעשות את זה עם ob_end_clean אבל משום מה הוא לא יצר את הקוקיס...
עריכה : הנה גם עכשיו ברגע שאני עושה מה שאמרת הוא באמת לא מציג תשגיאה אבל הוא לא מבצע ת setcookies יענו הוא מציג אתה לא מחובר לפי התנאי בקוד. שהוא אמור להציג "ברוך הבא" כי התחברתי Last edited by kfir91; 20-07-08 at 18:51.. |
|
|
|
# 4 |
|
הוסטסניון
|
העוגייה בכל מקרה אמורה להיווצר, תנסה להדפיס אותה כדי לאמת זאת, ותראה מה היא מציגה לך.
__________________
אימיל \ מסן : amirs91 [at] gmail.com |
|
|
|
# 5 |
|
אין כמו ב127.0.0.1
|
לפי מה שאני זוכר, אחרי SETCOOKIE לא מתבצע אתחול איבר במערך $_COOKIES, אתה צריך לבדוק בדרך אחרת אם העוגיה קיימת או לרענן את הדף.
אני לא בטוח ב-100% שזה נכון |
|
|
|
# 6 |
|
חסום
|
אני מרענן את הדף זה לא עובד..
והעוגיה מחזירה ריק... למה? |
|
|
|
# 7 |
|
הוסטסניון
|
תעשה print_r($_COOKIE); בדף ותרשום מה הפלט.
__________________
|
|
|
|
# 8 |
|
חסום
|
זה רושם את זה :
קוד:
Array ( [__utma] => 3769970.1222316683.1216412329.1216412329.1216412329.1 [__utmz] => 3769970.1216412329.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none) ) |
|
|
|
# 9 | |
|
חבר מתקדם
|
ציטוט:
![]() ואין פה את העוגייה שלך. PHP קוד:
עושים PHP קוד:
בברכה, יורי. |
|
|
|
|
# 10 |
|
חסום
|
עשיתי ככה לפני שאמרת.. זה לא עובד
|
|
![]() |
| חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
| כלים לאשכול | |
| תצורת הצגה | |
|
|