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

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

NoBoDy 13-05-11 08:11

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

זה הקוד:
PHP קוד:

<?php
    session_start
();


    
mysql_connect("localhost","berkonir_user","fiLm3qBg") or die("אין אפשרות להתחבר למסד");
    
mysql_select_db("berkonir_mem") or die("אין אפשרות להתחבר לDB");
    
    
    
$username $_SESSION["username"];
    
$username $_SESSION["password"];
    
$q mysql_query("SELECT * FROM users WHERE username = '".$_SESSION["username"]."' AND password = '".$_SESSION["password"]."'");
    
    if (
mysql_num_rows($q) == 0){
    
    if (isset(
$_POST["send"])){
        if (!empty(
$_POST["username"]) && !empty($_POST["password"])){
            
$username $_POST["username"];
            
$password $_POST["password"];
            
$q mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
                if (
mysql_num_rows($q) > 0){
                echo 
"יש את השם";
                
$_SESSION["username"] = $username;
                
$_SESSION["password"] = $password;
                }else{
                    echo 
"שם משתמש או סיסמה אינם נכונים";
                }
            }else{
                echo 
"יש למלות את כל השדות";
            }
        }
?>

<!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" xml:lang="he" lang="he" dir="rtl">
    <head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf=8" />
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <form action="" method="post">
        שם משתמש: <input type="text" name="username" />
        סיסמה: <input type="text" name="password" />
        <input type="submit" name="send" value="התחבר" />
        </form>
    <?php
        
}else{
        
?>
            <div align="right" dir="rtl">
                שלום
            </div>
        <?php
        
}
        
?>
    </body>
</html>

זה האתר:
http://berkonir.info/projects/2/

תודה!

orelcn 13-05-11 08:34

שיפצתי לך את הקוד היו בו מלא טעויות תנסה תגיד לי אם עובד לך

PHP קוד:

<?php

session_start
();

    
mysql_connect("localhost","berkonir_user","fiLm3qBg") or die("אין אפשרות להתחבר למסד");
    
mysql_select_db("berkonir_mem") or die("אין אפשרות להתחבר לDB");
    
    if (isset(
$_POST["send"])) {
        
        if (!empty(
$_POST["username"]) && !empty($_POST["password"])) {
            
            
$username $_POST["username"];
            
$password $_POST["password"];
    
            
$q mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password' ");
            
            if (
mysql_num_rows($q) != 0) {
                
                
$_SESSION["username"] = $username;
                echo 
"ההתחברות הושלמה";

            } else {
            
                echo 
"שם משתמש או סיסמה שגויים!";

            }

        } else {
    
            echo 
"יש למלות את כל השדות";

        }
    
    }
?>

<!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" xml:lang="he" lang="he" dir="rtl">
<head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf=8" />
    <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?
    
if ($_SESSION['username'] == "") {
?>
    <form action="" method="post">
        שם משתמש: <input type="text" name="username" />
        סיסמה: <input type="text" name="password" />
        <input type="submit" name="send" value="התחבר" />
    </form>
<?
    
} else {
?>
            <div align="right" dir="rtl">
                שלום <? echo $_SESSION['username']; ?>
            </div>
<?
    
}
?>
</body>
</html>


NoBoDy 13-05-11 08:52

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

orelcn 13-05-11 09:29

אוקיי... אז אני רק יכול לישלוח לך את הלינק שממנו אני למדתי להשתמש בSESSION
http://php.eitan.ac.il/main.php?id=00169


ולגבי הקוד אם בא לך לנסות שוב עשיתי עוד כמה שינויים אם תיקרא את הקוד תוכל להבין אותו בקלות הוא לא מסובך

PHP קוד:

<?php

session_start
();

    
mysql_connect("localhost","berkonir_user","fiLm3qBg") or die("אין אפשרות להתחבר למסד"); 
    
mysql_select_db("berkonir_mem") or die("אין אפשרות להתחבר לDB"); 


    if (
$_GET['do'] == "login") {
    
            if (!empty(
$_POST['username']) && !empty($_POST['password'])) { 
        
            
$str_username $_POST['username'];
            
$str_password $_POST['username'];
            
            
$q mysql_query("SELECT * FROM users WHERE username='$str_username' AND password='$str_password' "); 
            
                if (
mysql_num_rows($q) == 0) {
                    
                    
$_SESSION['username'] = "";
                    echo 
"שם משתמש או סיסמה שגויים";
                    
                } else {
                
                    
$_SESSION['username'] = $str_username;
                    echo 
"ההתחברות בוצעה בהצלחה";
                
                }
                
            } else {
            
                echo 
"חובה למלא שם משתמש וסיסמה!";
            
            }
        
    }


?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html dir="rtl">

<head>
    <meta content="text/html; charset=windows-1255" http-equiv="Content-Type">
    <title>כניסה למערכת</title>
    <link rel="stylesheet" type="text/css" href="style.css"> 
</head>
<body>
<?

    
if ($_SESSION['username'] == "") {

?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?do=login" name="formLogin">
    שם משתמש: <input type="text" name="username">
    סיסמה: <input type="password" name="password">
    <input type="submit" name="send" value="התחבר">
</form>

<?

    
} else {

?>

    <div dir="rtl">
        שלום <? echo $_SESSION['username']; ?>
    </div>

<?

    
}

?>
</body>
</html>


NoBoDy 13-05-11 10:42

ציטוט:

נכתב במקור על ידי orelcn (פרסם 804160)
אוקיי... אז אני רק יכול לישלוח לך את הלינק שממנו אני למדתי להשתמש בSESSION
http://php.eitan.ac.il/main.php?id=00169


ולגבי הקוד אם בא לך לנסות שוב עשיתי עוד כמה שינויים אם תיקרא את הקוד תוכל להבין אותו בקלות הוא לא מסובך

PHP קוד:

<?php

session_start
();

    
mysql_connect("localhost","berkonir_user","fiLm3qBg") or die("אין אפשרות להתחבר למסד"); 
    
mysql_select_db("berkonir_mem") or die("אין אפשרות להתחבר לDB"); 


    if (
$_GET['do'] == "login") {
    
            if (!empty(
$_POST['username']) && !empty($_POST['password'])) { 
        
            
$str_username $_POST['username'];
            
$str_password $_POST['username'];
            
            
$q mysql_query("SELECT * FROM users WHERE username='$str_username' AND password='$str_password' "); 
            
                if (
mysql_num_rows($q) == 0) {
                    
                    
$_SESSION['username'] = "";
                    echo 
"שם משתמש או סיסמה שגויים";
                    
                } else {
                
                    
$_SESSION['username'] = $str_username;
                    echo 
"ההתחברות בוצעה בהצלחה";
                
                }
                
            } else {
            
                echo 
"חובה למלא שם משתמש וסיסמה!";
            
            }
        
    }


?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html dir="rtl">

<head>
    <meta content="text/html; charset=windows-1255" http-equiv="Content-Type">
    <title>כניסה למערכת</title>
    <link rel="stylesheet" type="text/css" href="style.css"> 
</head>
<body>
<?

    
if ($_SESSION['username'] == "") {

?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?do=login" name="formLogin">
    שם משתמש: <input type="text" name="username">
    סיסמה: <input type="password" name="password">
    <input type="submit" name="send" value="התחבר">
</form>

<?

    
} else {

?>

    <div dir="rtl">
        שלום <? echo $_SESSION['username']; ?>
    </div>

<?

    
}

?>
</body>
</html>


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

orelcn 13-05-11 10:45

על איזה שרת אתה מאחסן?

NoBoDy 13-05-11 10:49

ניסיתי על 2 שרתים,
אחד מהם זה freehost.co.il
והשני:
gfahost.com

orelcn 13-05-11 11:01

טוב ניסיתי להריץ את זה על השרת WINDOWS שלי והכל עובד חלק
וגם בחשבון שלי בfreehost זה גם פועל...

NoBoDy 13-05-11 11:02

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

orelcn 13-05-11 11:06

בקוד האחרון שכתבתי לך

NoBoDy 13-05-11 11:19

ציטוט:

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

יש לך בעיות בקוד ההוא, אתה יכול לשלוח לי שוב את הקוד? שהשתמשת בו?

עשיתי עוד קוד פשוט:

PHP קוד:

<?php

session_start
();

if (
$_SESSION["name"] == "nir"){
echo 
"hello";
}else{
if (isset(
$_POST["send"])){
$_SESSION["name"] = $_POST["name"];
echo 
$_SESSION["name"];
}
?>

<form action="" method="post">
<input type="text" name="name" />
<input type="submit" name="send" />
</form>
<?php
}
?>

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

ועכשיו אפילו בדקתי את הקוד מ http://php.eitan.ac.il/main.php?id=00169
על האחסון, וגם הוא אותו דבר, לא עובד ה session, כל הזמן כותב שזה הביקור הראשון בדף.

orelcn 13-05-11 13:13

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

NoBoDy 13-05-11 13:30

אבל זה ככה ב 2 שרתים, ניסית להריץ ב freehost?
אם כן אפשר לראות? תתן לי קישור.

orelcn 13-05-11 14:04

יש בעיה אחת שאני רואה שיכולה ליקרות... אחרי שאתה נגיד רושם nir בשם ואז אמור להופיע hello תנסה לרענן את הדף וליראות אם זה מסתדר

הנה לינק לשרת שלי עם הקובץ תירשום nir ותראה שהכל עובד
http://orel-il.net/sess_test.php

NoBoDy 13-05-11 14:17

אצלך זה עובד,
אני עושה רענן אצלי וזה לא עובד, מה הקוד שהשתמשת בו?
האתר הזה מאוחסן בכלל ב freehost?

orelcn 13-05-11 14:20

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

הנה הקוד
PHP קוד:

<?php

session_start
();

    if (
$_SESSION["name"] == "nir") {

        echo 
"hello";
        
    } else {

        if (isset(
$_POST["send"])) {

            
$_SESSION["name"] = $_POST["name"];
            
header'Location: ' $_SERVER['PHP_SELF'] ) ;
            
        }
        
?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html dir="rtl">

<head>
    <meta content="text/html; charset=windows-1255" http-equiv="Content-Type">
    <title>PHP :: Session - TEST</title>
</head>

<body>

<form action="<?echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="name" >
<input type="submit" name="send" value="אישור">
</form>

</body>

</html>

<?php
}
?>


NoBoDy 13-05-11 14:22

אוקי המערכת עובדת לי פתאום ב freehost,
אני לא יודע מה לגבי השני.
אבל יש לי עכשיו בעיה.

PHP קוד:

Warningsession_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at /home/nbprojects/domains/nbprojects.freehost.co.il/public_html/projects/index.php:1in /home/nbprojects/domains/nbprojects.freehost.co.il/public_html/projects/index.php on line 2 

בשורה הזאתי ה session_start() כתוב, לא הבנתי מה הבעיה

orelcn 13-05-11 14:25

תשמע אחי הייתי ממליץ לך לרדת משרתי איחסון חינמיים ואם בכל זאת אתה רוצה רק חינמי אז יש אחד שעליו תמיד הייתי מפתח והוא תמיד עבד לי
זה הכתובת שלו http://www.zymic.com/

NoBoDy 13-05-11 14:28

אוקי,
ועכשיו יש לי בעיה חדשה
PHP קוד:

Warningsession_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at /home/nbprojects/domains/nbprojects.freehost.co.il/public_html/projects/index.php:1in /home/nbprojects/domains/nbprojects.freehost.co.il/public_html/projects/index.php on line 2 

בשורה הזאתי ה session_start() כתוב, לא הבנתי מה הבעיה.

ויש לי מאסטר ריסיילר, רק חבל שהוא cpanel ולא da

orelcn 13-05-11 14:31

cpanel הרבה יותר טוב מDA תאמין לי...
אתה אולי כותב מידע לתוך SESSION לפני שאתה שולח אותו

NoBoDy 13-05-11 14:32

כרגע יש לי דף אחד, ועוד דף התנתקות, אבל הבעיה היא בדף הראשי, הוא כותב שיש בעיה אם השורה השנייה ששם כתוב ה session_start()

PHP קוד:

<?php
session_start
();


    
mysql_connect("localhost","nbprojects_mem","K7NmLuH9") or die("mysql_error");
    
mysql_select_db("nbprojects_mem") or die("mysql_error");
    
    
    
$username $_SESSION["username"];
    
$username $_SESSION["password"];
    
$q mysql_query("SELECT * FROM users WHERE username = '".$_SESSION["username"]."' AND password = '".$_SESSION["password"]."'");
    
    if (
mysql_num_rows($q) == 0){
    
    if (isset(
$_POST["send"])){
        if (!empty(
$_POST["username"]) && !empty($_POST["password"])){
            
$username $_POST["username"];
            
$password $_POST["password"];
            
$q mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
                if (
mysql_num_rows($q) > 0){
                echo 
"יש את השם";
                
$_SESSION["username"] = $username;
                
$_SESSION["password"] = $password;
                }else{
                    echo 
"שם משתמש או סיסמה אינם נכונים";
                }
            }else{
                echo 
"יש למלות את כל השדות";
            }
        }
?>

<!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" xml:lang="he" lang="he" dir="rtl">
    <head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf=8" />
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <form action="" method="post">
        שם משתמש: <input type="text" name="username" />
        סיסמה: <input type="text" name="password" />
        <input type="submit" name="send" value="התחבר" />
        </form>
    <?php
        
}else{
        
?>
            <div align="right" dir="rtl">
                שלום
            </div>
        <?php
        
}
        
?>
    </body>
</html>


xxxmagic 13-05-11 14:37

הצלחת לפתור את זה? יש לי בעיה דומה

NoBoDy 13-05-11 14:40

ציטוט:

נכתב במקור על ידי xxxmagic (פרסם 804234)
הצלחת לפתור את זה? יש לי בעיה דומה

בערך, אני עדיין מחכה לתשובה לתגובה הקודמת שלי, אבקש שלא תגיב פה.

orelcn 13-05-11 14:41

אהה יש מצב הבנתי מה קורה כאן... תשים לב בשורה שאתה שואב מידע מהטבלה בSQL אתה משתמש שמה בפרטים של SESSION שלא תמיד קיימים...
תיצור קודם בדיקה שבודקת שקיים ביכלל SESSION עם המידע שאתה מחפש ואם כן אז תכניס אותו למשתנה ואז תנסה לשלוף אותו מהSQL

תנסה להריץ את הקוד שכתבתי לך אז עם כל התיקונים ותגיד לי אם גם בו הוא עושה לך את השגיאה הזאת

NoBoDy 13-05-11 14:43

ציטוט:

נכתב במקור על ידי orelcn (פרסם 804237)
אהה יש מצב הבנתי מה קורה כאן... תשים לב בשורה שאתה שואב מידע מהטבלה בSQL אתה משתמש שמה בפרטים של SESSION שלא תמיד קיימים...
תיצור קודם בדיקה שבודקת שקיים ביכלל SESSION עם המידע שאתה מחפש ואם כן אז תכניס אותו למשתנה ואז תנסה לשלוף אותו מהSQL

תנסה להריץ את הקוד שכתבתי לך אז עם כל התיקונים ותגיד לי אם גם בו הוא עושה לך את השגיאה הזאת

אני אנסה לבד ואז יכתוב לך אם עובד, תכנס כל איזה 5 דקות כדי לראות אם יש עריכה

orelcn 13-05-11 14:46

ציטוט:

נכתב במקור על ידי nirbe (פרסם 804238)
אני אנסה לבד ואז יכתוב לך אם עובד, תכנס כל איזה 5 דקות כדי לראות אם יש עריכה

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

NoBoDy 13-05-11 14:51

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


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

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