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

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

   
|!|

 
 
כלים לאשכול תצורת הצגה
Prev הודעה קודמת   הודעה הבאה Next
ישן 04-08-09, 22:40   # 2
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

אם אתה רוצה לעשות משתנה מסויים רק מספר, זה לא אפשרי בPHP.
מה שכן, עם PHP 5 אתה יכול לסנן טיפוסים של ארגומנטים שמועברים לפונקציה, זה נקרא Type Hinting. למשל אתה יכול ליצור פונקציה כזו:
קוד:
function setNum(int $value)
{
   global $num ;
   $num = $value ;
}
אם תנסה להעביר לפונקציה ארגומנט שהוא לא מטיפוס מספר שלם (int / integer ), אז PHP יציג שגיאה. דוגמא:
קוד:
setNum("this is a string") // תחזיר שגיאה

$int = 32;
setNum($int) // לא תחזיר שגיאה, כי הארגומנט הוא 32 (טיפוס = מספר שלם = int / integer )
בקשר להגנה נגד הזרקות, הפיתרון הוא מאוד פשוט. לפני שאתה מוציא לפועל את השאילתת SQL שלך, אתה צריך להעביר את השאילתה דרך פונקציה מסויימת שמטפלת בתווים אסורים בתוך השאילתה. ( הפונקציה בסה"כ מוסיפה לוכסן אחורי "\" לפני התו האסור)
דרך נוספת לעשות את זה, זה עם ביטויים רגולרים, אבל אין צורך. בכל מקרה, בPHP לפי מה שאני בדקתי בכמה ממשקים של מסדי נתונים, יש בהם פונקציה שנקראת real_escape_string, למשל, אם אתה משתמש במסד mysql, אתה יכול להשתמש בפונקציה הזאתי
שתטפל בתווים האסורים בשאילתה שלך:
mysql_real_escape_string.

אם אתה רוצה פונקציה שלא דורשת עבודה עם מסד נתונים מסויים, אז קח:
קוד:
  	function real_escape_string( $unescaped_string ) {
  		$prepend_chars = array() ;
  		$prepend_chars["\\\x00"] = "\x00" ;
  		$prepend_chars["\\\n"] = "\n" ;
  		$prepend_chars["\\\r"] = "\r" ;
  		$prepend_chars['\\\''] = "'" ;
  		$prepend_chars["\\\""] = "\"" ;
  		$prepend_chars["\\\x1a"] = "\x1a" ;

  		foreach( $prepend_chars as $key => $value )
  			$unescaped_string = str_replace( $value, $key, $unescaped_string ) ;

  		return $unescaped_string ;
  	}
אם לא הבנת משהו תגיד לי.

Last edited by Shillo; 04-08-09 at 22:43..
  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:19.

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