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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 12-01-12, 06:57   # 1
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 33
הודעות: 391

trupix לא מחובר  

עזרה עם לולאה

הי,

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

להלן הקוד שלי בנתיים, עזרה תועיל

PHP קוד:
// אלגוריתם לקוד ראנדומלי, בתוך פונקציה 

function createRandomPassword() {
    
$chars "abcdefghijkmnopqrstuvwxyz023456789";
    
srand((double)microtime()*1000000);
    
$i 0;
    
$pass '' ;
    while (
$i <= 7) {
        
$num rand() % 33;
        
$tmp substr($chars$num1);
        
$pass $pass $tmp;
        
$i++;
    }
    return 
$pass;
}

$code createRandomPassword(); // קבלת הערך שמחזירה הפונקציה

//אחרי יצירת הקוד, בדוק אם הוא קיים במסד

include("sql.php");
$check mysql_num_rows mysql_query("SELECT *FROM db WHERE code = '$code'"); 
מכאן אני משער שצריך להוסיף:

PHP קוד:

if ($check == 1/* יש כזה כבר */
{
        
$fnamebydate createRandomPassword();

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


Thanks in Advance לעוזרים ..
__________________
Senior Product Designer & Envato Author
Frontend & Wordpress Developer


Dribbble | ThemeForest
  Reply With Quote
ישן 12-01-12, 07:21   # 2
shushu
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Nov 2009
הודעות: 114

shushu לא מחובר  

PHP קוד:
// אלגוריתם לקוד ראנדומלי, בתוך פונקציה 

function createRandomPassword() {
    
$chars "abcdefghijkmnopqrstuvwxyz023456789";
    
srand((double)microtime()*1000000);
    
$i 0;
    
$pass '' ;
    while (
$i <= 7) {
        
$num rand() % 33;
        
$tmp substr($chars$num1);
        
$pass $pass $tmp;
        
$i++;
    }
    return 
$pass;
}



//אחרי יצירת הקוד, בדוק אם הוא קיים במסד

include("sql.php");

$passExists true// מאתחל משתנה שאומר לנו שכל עוד לא מצאנו סיסמא מתאימה מבחינתנו היא קיימת ונמשיך לבדוק
while(  $passExists ) {
    
$code createRandomPassword(); // קבלת הערך שמחזירה הפונקציה
    // שאילתה שבודקת אם קיים במסד נתונים -שים לב ששיניתי את החלק של num_rows
    
$check mysql_num_rows (mysql_query("SELECT *FROM db WHERE code = '$code'") );
    if( !
$check ) { // אם לא מצאנו במסד נתונים, אין כזאת סיסמא ואנחנו משנים את המשתנה ל-FALSE וכך יוצאים מהלולאה
        
$passExists false;
    }

  Reply With Quote
ישן 12-01-12, 07:55   # 3
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

מה שאתה מתאר כאן מתאים בדיוק למטרה של do..while.

בנוגע לאבטחה של השאילתה אין כאן שום בעיה, לא ניתן לבצע עליה מניפולציות כאלו ואחרות,
מה שכן הייתי ממליץ לך לעשות זה לשנות את השאילתה ולשלוף את כמות השורות עם COUNT(id) + fetch_row ולא כמו שאתה עושה,
זה יהיה יותר יעיל ואמין מאשר מה שעשית + מה שתיקנו אותך.

בנוגע לפונקציה עצמה,
למה אתה מממש את ה- while ככה? בשביל זה יש את for.
כנל לגבי החיבור של הערך בכל ריצה, בשביל זה יש את האופרטור "=.".

Last edited by אדיר; 12-01-12 at 07:58..
  Reply With Quote
ישן 12-01-12, 08:04   # 4
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 33
הודעות: 391

trupix לא מחובר  

הי בוקר טוב!!

shushu רב תודות!

xPerfection מה הכוונה לשלוף את כמות השורות?
כלומר ככה?:

PHP קוד:
$check mysql_num_rows (mysql_query("SELECT COUNT(field) FROM db WHERE code = '$code'") ); 
נ.ב, התוצאה של שימוש בwhile יכולה להאט? או שיש לה חסרון אחר?
__________________
Senior Product Designer & Envato Author
Frontend & Wordpress Developer


Dribbble | ThemeForest

Last edited by trupix; 12-01-12 at 08:06..
  Reply With Quote
ישן 12-01-12, 08:09   # 5
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

אתה לא מריץ mysql_num_rows כשאתה שולף ככה (אפשרי אבל מיותר),
הפונקציה הזאת מחזירה לך את כמות השורות שחזרו אז אתה לוקח ממנה את המידע באמצעות fetch_row\fetch_assoc.

כמו כן הייתי ממליץ להוסיף אינדקס מסוג UNIQUE לשדה הזה,
יתן שיפור הן ברמת האבטחה ויבטיח ייחודיות של הערך והן ברמת היעילות ויעזור לקצר את זמן הריצה של השאילתה בתיאוריה.
  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. הזמן כעת הוא 19:38.

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