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

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

SniR-S 28-01-09 18:37

בדיקת נתונים
 
יש לי תיבות טקסט, שאני לא רוצה שישארו ריקות, ובמידה והם יהיו ריקים או לא שווים לערך מסויים
תקפוץ הודעת alert..
"אנא מלאו שם!" / "אנא הכניסו הודעה!" לצורך העניין..
הבעיה היא שיצרתי תנאי else if שבעצם הוא בודק אם הערך של מה שנשלח בטופס הוא ריק או שווה לערכים "שם השולח" / "הודעה" אז הוא מציג את ה alert, אוקי הכל טוב וסבבה
אבל איך שאני מרענן את העמוד ההודעה alert קופצת.. כי היא בודקת את הערכים..

זה הקוד שתבינו על מה אני מדבר
PHP קוד:

else if (!isset($_POST['name']) == "'.$nametext.'" || null) {
    echo 
"<script>alert('אנא מלאו שם!')</script>";
}

else if (!isset(
$_POST['msg']) == "'.$msgtext.'" || null) {
    echo 
"<script>alert('אנא הכניסו הודעה!')</script>";


זה לא טוב בשבילי, אני יכול לבדוק בעצם עם הערך שיש במשתנים של השליחה name ו msg
הם לא ריקים אם אני שם ב value משהו..
אבל אז אנשים יוכלו לשלוח עם ה value שאני שמתי..
ואני לא רוצה את זה.

המטרה שלי היא לחייב משתמשים לרשום שם משתמש + הודעה ושלא יהיו ריקים או שווים ל value שקבעתי להם מראש.

sholaman 28-01-09 19:24

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

בהצלחה

DvirCohen 28-01-09 19:59

בלי להעליב, הקוד שלך דפוק בכ"כ הרבה צורות.
דבר ראשון, בשביל מה אתה עושה alert מתוך הקוד PHP?
את הבדיקה בJS תעשה בצד הלקוח בעזרת JS, לא בעזרת PHP.
בדיקה בPHP עושים מאחורי הקלעים ליתר ביטחון במידה והמשתמש עבר את בדיקות הJS.
ברור שעל ההתחלה זה יקפיץ לך את ההודעות, כי משתני הPOST לא קיימים כי לא נשלח טופס.

דבר נוסף, התנאי שלך בכלל לא נכון.
נתחיל מזה שאתה משתמש בפונקציה isset (שתחזיר TRUE או FALSE), את הערך שבה אתה משווה למשתנה (מה?), ולבסוף אתה מוסיף את ה|| NULL שלא עושה כלום.

אם כבר אתה רוצה לעשות את הקוד הזה תקין, הוא צריך להיות כך:
PHP קוד:

if ( isset($_POST['name']) && isset($_POST['msg']) )
{
    if ( 
$_POST['name'] != $textname || trim($_POST['name']) == "" || $_POST['name'] == null )
    {
        echo 
"<script>alert('אנא מלאו שם!')</script>"
    }
    elseif ( 
$_POST['msg'] != $txtmsg || trim($_POST['msg']) == "" || $_POST['msg'] == null )
    {
        echo 
"<script>alert('אנא הכניסו הודעה!')</script>"
    }


קודם כל בדקתי שהמשתנים קיימים בכלל אחרת זה תמיד יקפיץ את ההודעה.
לאחר מכן בדקתי אם הערך ללא רווחים בהתחלה ובסוף (trim) ריק או שהוא NULL.

אבל שוב אני אומר, את בדיקות הJS תעשה בצד הלקוח עם JS באמת, ולא סתם ALERT מתוך הקוד PHP.

intercooler3819 28-01-09 20:20

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

SniR-S 28-01-09 21:23

אוקי, תודה רבה על העזרה.
אני עדיין לא מתקדם ב PHP ולכן הקוד שלי היה ניראה על הפנים, אבל מטעויות לומדים.
ודביר לא הבנתי מזה trim ?

כי לפי הקוד בדקת אם הערכים שווים ל משתנים textname ו textmsg נגיד
או שהם שווים לכלום והוספת לפני המשתני POST trim, הוא שהערכים שלהם NULL
ריקים..

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

($_POST['msg']) == "" 

או מה שאתה עשית עם trim

לבין שאם אני עושה NULL?

Shon12 28-01-09 21:51

trim - http://www.w3schools.com/PHP/func_string_trim.asp
פשוט - מצמצם רווחים,
כלומר:
shon gefen
יהיה:
shongefen

ואז בודק אם הPOST ריק,כך שגם אם יכניסו רווחים - הם יחשבו לריקים.

intercooler3819 28-01-09 21:56

טעות ענקית
shon gefen ישאר כמו שהוא
לעומת זאת
" shon gefen "
יהפוך ל
"shon gefen"

SniR-S 28-01-09 22:07

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 695330)
טעות ענקית
shon gefen ישאר כמו שהוא
לעומת זאת
" shon gefen "
יהפוך ל
"shon gefen"

אה, הבנתי..
תודה!

DvirCohen 28-01-09 22:13

trim מקצץ רווחים מתחילתה וסופה של המחרוזת.
כלומר, שאם מישהו יביא לך דבר כזה: " ", לא תתייחס לזה כמחרוזת ריקה.

ומה שבדקתי זה אם הערכים שלהם לא שווים לערכים שהצבת, או שהם שווים למחרוזת ריקה, או לNULL (שזה די מיותר..מחרוזת ריקה תעשה את העבודה).

vadimg88 29-01-09 08:16

ציטוט:

או לNULL (שזה די מיותר..מחרוזת ריקה תעשה את העבודה).
מחרוזת ריקה ו NULL זה שני דברים שונים. אם יהיה לך את הדבר הבא:

PHP קוד:

$var '';
$var2 null;

echo isset(
$var) ? "var is set" "var not set"// will print var is set
echo isset($var2) ? "var2 is set" "var2 not set"// will print var2 not set 



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

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