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

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

-VladK- 19-05-06 06:42

בעיה בקובץ התחברות
 
שלום.
כתבתי קובץ התחברות ...נגיד ואני רוצה להתחבר אני כותב למשל בשם משתמש vladie בסיסמה: 1234 ולוחץ להתחבר...אני מועבר לעמוד שאני צריך להיות מועבר...עשיתי ככה שאחרי שמתחברים הדפדפן יוצר עוגיות וזה...קיצור עשיתי שאם העוגיות כבר קיימות אז שיעביר אותי לעמוד INDEX אוטומתית...אבל...הבעיה היא שהוא לא בודק אם העוגיות קימות |Stare| הנה הקובץ:
PHP קוד:

<?php
ob_start
();
require 
'userfunc.php';
if (
User()) {
    
header("Location:index.php");
}
if(isset(
$_POST['submit'])) {
    require 
'db.php';
    
extract($_POST);
    
$check mysql_query("SELECT aPassword FROM Users WHERE aUsername='$Username'") or die(mysql_error());
    if(
mysql_num_rows($check) == '0') {
        echo 
"שם המשתמש $Username אינו קיים!";
        
form();
    }else {
        
$userres mysql_fetch_assoc($check);
        
extract($userres);
        if (
$aPassword == md5($Password)) {
            
setcookie("User",$Username,time()+3600);
            
header("Location:index.php");
        } else {
            echo 
"הסיסמה שגויה!";
            
form();
        }
    }
}else {
    
form();
}
function 
form()
{
    echo 
"<form method=\"post\">";
    echo 
"<table border=\"0\">";
    echo 
"<tr><td>שם משתמש:</td><td><input type=\"text\" name=\"Username\" /></td></tr>";
    echo 
"<tr><td>סיסמה:</td><td><input type=\"password\" name=\"Password\" /></td></tr>";
    echo 
"<tr><td><input type=\"submit\" value=\"התחבר\" name=\"submit\" /></td></tr>";
    echo 
"</table>";
    echo 
"</form>";
}
ob_end_flush();
?>

והנה הקובץ 'userfunc.php'
PHP קוד:

<?php

function User()
{
    if(isset(
$_COOKIE['User'])) {
        return 
1;
    } else {
        return 
0;
    }
}
?>

תודה רבה לכל העוזרים

adiga000 19-05-06 08:53

מכיוןן שבפונקציה צריך לאמר בסגריים בשם איפה משתנים \ דברים אתה מכניס..

תנסה את זה
ציטוט:


<?php

function User($_COOKIE['User'])
{
if(isset($_COOKIE['User'])) {
return 1;
} else {
return 0;
}
}
?>


-VladK- 19-05-06 11:14

תגיד...מאחר והשם שם הפונקציה עכשיו זה User($_COOKIE['User']) אני צריך לשנות את השם גם בקובץ ההתחברות עצמו?

עריכה:
העלתי את הקובץ...הוא היה טיפה פגום תיקנתי קיצור עכשיו הוא נותן לי את השגיאה הזאת:
Warning: Missing argument 1 for user() in /home/afrsek/domains/afrsek.wisetp.com/public_html/news/Admin/userfunc.php on line 3

הנה הקובץ:
PHP קוד:

<?php 
$Cookie 
$_COOKIE['User'];
function 
User($Cookie

    if(isset(
$Cookie)) { 
        return 
1
    } else { 
        return 
0
    } 

?>


BlueNosE 19-05-06 12:47

PHP קוד:

<?php 
$Cookie 
$_COOKIE['User'];
function 
User() 

global 
$Cookie;
    if(isset(
$Cookie)) { 
        return 
1
    } else { 
        return 
0
    } 

?>


-VladK- 19-05-06 13:02

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

MasterNir 19-05-06 13:55

גם מה ש-adiga אמר, וגם מה ש-bluenuse r אמר לא נכון.

המשתנה $_COOKIE הוא "סופר גלובאלי" והוא נגיש מכל מקום בסקריפט, אתה לא צריך להגדיר אותו ב-global ובטח שלא להעביר אותו דרך המשתנים בפונקציה כמו ש-adiga אמר, הוא נגיש מכל מקום בסקריפט שלך.

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

-VladK- 19-05-06 14:08

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

eXtaZa 19-05-06 17:05

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

-VladK- 19-05-06 17:55

לא ברור שאני לא מוחק!...ככל הנראה זה בעיה בקוד ...יודע מה? אני עכשיו ימחוק עוגיות ונראה אם זה יצליח לי...

eXtaZa 19-05-06 17:56

חח איזה מצחיק אתה...

-VladK- 19-05-06 18:03

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

האם משהו יכול להגיד לי לפחות מה הבעיה עם הקוד הזה שהוא לא מעביר אותי לINDEX אם העוגיות כבר קימות?

eXtaZa 19-05-06 18:06

ניסית להתחבר עוד פעם אחרי שמחקת את העוגייה?

-VladK- 19-05-06 18:10

כן ...אחרי שהתחברתי חזרתי לעמוד רעננתי והוא לא העביר אותי לשום מקום :(

eXtaZa 19-05-06 18:11

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

-VladK- 19-05-06 18:16

קובץ ההתחברות:
PHP קוד:

<?php
ob_start
();
require 
'userfunc.php';
if (
User()) {
    
header("Location:index.php");
}
if(isset(
$_POST['submit'])) {
    require 
'db.php';
    
extract($_POST);
    
$check mysql_query("SELECT aPassword FROM Users WHERE aUsername='$Username'") or die(mysql_error());
    if(
mysql_num_rows($check) == '0') {
        echo 
"שם המשתמש $Username אינו קיים!";
        
form();
    }else {
        
$userres mysql_fetch_assoc($check);
        
extract($userres);
        if (
$aPassword == md5($Password)) {
            
setcookie("User",$Username,time()+3600);
            
header("Location:index.php");
        } else {
            echo 
"הסיסמה שגויה!";
            
form();
        }
    }
}else {
    
form();
}
function 
form()
{
    echo 
"<form method=\"post\">";
    echo 
"<table border=\"0\">";
    echo 
"<tr><td>שם משתמש:</td><td><input type=\"text\" name=\"Username\" /></td></tr>";
    echo 
"<tr><td>סיסמה:</td><td><input type=\"password\" name=\"Password\" /></td></tr>";
    echo 
"<tr><td><input type=\"submit\" value=\"התחבר\" name=\"submit\" /></td></tr>";
    echo 
"</table>";
    echo 
"</form>";
}
ob_end_flush();
?>

והקובץ userfunc.php
PHP קוד:

<?php
Error_Reporting 
(E_ALL);
function 
User()
{
    if(isset(
$_COOKIE['User'])) {
        return 
1;
    } else {
        return 
0;
    }
}
?>


eXtaZa 19-05-06 18:18

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

-VladK- 19-05-06 18:21

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

eXtaZa 19-05-06 18:22

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

-VladK- 19-05-06 18:35

כן...לצערי הרבה

ali_napso 19-05-06 18:40

תנסה למעלה
if (User==1)
לא מה שכתוב שמה

eXtaZa 19-05-06 18:42

תעשה אחרי ה header שלך, שורה מתחת ותרשום :
exit();

eXtaZa 19-05-06 18:45

ציטוט:

נכתב במקור על ידי ali_napso
תנסה למעלה
if (User==1)
לא מה שכתוב שמה

גם בלי זה זה עובד

-VladK- 20-05-06 05:20

ציטוט:

נכתב במקור על ידי eXtaZa
תעשה אחרי ה header שלך, שורה מתחת ותרשום :
exit();

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

עריכה:
ייייש איזה כיף :) חחחחח מסתבר שסך הכל התבלבלתי בין 1 ל-0 XD
לפני:
PHP קוד:

<?php
function User()
{
    if(isset(
$_COOKIE['User'])) {
        return 
1;
    } else {
        return 
0;
    }
}
?>

ואחרי:
PHP קוד:

<?php
function User()
{
    if(isset(
$_COOKIE['User'])) {
        return 
0;
    } else {
        return 
1;
    }
}
?>



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

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