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

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

Maor|Short.co.il 29-06-08 11:46

סקריפט שפועל רק במוזילה - PHP + COOKIES
 
אהלן חברים, אשמח לקבל קצת עזרה.

אני מריץ את הסקריפט הזה באתר שאני בונה, אבל משום מה במוזילה הוא פועל 100% ובאקספלורר הוא לא מציג כלום. בעיקרון הוא אמור לבדוק אם יש למשתמש קוקי - ואם יש, להציג לו את התוכן במידה והסיסמא תואמת. במידה שאין לו קוקי, להציג לו תוכן אחר.

(הסרתי ממנו את התוכן שאמור להיות מוצג)

PHP קוד:

<?
    $conn 
mysql_connect($dbhost$dbuser$dbpass) or die ('תקלת בסיס נתונים כללית באתר, אנו מצטערים על אי הנוחות הזמנית.');
    
mysql_select_db($dbname);

    if (isset(
$_COOKIE['ID_sderothash'])) {

        
$username $_COOKIE['ID_sderothash'];
        
$pass $_COOKIE['Key_sderothash'];
        
$check mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());

        while(
$info mysql_fetch_array$check ))
        {

            if (
$pass != $info['password']) {
                echo 
"pass not valid";

            } 
            else { 
                echo 
"user ok";
            }
        }
    }
    else {
                echo 
"guest";
    }
?>

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

DavidBD 29-06-08 12:59

אולי בIE הקוקי לא נוצרה? (אולי יצרת אותה רקב FF )

ofekns 29-06-08 13:18

ציטוט:

נכתב במקור על ידי DavidBD (פרסם 645997)
אולי בIE הקוקי לא נוצרה? (אולי יצרת אותה רקב FF )

איך שקראתי את האשכול שלו גם אני חשבתי ככה =] (עלה לי הרעיון)
לפותח האשכול - תבדוק את הענין....=]
אם זה לא מה שאמרנו אבל מצאת דרך אחרת אתה מוזמן לפרסם אותה פה שלמשתמשים אחרים שמחפשים במיקרה גם את הפיתרון הזה או רוצים להשכיל וללמוד יוכלו לקרוא ולדעת לאתר את הבעיה הזאת עכשיו / בעתיד

בכל מיקרה מהצלחה =] ...

Elad-A 29-06-08 13:32

למה השתמשת ב while ?
תעשה בשאילתה AND `pass` = '$pass'

daMn 29-06-08 14:20

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

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

Kfir.G 29-06-08 18:28

לא מזמן נתקלתי בבעיה דומה עם עוגיות וPHP. אחרי בדיקה מעמיקה גיליתי שהגדרת מיקום העוגיה (path) שונה בIE ובFF מה שגורם לכך שPHP לא יודע שהעוגייה שייכת לחלק הרצוי של האתר שלך. הפתרון שהתמשתי בו הוא פשוט להגדיר את הדרך (path) של העוגיה לדוגמה
PHP קוד:

setcookie("test",0,time()+3600,"/"); 

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

אם אתה צריך עוד עזרה אתה מוזמן לשאול,
כפיר

עריכה:
בהמשך למה שאנשים אחרים הגיבו פה (למרות שזה לא קשור לשאלה לחלוטין) אני ממליץ לך ללמוד מה הפונקציות שאתה משתמש בהן עושות ולא להעתיק קוד מוכן בלי לדעת מה אתה עושה (הקוד שלך מעיד שזה מה שאתה עושה, ראה את התגובה של אלעד). ובכללי כדאי לך מאוד לקרוא על mysql_real_escape_string

Maor|Short.co.il 29-06-08 19:53

היי, תודה על התשובות.

רק ארצה להבהיר כי רק הקטעים שקשורים לעוגיות מועתקים ממדריכים שמצאתי בגוגל על מנת ללמוד, מצטער אם זה הרושם שנוצר, אבל אני ממש לא משתמש בקודים שאני לא מבין ולהיפך, לא הייתי משתמש במשהו שאני לא יודע מה הוא עושה. מבחינת סקריפטינג של מירק, שזה למעשה הבסיס שלי, 90&#37; מהקריאה מבסיס הנתונים נעשית בלולאות ולכן אני רגיל לכך, למרות שאני תמיד שמח להחכים וללמוד משהו חדש :)

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

רק אציין שכשאני יוצר את הקוקי באקספלורר(נכנס לטופס לוגאין) אז התוכן הנכון מופיע, וכשאני עושה LOGOUT אז התוכן נעלם, כביכול - כשאין עוגיה, הוא לא רושם אורח, משתמש מחובר או סיסמא לא נכונה. מצטער אם לא הסברתי עצמי נכון.

התוכן של logout.php:

PHP קוד:

<?php
$past 
time() - 100;
setcookie(ID_sderothashgone$past);
setcookie(Key_sderothashgone$past);
header("Location: index.php");
?>

אני מאוד מודה על התגובות והסבלנות ואשמח לקבל עצות :)

אם מישהו מעוניין לראות: http://a.short.co.il
התחברות: http://a.short.co.il/login.php
התנתקות: http://a.short.co.il/logout.php
שם משתמש: מאור סיסמא: 1234

Maor|Short.co.il 30-06-08 10:17

מצטער על הדאבל פוסט - הבעיה נפתרה ברוך השם ואפשר לנעול.

בקובץ logout.php שיניתי את זמן העוגיה ל: -42000 ולא רשמתי שם לעוגיה, מה שהשמיד אותה.

בקוד הזיהוי השארתי רק:

PHP קוד:

    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('תקלת בסיס נתונים כללית באתר, אנו מצטערים על אי הנוחות הזמנית.');
    mysql_select_db($dbname);

    if (isset($_COOKIE['ID_sderothash'])) {

        $username = $_COOKIE['ID_sderothash'];
        $pass = $_COOKIE['Key_sderothash'];

        $check = mysql_query("SELECT * FROM users WHERE username = '$username' && password = '$pass'")or die(mysql_error());

        mysql_query($check);

        ?>REG USER<? 
    
}

    else {
            
?>GUEST<? 
    
}

תודה לכל מי שעזר :)


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

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