לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 20-10-2005, 14:14
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
עזרה במערכת login (לא רציתי להקפיץ אשכול ישן)

אוקי.. הנה מה שהכנתי
קוד PHP:
<?php
setcookie
("claint",$_POST['claint']);
setcookie("pass",$_POST['pass']); //cookies sets
$pass_s=sha1($_POST['pass']);
$claint_s=sha1($_POST['claint']);
if (!isset(
$_POST['cookie']))
{
   
setcookie("claint",$_POST['claint'],time()-1); //check if user wont to use cookies
   
setcookie("pass",$_POST['pass'],time()-1);
}
$link=mysql_connect('localhost','root','070794')or   die("Eror!"); //connect to mysql or eror
mysql_select_db('agzoz',$link); //select my database
$check="NULL";
 
$check=mysql_query("SELECT * FROM claints WHERE claint==".$claint_s."");  //claint select
$check_re=mysql_fetch_array($check); //check the claint
mysql_free_result($check);
$acces="0";
foreach (
$check_re as $value//loop for all the claints to check the claint
{
    if (
$claint_s==$check_re['claint'])
    {
        
$acces="1";
    }
}
if (
$acces=="0")
{
    
setcookie("claint",$_POST['claint'],time()-1);  //delate cookies
    
setcookie("pass",$_POST['pass'],time()-1);
    echo 
"$acces \n";
    die(
"the claint is incorecct");
}
elseif (
$acces=="1")
{
    
$pass="NULL";
    
$pass=mysql_query("SELECT * FROM claints WHERE pass==".$pass_s."");
    
$pass_re=mysql_fetch_array($pass); //check the pass
    
mysql_free_result($pass);
    foreach (
$pass_re as $value)
    {  
//loop for all the pass to check the pass
        
if ($pass_s==$pass_re['pass'])
            {
                
$acces="2";
            }
    }
}
if (
$acces!="2")
{
    
setcookie("claint",$_POST['claint'],time()-1);  //delate cookies
    
setcookie("pass",$_POST['pass'],time()-1);
    echo 
"$acces \n";
    die(
"the passwords is incorecct");
}
echo 
"Hello ".$_POST['claint'].", all work good";
mysql_close($link);
 
?>

ואני מקבל את הפלט הזה- 0 the claint is incorecct
השם משתמש והסיסמא נכונים... הם שמורים ב-database כ-sha1
מה הסיבה שזה לא הולך לי?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 20-10-2005, 16:44
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 1 שנכתבה על ידי tnadav1 שמתחילה ב "עזרה במערכת login (לא רציתי להקפיץ אשכול ישן)"

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

1. error ולא eror.

2. מה משמעות הקוד: $check="NULL"; ?
אם מדובר ב-NULL, זה צריך להיות ללא מרכאות, כי במקרה כמו עכשיו זה פשוט מחרוזת, וגם אם אתה באמת רוצה מחרוזת, זה פשוט מיותר, מה הקטע של ההשמה הזאת כשבפקודה הבאה אתה במילא מציב ערך שונה במשתנה ?!

3. אתה מריץ שאילתה: mysql_query("SELECT * FROM claints WHERE claint==".$claint_s."")
למה משמש שני המרכאות (כפולות) האחרונים ? מיותר ביותר ! תןריד את המרכאות וכמובן גם את הנקודה.

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

5. $check_re=mysql_fetch_array($check) - אין צורך במשתנה חדש, אתה במילא כבר לא צריך את המשתנה check, ה סתם בזבוז משאבים ליצור משתנים חדשים.

6. הקוד mysql_free_result($check), מיותר לחלוטין, בעוד כמה מיקרוני שניה המשאב ישתחרר מעצמו., מלבד במקרים נדירים מאד אין צורך לשחרר משאבים.

7. $acces - כנראה התכוונת ל-access.

עד כאן קראתי לבינתיים, נמשיך בעז"ה בפעם אחרת.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 20-10-2005, 17:26
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 3 שנכתבה על ידי tnadav1 שמתחילה ב "והדברים הקטנים האלה גורמים..."

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

תשיב לב לדברים הבאים:
אמנם כמעט כל הקוד הוא PHP, אך המחרוזת שהפונקציה mysql_query מקבלת, היא מחרוזת שנשלחת למסד נתונים, וצריכה לענות על התחביר של SQL, ו-SQL זה לא PHP.
ב-PHP ההבדל בין 'השמה' ל'השוואה הוא מספר הפעמים של סימן השוויון (פעם אחת, פעמיים או 3)', וב-SQL משתמשים תמיד בפעם אחת, כיון שמבנה השאילתה קובע אם מדובר בהשמה או בהשוואה. ובמקרה שלך ברור שמדובר בהשוואה, כיון שהפקודה נמצאת ב-WHERE.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 21-10-2005, 01:01
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 6 שנכתבה על ידי tnadav1 שמתחילה ב "אז לא הבנתי-מה הבעיה במרכאות?"

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

1. הקוד כפי שהוא כתוב כרגע מכיל פתיחה וסגירה של מרכאות ללא תוכן.
נסה לחשוב מה בדיוק יוצא לך מהמרכאות האלו, הרי לא הוספת שם תוכן, המרכאות לא משנות כלל את ערך המשתנה, גם אם מדובר בעשרות כאלו. לדוגמה:
הפעולה של הקוד הנוכחי שלך שקולה לקוד הבא:
קוד PHP:
 $check=mysql_query("SELECT * FROM claints WHERE claint=".$claint_s.""."".""."".""."".""."".""."".""."".""."");  //claint select 
כיון שאין כלום במרכאות, הם פשוט לא מוסיפות כלום, רק תווים לסכום התווים שבקוד מקור...

2. הפונקציה מעבירה את המחרוזת למסד נתונים כשאילתה, נסה לשים לב איך היתה נראית השאילתה כשהוא ללא קוד ה-php.
לדוגמה, אם ערך המשתנה $claint_s הוא "abcd" (ללא המרכאות), השאילתה תראה כך:
קוד:
SELECT * FROM claints WHERE claint=abcd

תשים לב שאין מרכאות מסביב לטקסט שאתה רוצה להשוות, והיות וזה לא פקודה ולא שם של טבלה או שדה, אלא מחרוזת, אתה צריך לתחום את זה במרכאות, כדי שזה יצא כך:
קוד:
SELECT * FROM claints WHERE claint='abcd'


ובתחילה לפחות זה לא היה כך...
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 21-10-2005, 00:53
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
בתגובה להודעה מספר 1 שנכתבה על ידי tnadav1 שמתחילה ב "עזרה במערכת login (לא רציתי להקפיץ אשכול ישן)"

מצטער שהייתי צריך לעשות דאבל-פוסט אבל אי-אפשר לערוך עכשיו (באמת ביאסה אותי ההגבלה הזאת)
שניתי את הלוגיקה של בדיקת שם המשתמש והסיסמא למשהו קצת יותר פשוט וקל
קוד PHP:
<?php
setcookie
("claint",$_POST['claint']);
setcookie("pass",$_POST['pass']); //cookies sets
$pass_s=sha1($_POST['pass']);
$claint_s=sha1($_POST['claint']);
if (!isset(
$_POST['cookie']))
{
   
setcookie("claint",$_POST['claint'],time()-1); //check if user wont to use cookies
   
setcookie("pass",$_POST['pass'],time()-1);
}
$link=mysql_connect('localhost','root','070794')or   die("Error!"); //connect to mysql or eror
mysql_select_db('agzoz',$link); //select my database
$check=mysql_query("SELECT * FROM claints WHERE claint='".$claint_s."'");  //claint select
$access="0";
if (
mysql_num_rows($check) > 0)
{
   
$access="1";
}
if (
$access=="0")
{
    
setcookie("claint",$_POST['claint'],time()-1);  //delate cookies
    
setcookie("pass",$_POST['pass'],time()-1);
    die(
"the claint is incorecct");
}
elseif (
$access=="1")
{
   
$pass=mysql_query("SELECT * FROM claints WHERE pass='".$pass_s."'");  //claint select
   
if (mysql_num_rows($pass) > 0)
  {
      
$access="2";
   }
}
if (
$access!="2")
{
    
setcookie("claint",$_POST['claint'],time()-1);  //delate cookies
    
setcookie("pass",$_POST['pass'],time()-1);
    echo 
"$acces \n";
    die(
"the password is incorecct");
}
echo 
"Hello ".$_POST['claint'].", all work good";
mysql_close($link);
 
?>

עכשיו יש לי שתי שאלות
1) כתבתי בהוגעה הקודמת
2) זה מצפין גם את שם המשתמש וגם את הסיסמא,צריך להשתמש ב- ?mysql_escape_string
כי זה נראה ככה-aSdjkfj1201347ASfkndsgksn0qlewjrjkd
לא נמצא בוא תוים כמו מרכאות וכאלה...
עריכה
שאלתי עוד שאלה,כואב לכם לענות?

נערך לאחרונה ע"י tnadav1 בתאריך 21-10-2005 בשעה 01:08.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 21-10-2005, 13:54
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
בתגובה להודעה מספר 9 שנכתבה על ידי ישראל K שמתחילה ב "אין צורך להשתמש..."

זהו,פתרתי את הבעיה לבד... הייתה סתם טעות דפוקה,כתבתי על המשתנה $access אבל לא הייה אותו
על אותו שם... הנה הקוד שעובד
קוד PHP:
<?php
//------------------------------------------------
//this program is programed by nadav tenenbaum
//verzion 1.3
//------------------------------------------------
setcookie("claint",$_POST['claint']);
setcookie("pass",$_POST['pass']); //cookies sets
$pass_s=sha1($_POST['pass']);
$claint_s=sha1($_POST['claint']);
if (!isset(
$_POST['cookie']))
{
   
setcookie("claint",$_POST['claint'],time()-1); //check if user wont to use cookies
   
setcookie("pass",$_POST['pass'],time()-1);
}
$link=mysql_connect('localhost','root','070794')or   die("Error!"); //connect to mysql or error
mysql_select_db('agzoz',$link); //select my database
$check=mysql_query("SELECT * FROM claints WHERE claint='".$claint_s."'");  //claint select
$access="0";
if (
mysql_num_rows($check) > 0)
{
   
//make shour thet claint is corecct
   
$access="1";
}
//now we check this
if ($access=="0")
{
    
setcookie("claint",$_POST['claint'],time()-1);  //delate cookies
    
setcookie("pass",$_POST['pass'],time()-1);
    die(
"the claint is incorecct");
}
//well herre all work fine
elseif ($access=="1")
{
   
$pass=mysql_query("SELECT * FROM claints WHERE pass='".$pass_s."'");  //claint select
   
if (mysql_num_rows($pass) > 0)
  {
      
//make shour thet the pass is correcct
      
$access="2";
   }
}
//if mysql do not find the pass rows
if ($access!="2")
{
    
setcookie("claint",$_POST['claint'],time()-1);  //delate cookies
    
setcookie("pass",$_POST['pass'],time()-1);
    echo 
"$acces \n";
    die(
"the password is incorecct");
}
//if all work fine
echo "Hello ".$_POST['claint'].", all work good";
mysql_close($link);
 
?>
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 22:22

הדף נוצר ב 0.04 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר