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

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

EBSites 30-12-15 19:47

עזרה | התחברות עם Md5 - לא עובד!
 
אני נתקל בבעיה, לא מתאפשר לי להתחבר למערכת עם MD5.
תודה לעוזרים.


PHP קוד:

<?php
                
if(isset($_POST['tmp']) && $_POST['tmp']=='login'){
                    unset(
$_POST['tmp']);
                    
$query    "SELECT * FROM users";
                    
$result    mysql_query($query) or die('Query failed: '.mysql_error());
                    
$check 1;
                    while(
$row mysql_fetch_array($result)){
                        if(!
strcmp($_POST['user'],$row['username']) && !md5($_POST['pass'],$row['password'])){
                            
$_SESSION['logged']=$_POST['user'];

                            
$pass md5($_POST['password']);

                            
$_SESSION['nnwriter']=$row['namewriter'];
                            
$_SESSION['nnid']=$row['id'];
                            echo 
"";
                            
$check 0;    
                            break;
                        }
                    }
                    if(
$check)
            
?>
<font style='font-size:17px;color:#FF0000;'>שם משתמש או סיסמא שגויים!</font>
<br /><br />
            <?php
                
}else{
}
?>
            <form name="login" method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
                <input type="hidden" name="tmp" value="login" />
                <table width="350" cellpadding="0" cellspacing="0">
                    <tr>
                        <td><b>שם משתמש :</b></td>
                        <td><input class="panel" type="text" name="user" /></td>
                    </tr>
                    <tr>
                        <td><b>סיסמא :</b></td>
                        <td><input class="panel" type="password" name="pass" /></td>
                    </tr>
                    <tr>
                        <td><br></td>
                        <td colspan="2"><br><input class="submitpanel" type="submit" value='התחברות' /></td>
                    </tr>
                </table>
            </form>


Jonathan Zeierman 01-01-16 23:31

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

session_start(); 


BarSpecial 02-01-16 17:04

למה לרוץ על כל המשתמשים במסד ולא להשתמש ב-WHERE?

PHP קוד:

$query "SELECT * FROM `users` WHERE `username` = {$_POST['username']} AND `password` = md5({$_POST['pass']})" 

* שים לב שלא ביצעתי escaping למשתנים - צריך לבצע (או להשתמש בPDO עם prepare statement)

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

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

!md5($_POST['pass'],$row['password']) 

צריך להחליף ל
PHP קוד:

md5($_POST['pass']) != $row['password'


EBSites 03-01-16 07:15

בוקר טוב בר,

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

BarSpecial 03-01-16 11:21

איך לעשות את..מה?

EBSites 04-01-16 07:18

PHP קוד:

 $query "SELECT * FROM `users` WHERE `username` = {$_POST['username']} AND `password` = md5({$_POST['pass']})" 

לגבי זה.

Makeapp 04-01-16 23:14

ציטוט:

נכתב במקור על ידי EBSites (פרסם 898812)
PHP קוד:

 $query "SELECT * FROM `users` WHERE `username` = {$_POST['username']} AND `password` = md5({$_POST['pass']})" 

לגבי זה.

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

בהצלחה :)

אבי בר 04-01-16 23:26

ציטוט:

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

בהצלחה :)

כל הקוד הזה נורא בסיסי ולא מומלץ להשתמש בו בשום פנים ואופן :)

אני לא יודע מאיפה להתחיל mysql הישן, מהשימוש בmd5 ל"הצפנת" הסיסמא, מהספגטי קוד

הקוד הזה כאילו יצא משנת 2003

EBSites 07-01-16 09:55

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

אבי בר 07-01-16 10:20

ציטוט:

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

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

אם אין לך את הידע הנדרש לעשות מערכת מאובטחת באמת(לרובנו אין) תשתמש בפריימוורקים קיימים נגיד laravel, symfony, zend וכו' .

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

בקשר לשימוש בmysql תמיד תעבוד מול האתר של php אם היית עושה את זה הייתה מגלה שהפונקציה deprecated ממזמן http://php.net/manual/en/function.mysql-query.php וכבר לא בשימוש בphp7


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

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