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

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

Ben147 07-01-09 23:40

[בעיה] PHP מערכת התחברות
 
המערכת התחברות בנוי על PHP היא רשומה מצויין אבל זה נותן לי שגיאה במקום מסויים שלא מצאתי פתרון אלייה
Index.php

PHP קוד:

Index.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>



<body>
<form id="form1" name="form1" method="post" action="">
UserName: 
<label>
<input type="text" name="username" id="username" />
</label>
<p>PassWord:
<label>
<input type="text" name="password" id="password" />
</label>
</p>
<p>
<label>
<input type="submit" name="next" id="next" value="Login" />
</label>
</p>
</form>
</body>
</html>
<?php
session_start
();
if (isset(
$_POST['next']))
{
test();
}

function 
test()
{
if (
$_POST['username'] == "Admin" && $_POST['password'] == "1234")
{
$_SESSION['login'] = "1";
echo 
"<meta http-equiv='refresh' content='0;URL=panel.php' />";
}
else
{
echo 
"<center>ôøèéí ùâåééí</center>";
}
}
?>


השגיאה היא:
PHP קוד:

Warningsession_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at index.php:15in index.php on line 30 

השגיאה היא לשורה של:
ציטוט:

session_start();
תודה לעוזרים

SarafC 08-01-09 00:36

שימוש בסשנס צריך להיות לפני הכל, לפני הHEADERS (תגיות הפתיחה).

הקוד שלך אמור להיות:

PHP קוד:

<?php
session_start
();
if (isset(
$_POST['next']))
{
test();
}
function 
test()
{
if (
$_POST['username'] == "Admin" && $_POST['password'] == "1234")
{
$_SESSION['login'] = "1";
echo 
"<meta http-equiv='refresh' content='0;URL=panel.php' />";
}
else
{
echo 
"<center>שגיאה</center>";
}
}
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255" />
<title>Login</title>
</head>
 
<body>
<form id="form1" name="form1" method="post" action="">
UserName: 
<label>
<input type="text" name="username" id="username" />
</label>
<p>PassWord:
<label>
<input type="text" name="password" id="password" />
</label>
</p>
<p>
<label>
<input type="submit" name="next" id="next" value="Login" />
</label>
</p>
</form>
</body>
</html>

אגב, ערכתי לך את הקידוד (הוא לא עברי, ואתה רוצה להציג טקסט בעברית).

לקריאה נוספת על סשנס, הייתי מציע לך לעיין פה:

http://php.eitan.ac.il/main.php?id=00169

Ben147 08-01-09 01:02

הוספתי קובץ panel.php
ציטוט:

<?php
session_start();
if ($_SESSION == "1")
{
?>

(TEST TEXT TEXT)


<?php
}
else
{
echo "אתה לא מחובר";
}
?>
ו login.php
ציטוט:

<?php
session_start();
if ($_SESSION['login'] == "1")
{
echo "<meta http-equiv='refresh' content='0;URL=panel.php' />";
}
else
{
echo "<meta http-equiv='refresh' content='0;URL=login.php' />";
}
?>
וברגע שאני מתחבר במקום לרשום לי TEXT TEXT TEXT הוא רושם לי אתה לא מחובר

SarafC 08-01-09 01:13

panel.php:

PHP קוד:

<?php
session_start
();
if (
$_SESSION['login'] == "1")
{
?>
(TEST TEXT TEXT)

<?php
}
else
{
echo 
"אתה לא מחובר";
}
?>

אתה לא יכול לקרוא לסשן מבלי לאמר את שמה =]

אתה כתבת:

PHP קוד:

if ($_SESSION == "1"

וצריך לכתוב:

PHP קוד:

 if ($_SESSION['login'] == "1"

בקשר לlogin.php, אם אין לי סשן אמדמין זה מרענן בלי הפסקה את העמוד. מה המטרה?

Ben147 08-01-09 01:17

המטרה של ה login זה ברגע שהפרטים נכונים הוא עושה רענן ועובר לקובץ panel.php
ואם לא הוא עושה רענן וחוזר ל login

SarafC 08-01-09 01:28

אז מה לגבי עמוד הindex.php?

תן לי להראות לך את מה שאני בניתי (הקוד שלך בצורה יותר נוחה):

index.php - פאנל הניהול

PHP קוד:

<?php
session_start
();
if (
$_SESSION['login'] == "1")
{
?>
(TEST TEXT TEXT)

<?php
}
else
{
echo 
"אתה לא מחובר";
}
?>

login.php - טופס ההתחברות

PHP קוד:

<?php
session_start
();
if (isset(
$_POST['next']))
{
test();
}
function 
test()
{
if (
$_POST['username'] == "Admin" && $_POST['password'] == "1234")
{
$_SESSION['login'] = "1";
echo 
"<meta http-equiv='refresh' content='0;URL=panel.php' />";
}
else
{
echo 
"<center>שגיאה</center>";
}
}

if (
$_SESSION['login'] == 1)
{
 echo 
"<meta http-equiv='refresh' content='0;URL=panel.php' />";
}
else
{
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255" />
<title>Login</title>
</head>
 
<body>
<form id="form1" name="form1" method="post" action="">
UserName: 
<label>
<input type="text" name="username" id="username" />
</label>
<p>PassWord:
<label>
<input type="text" name="password" id="password" />
</label>
</p>
<p>
<label>
<input type="submit" name="next" id="next" value="Login" />
</label>
</p>
</form>
</body>
</html> 
<?php
}
php?>

קרא את הקוד בעיון.

מקווה שהבנת =]

Ben147 08-01-09 01:30

סידרתי את זה פשוט מחקי את הקובץ login.php הוא לא נחוץ

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

SarafC 08-01-09 01:41

ציטוט:

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

ציטוט:

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

PHP קוד:

session_unregister('login'); 

ציטוט:

מה עם הקובץ panel.php למה לפי מה שאני רואה בקוד של login.php אתה מפנה ת urls ל panel.php
בקוד של login.php אני בודק אם המשתמש כבר מחובר כאדמין, ואם כן מעביר אותו מייד ללוח הניהול. אם לא, הוא צריך להתחבר שוב.


תראה, אתה שואל פה הרבה שאלות, כשבקריאה פשוטה יכול להבין את כולן.

תעיין באתר הבא: http://php.eitan.ac.il/ ותקרא כמה שיותר (רצוי הכל, זה לא כל כך הרבה).

אני הלכתי לישון.

לילה טוב.

בהצלחה =]

Ben147 08-01-09 02:06

אוקי הסתדרתי
תודה רבה על העזרה :)


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

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