הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 31-12-08, 13:56   # 1
Dodem
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,180

Dodem לא מחובר  

[PHP] תיקון קוד.

שלום לכולם,

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

בנתיים אני עובד על החלק של ההתחברות. יצרתי בעצם את ההתחברות אבל ראיתי שיש הרבה באגים.

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

תודה מראש.

PHP קוד:
<html>
    <head> <title> Connect </title> </head>
    <body> <h1> connect to your editor </h1> 
    <?php
    $connection 
mysql_connect("DBNAME" "USERNAME" "PASSWORD") or die ("couldn't connect to the server");
    
mysql_select_db("DBNAME" $connection ) or die ("couldn't connect to the database");
    
    function 
connect() {
        
$connect = <<<EOF
        <FORM METHOD = "POST" ACTION="">
        <INPUT TYPE="TEXT" NAME="USERNAME"> <br><br>
        <INPUT TYPE="PASSWORD" Name="PASSWORD"> <br><br>
        <INPUT TYPE="SUBMIT" VALUE="התחבר" NAME="SUBMIT">
        </FORM>
        EOF;
    }
    
    if(isset($_POST'['SUBMIT'] {
    
    $q = mysql_query ("SELECT * FROM 'table1' WHERE 'USERNAME' = '
{$_POST['USERNAME']}' AND 'PASSWORD' = '{$_POST['PASSWORD']}' ");
    $r = mysql_num_rows ($q);
    if ($r > 0)
    {
        echo 'you are online, and you can use the editor';
    }
    
    else {
        echo 'bad username or password, please try again';
        connect();
    }
}    
                                             
    ?>
    </body>
    </html>
__________________
רותם
דוא"ל: Rotema7 [at] gmail.com

Last edited by Dodem; 31-12-08 at 13:58..
  Reply With Quote
ישן 31-12-08, 14:11   # 2
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

ה-EOF; צריך להיות בלי רווחים

עריכה:
PHP קוד:
if(isset($_POST'['SUBMIT] { 
??

Last edited by Xinxy; 31-12-08 at 14:17..
  Reply With Quote
ישן 31-12-08, 14:51   # 3
Dodem
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,180

Dodem לא מחובר  

תודה,
אבל עדיין יש בעיה בקובץ. תוכל לראות את זה על השרת.
__________________
רותם
דוא"ל: Rotema7 [at] gmail.com
  Reply With Quote
ישן 31-12-08, 14:56   # 4
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

ציטוט:
נכתב במקור על ידי Dodem צפה בהודעה
תודה,
אבל עדיין יש בעיה בקובץ. תוכל לראות את זה על השרת.
PHP קוד:
<html>
    <head> <title> Connect </title> </head>
    <body> <h1> connect to your editor </h1> 
    <?php
    $connection 
mysql_connect("DBNAME" "USERNAME" "PASSWORD") or die ("couldn't connect to the server");
    
mysql_select_db("DBNAME" $connection ) or die ("couldn't connect to the database");
    
    function 
connect() {
        
$connect = <<<EOF
        <FORM METHOD = "POST" ACTION="">
        <INPUT TYPE="TEXT" NAME="USERNAME"> <br><br>
        <INPUT TYPE="PASSWORD" Name="PASSWORD"> <br><br>
        <INPUT TYPE="SUBMIT" VALUE="התחבר" NAME="SUBMIT">
        </FORM>
EOF;
    }
    
    if(isset(
$_POST['SUBMIT'])) {
    
    
$q mysql_query ("SELECT * FROM 'table1' WHERE 'USERNAME' = '".$_POST['USERNAME']."' AND 'PASSWORD' = '".$_POST['PASSWORD']."'");
    
    
$r mysql_num_rows ($q);
    if (
$r 0)
    {
        echo 
'you are online, and you can use the editor';
    }
    
    else {
        echo 
'bad username or password, please try again';
        
connect();
    }
}    
                                             
    
?>
    </body>
    </html>
  Reply With Quote
ישן 31-12-08, 15:03   # 5
DvirCohen
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Dec 2007
הודעות: 151

DvirCohen לא מחובר  

זה מציג לך בכלל את הטופס?
בפונקציה connect אתה לא עושה return למשתנה connect$ ואז מדפיס את הפונקציה/אתה לא מדפיס את הטופס ישירות מתוך הפונקציה.

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

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

אממ סתם כמה דברים
1. סתם לייעל את הקוד. בשאילתה שלך אתה לא צריך לעשות * בשדות בחירה, מספיק שתבחר שדה אחד, סתם חבל על כל המידע שנשלף, תחשוב שאתה שולח 10 שדות ונכנסים לך 1000 משתמשים, במקום שישלפו 1000 שדות נשלפים 10,000.

2. שוב בשאילתה, עכשיו אתה רק לומד וזה בסדר, אבל אני הייתי מתחיל עם זה כבר עכשיו - תלמד לאבטח את הקלט. עם הקוד הזה אפשר בקלות לעשות SQL INJ.
  Reply With Quote
ישן 31-12-08, 19:32   # 6
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

ציטוט:
נכתב במקור על ידי DvirCohen צפה בהודעה
זה מציג לך בכלל את הטופס?
בפונקציה connect אתה לא עושה return למשתנה connect$ ואז מדפיס את הפונקציה/אתה לא מדפיס את הטופס ישירות מתוך הפונקציה.

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

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

אממ סתם כמה דברים
1. סתם לייעל את הקוד. בשאילתה שלך אתה לא צריך לעשות * בשדות בחירה, מספיק שתבחר שדה אחד, סתם חבל על כל המידע שנשלף, תחשוב שאתה שולח 10 שדות ונכנסים לך 1000 משתמשים, במקום שישלפו 1000 שדות נשלפים 10,000.

2. שוב בשאילתה, עכשיו אתה רק לומד וזה בסדר, אבל אני הייתי מתחיל עם זה כבר עכשיו - תלמד לאבטח את הקלט. עם הקוד הזה אפשר בקלות לעשות SQL INJ.
למה בכלל לשלוף שדות? COUNT(*)
__________________
  Reply With Quote
ישן 31-12-08, 19:31   # 7
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

ציטוט:
<html>
<head> <title> Connect </title> </head>
<body> <h1> connect to your editor </h1>
<?php
$connection = mysql_connect("DBNAME" , "USERNAME" , "PASSWORD") or die ("couldn't connect to the server");
mysql_select_db("DBNAME" , $connection ) or die ("couldn't connect to the database");

function connect() {
return <<<EOF
<FORM METHOD = "POST" ACTION="">
<INPUT TYPE="TEXT" NAME="USERNAME"> <br><br>
<INPUT TYPE="PASSWORD" Name="PASSWORD"> <br><br>
<INPUT TYPE="SUBMIT" VALUE="התחבר" NAME="SUBMIT">
</FORM>
EOF; // dollarconnect is a local variable withing the function connect, this won't get you anything except headaches
}

if(isset($_POST'['SUBMIT'])) { // what about closing the if?

$q = mysql_query ("SELECT * FROM 'table1' WHERE 'USERNAME' = '{$_POST['USERNAME']}' AND 'PASSWORD' = '{$_POST['PASSWORD']}' ");
$r = mysql_num_rows ($q);
if ($r == 1) // if there are couple of users with the same name and password?
{
echo 'you are online, and you can use the editor';
}

else {
echo 'bad username or password, please try again';
echo "<br />" . connect(); // since i changed connect() i should echo the returned value too
}
}

?>
</body>
</html>
have fun pal
__________________
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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