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

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

InetKey.Net 04-05-10 17:24

בעיה עם העוגיות בPHP
 
שלום!
יש לי בעיה עם הקוקיז אשמח עם תעזרו לי.

יש לי דף התחברות, ברגע שאתה מתחבר הקוד הזה פועל:
PHP קוד:

setcookie("powername",$_POST['username'], time()+3600);
setcookie("powerpassword",$_POST['password'], time()+3600); 

אחרי זה זה מעביר אותך לעמוד אינדקס שבודק אם הקוקיז קיימים בעזרת הקוד:
PHP קוד:

if(isset($_COOKIE['powername']) || isset($_COOKIE['powerpassword'])) 

הכל עובד והכל יפה, ברגע שאני רוצה להתנתק אני משתמש בקוד הבא:
PHP קוד:

setcookie("powername","",time()-3600);
setcookie("powerpassword","",time()-3600); 

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

התייעצתי עם החבר הכי טוב שלי (Google) גם באתר של PHP ואני פשוט לא מצליח לסדר את זה.

אשמח עם מישהו יוכל לעזור לי,
תודה רבה!

M.a.T.a.N 04-05-10 18:45

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

$_COOKIE['powername'

ו..
PHP קוד:

$_COOKIE['powerpassword'


InetKey.Net 04-05-10 18:48

ניסיתי אבל זה רושם לי שגיאה
PHP קוד:

Parse errorsyntax errorunexpected T_ENCAPSED_AND_WHITESPACEexpecting T_STRING or T_VARIABLE or T_NUM_STRING 


M.a.T.a.N 04-05-10 18:50

תביא את הקוד אחרי שעשית מה שאמרתי...

InetKey.Net 04-05-10 18:51

PHP קוד:

<?php
        setcookie
("powername""$_COOKIE['powername']" ,time()-3600);
        
setcookie("powerpassword""$_COOKIE['powerpassword']" ,time()-3600);
?>
        <script>
        alert("! ")
        location.replace("../../index.php")
        </script>
        <?
?>


M.a.T.a.N 04-05-10 18:54

כי שמת את המשתנה של הקוקיז בתוך גרשיים...
תשנה לזה:
PHP קוד:

<?php
        setcookie
("powername"$_COOKIE['powername'], time()-3600);
        
setcookie("powerpassword"$_COOKIE['powerpassword'], time()-3600);
?>
        <script>
        alert("! ")
        location.replace("../../index.php")
        </script>
        <?
?>


InetKey.Net 04-05-10 18:55

אוקיי עכשיו זה בסדר אבל עדיין זה לא מתנתק!

אני חוזר דף אחורה וזה עדיין מחובר גם אחרי רענן

M.a.T.a.N 04-05-10 19:00

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

תביא אולי את הקוד עם הIF..שבודק אם התנאי קיים כדי שינתק

InetKey.Net 04-05-10 19:01

זה הקוד כתבתי אותו באשכול
PHP קוד:

if(isset($_COOKIE['powername']) || isset($_COOKIE['powerpassword'])) 


M.a.T.a.N 04-05-10 19:03

ראיתי שכתבת..בגלל זה אמרתי שתביא את כולו גם מה שאחרי הIF

SniR-S 04-05-10 19:04

PHP קוד:

<?php
        setcookie
("powername"NULLtime()-3600);
        
setcookie("powerpassword"NULLtime()-3600);
?>
        <script>
        alert("! ")
        location.replace("../../index.php")
        </script>
        <?
?>

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

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

if(isset($_COOKIE['powername']) || isset($_COOKIE['powerpassword'])) 

מה שאתה רוצה אם אני לא טועה זה שיהיה אם 2 העוגיות נמצאות, רק אז התנאי יתקיים, אז אמור להיות כך:
PHP קוד:

if(isset($_COOKIE['powername']) && isset($_COOKIE['powerpassword'])) 

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

InetKey.Net 04-05-10 19:05

זה הקוד של הדף INDEX בעקרון
PHP קוד:

<?
if(isset($_COOKIE['powername']) || isset($_COOKIE['powerpassword']))
{
?>
פה הולך הקידוד של האתר
<?
}
else {
?>
<script>
alert("!אנא התחבר קודם")
location.replace("../../index.php")
</script>
<?
}
?>


M.a.T.a.N 04-05-10 19:07

תנסה בIF במקום לעשות OR לעשות AND..

InetKey.Net 04-05-10 19:08

במקום || ? OR ולנסות גם AND?

M.a.T.a.N 04-05-10 19:09

לא הבנתי מה אתה שואל..
בכל מקרה התכוונתי שתשנה במקום הסימן || ל &&

ואם גם זה לא יעבוד תן פה קישור לעמוד לבדוק אולי בעיה היא בדפדפן/במחשב שלך

InetKey.Net 04-05-10 19:11

עדיין לא עובד.

תנסה: http://84.229.87.35:3000
שם admin סיסמא admin

תתנתק ותחזור בחזרה לדף תעשה רענן ותראה שזה עדיין מחובר.

M.a.T.a.N 04-05-10 19:12

אתה מעוניין להביא קישור לעמוד?לבדוק אולי הבעיה היא בדפדפן/במשב שלך?

InetKey.Net 04-05-10 19:14

תנסה: http://84.229.87.35:3000
שם admin סיסמא admin

תתנתק ותחזור בחזרה לדף תעשה רענן ותראה שזה עדיין מחובר.

M.a.T.a.N 04-05-10 19:14

עובד מצויין..

InetKey.Net 04-05-10 19:15

מה קורה כשאתה חוזר אחורה? זה רושם לך להתחבר שוב?

M.a.T.a.N 04-05-10 19:16

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

תבדוק אולי בדפדפן שלך בהגדרות לא איפשרת עוגיות או משהו דומה

InetKey.Net 04-05-10 19:17

לא הבנת אותי.
זה מעביר אותך שוב להתחברות. עכשיו תלחץ "אחורה" בדפדפן כדי שיחזור דף תעשה רענן ועדיין אתה נשאר מחובר.

M.a.T.a.N 04-05-10 19:22

אהה הבנתי אותך..צודק..באמת מוזר

אני לא חושב על משהו שיכול לעזור לך =/

SniR-S 04-05-10 19:24

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

InetKey.Net 04-05-10 21:55

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

יש אפשרות לעשות את זה כדי שזה יעבוד?

InetKey.Net 04-05-10 22:02

פטרתי את הבעיה!!!

זה הקוד שעובד:
PHP קוד:

setcookie ("powername"""time()-60*60*24*100"/"); 

הייתי צריך להוסיף "/" בסוף והכל הסתדר!!! הזמן לא חשוב פה!

תודה לכולם!!

Shay Ben Moshe 04-05-10 22:13

לא היה לי כוח לקרוא את הכל אבל זה די ברור.
בהתנקות אתה מעביר את הבנאדם ל../../ משהו זאת אומרת שזה לא באותה תיקייה אלא תת תיקייה. אין לך גישה ישירה משם לאותם cookies.
אתה יכול להעביר בפרמטר הרביעי אם אני לא טועה על איזה סיפריה מדובר. אני ממליץ לך לשים את הספריה הנגישה הנמוכה ביותר אבל לא יותר מזה. משמע אם זה בexample.com/folder1/folder2 לשים את זה ב/folder1/folder2/ ככה שהגישות יהיו במקום הנכון.

InetKey.Net 04-05-10 22:23

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

SniR-S 05-05-10 05:35

כשאתה מכניס עוגיות, יש לך 7 פרמטרים, אתה אמור להתאים את העוגיות לסיפריה בה הם עובדים.
זאת אומרת שאם הכנסת את העוגיות פה example.com/folder1/folder2 אז אתה תציין את הנתיב /folder1/folder2
בנוסף אתה יכול לציין גם דומיין בפרמטר החמישי.
לעוד פרטים: http://php.net/manual/en/function.setcookie.php
יש לך שם הכל מפורט.

InetKey.Net 05-05-10 05:49

במקרה שלי הכתובות (הדומיין \ האייפי) תמיד ישתנו, אז אני מעדיף להשאיר את זה כמו שיש, ה "/" זה בסדר?

SniR-S 05-05-10 18:05

זה בסדר גמור.

Shay Ben Moshe 05-05-10 20:23

זה בסדר. רק לידע כללי מעבר אני ממליץ לך לקרוא בphp.net אודות הפרמטרים של setcookie.

InetKey.Net 06-05-10 08:18

קראתי את זה...הבנתי תודה רבה לכם על העזרה!


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

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