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

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

miniature 10-07-06 03:27

[PHP] בדיקת משתנים קיימים..
 
נאמר ויש לי את הכתובת:
abc.php?b=ac

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

אפשרי?

תודה,

sUP 10-07-06 06:42

PHP קוד:

print_r($_GET); 

אם אני לא טועה זה מציג את כל מה שיש תחת GET

null 10-07-06 07:55

אם אתה רוצה לבדוק אם הזינו משהו בשורת הכתובת ( יכול להיות שחשבת על שיטת הגנה כלשהי? ;P )
אתה בודק עם
isset()
כך
isset($_GET)
ואם התשובה חיובית אז מישהו רשם משהו שם :) (TRUE)
ואם שלילית אז יש רק את הקובץ (FALSE)

*אמור לעבוד, לא בדקתי, אולי יש איזה GET שמוזמן תמיד לבד גם בלי שורת הכתובת,
אבל לא נראה לי בככל שקיים כזה, אז זה אמור לעבוד.

דניאל, תלמד PHP ;P
הוא צריך לדעת בתוכנית PHP אם מישהו הזין ( למערכת הגנה? ;) ) משהו לGET
ולא בשביל עצמו כדי לראות ;P
אל תעלב :)

בניה 10-07-06 08:25

ב"ה


דניאל רצה שהוא יבדוק בעצמו מה קורה במצבים מסויימים...
זה הולך ככה:
אם יש דבר כזה:
קוד:

index.php?my
אז שום משתנה GET לא קיים.
אם יש דבר כזה:
קוד:

index.php?my=
אז המשתנה my קיים אבל הוא יהיה ריק

Elad-A 10-07-06 10:20

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

@$id intval($_GET["id"]);
$q mysql_query("select * from tbl where id='$id'") or die(mysql_error());
$check mysql_num_rows($q);
if(
$check 1){
$err "שגיאה! לא קיים פריט עם שם זה.";
die(
$err);


*וזה רק אם התכוונת למה שבניה רשם..

Tomer 10-07-06 11:16

ציטוט:

נכתב במקור על ידי Elad-A
אני עושה משהו בצורה כזאת:
PHP קוד:

@$id intval($_GET["id"]);
$q mysql_query("select * from tbl where id='$id'") or die(mysql_error());
$check mysql_num_rows($q);
if(
$check 1){
$err "שגיאה! לא קיים פריט עם שם זה.";
die(
$err);


*וזה רק אם התכוונת למה שבניה רשם..

למה אתה משתמש ב @ כדי להסתיר שגיאות משתנה ולא משתמש בצורה הנכונה
PHP קוד:

if (isset($_GET['id'])) $id intval($_GET['id']); else $id "";
if (empty(
$id)) die("Please specify ID"); 


Elad-A 10-07-06 11:27

לא יודע.. ככה אני רגיל והדרך הזאת שרשמתי עובדת מצוין!

Tomer 10-07-06 11:31

ציטוט:

נכתב במקור על ידי Elad-A
לא יודע.. ככה אני רגיל והדרך הזאת שרשמתי עובדת מצוין!

סבבה, ברור שהיא תעבוד, אבל הדרך הזו לא נכונה.

לפי מה שרשמת, אתה יכול לרשום error_reporting(0); וזהו, תבטל את כל השגיאות בדף, מי צריך אותם ?

Itay 10-07-06 11:50

http://uk.php.net/manual/en/function.parse-url.php
http://uk.php.net/manual/en/function.parse-str.php
הכי טוב =]

sUP 10-07-06 16:11

ציטוט:

נכתב במקור על ידי Google
דניאל, תלמד PHP ;P
הוא צריך לדעת בתוכנית PHP אם מישהו הזין ( למערכת הגנה? ;) ) משהו לGET
ולא בשביל עצמו כדי לראות ;P
אל תעלב :)

אז כניראה שלא הבנתי מה הוא צריך 8-)

BlueNosE 10-07-06 18:45

תעשה ככה
PHP קוד:

function TrueGet()
{
$allowed_get_keys = array ("hi","foo","bar");
if ((
is_array ($_GET)) and (!empty ($_GET)))
{
   foreach (
$_GET as $key=>$val)
   {
       if (!
in_array ($key,$allowed_get_keys)) return true;
   }
}
return 
false;


ובניה אתה טועה
?my יאתחל את המשתנה עם הערך 0 (bool).

miniature 10-07-06 18:53

ציטוט:

נכתב במקור על ידי BlueNosE
תעשה ככה
PHP קוד:

function TrueGet()
{
$allowed_get_keys = array ("hi","foo","bar");
if ((
is_array ($_GET)) and (!empty ($_GET)))
{
foreach (
$_GET as $key=>$val)
{
if (!
in_array ($key,$allowed_get_keys)) return true;
}
}
return 
false;


ובניה אתה טועה
?my יאתחל את המשתנה עם הערך 0 (bool).

עריכה:

אוקי עובד רק יש לי בעיה קטנה - עשיתי ככה:
PHP קוד:

function true_get($true_arrays) {
  
$allowed_get_keys = array($true_arrays); 
  if((
is_array($_GET)) && (!empty($_GET))) { 
    foreach(
$_GET as $key=>$val) { 
      if(!
in_array($key,$allowed_get_keys)) {
        echo 
"הדף המבוקש לא נמצא";
      }
    } 
  }



bla.php
PHP קוד:

true_get("do");
switch(
$do) {
  case 
"":
    echo 
"שלום";
  break;
  case 
"asd":
    echo 
"asd";
  break;
  default:
    echo 
"הדף המבוקש לא נמצא";



אני עושה bla.php?asssdssd=asd
וזה כותב "הדף המבוקש לא נמצאשלום"
אני לא מבין למה זה כותב שלום.. =/

Tomer 10-07-06 19:40

עשית case "" משמע בכל מצב הוא יכנס לך ל case ויבצע מה שרשום בו (echo "שלום")

miniature 10-07-06 19:58

ציטוט:

נכתב במקור על ידי Atom-Bomb
עשית case "" משמע בכל מצב הוא יכנס לך ל case ויבצע מה שרשום בו (echo "שלום")

אבל ה case ב:
PHP קוד:

switch($do

כך שהוא צריך להתבצע רק במשתנה do ...

Elad-A 10-07-06 20:16

מה עם מה שאני אמרתי לך? ניסית? או שבכלל זה לא מה שהתכוונת...

miniature 10-07-06 21:28

ציטוט:

נכתב במקור על ידי Elad-A
מה עם מה שאני אמרתי לך? ניסית? או שבכלל זה לא מה שהתכוונת...

לא מה שהתכוונתי..

BlueNosE 11-07-06 18:12

יואב הוא כותב לך הדף המבוקש לא נמצא מהפונקציה שאני בניתי.
תנסה למספר את השגיאות של "הדף המבוקש לא נמצא".
תעשה
PHP קוד:

      if(!in_array($key,$allowed_get_keys)) {
        echo 
"הדף המבוקש לא נמצא1";

default:
        echo 
"הדף המבוקש לא נמצא2"


miniature 12-07-06 15:12

צודק זה מהפונקציה.
זה כותב גם את מה שבפונקציה (הדף המבוקש...) וגם את מה שב case"" (שלום). למה?!

miniature 12-07-06 15:25

פירקתי את הכתובת ואני לא זוכר עכשיו בשביל מה =/
חח
PHP קוד:

echo substr(strrchr($_SERVER['REQUEST_URI'], "?"),1,"-" strlen(substr(strrchr($_SERVER['REQUEST_URI'], "="),1))); 

זה יוציא do= אם אנחנו על do=fdvfdv / do=bla וכו'..
גם ככה זה לא שימושי ממש כי ייתכן ותהיה כתובת עם כמה bla=fds&bnasd=asd
ואז זה יקלוט רק תאחרונה.. למרות שאני יכול לעשות שזה יספור ויוריד אבל אני בטוח שאפשר בדרך אחרת..
לא יודע למה עשיתי את הפירוק הזה.. :S

Serlid 12-07-06 21:16

PHP קוד:

<?
if(!$_GET) {
die(
"the get is empty");
} else {
echo 
"מה אתה רוצה?";
}
?>

ככה?

miniature 12-07-06 23:08

ציטוט:

נכתב במקור על ידי Serlid
PHP קוד:

<?
if(!$_GET) {
die(
"the get is empty");
} else {
echo 
"מה אתה רוצה?";
}
?>

ככה?

מה ככה? זה בכלל לא קשור למה שהתכוונתי..

RS324 13-07-06 13:09

יש לך בתוך המשתנה של SERVER איזה משהו (לא זוכר בדיוק - תעשה PRINT_R)
שמחזיר לך את כל הערכים שאחרי הסימן שאלה
אז בתור שלב ראשון תחליף את כל &amp; בסימן &
ואחרי זה תעשה SPLIT ותקבל לתוך מערך את כל הערכים שנוצרו דרך ה GET
ואז תעשה איתם מה שאתה רוצה...דיי פשוט למרות שלא בדיוק הבנתי מה אתה מנסה לעשות

miniature 13-07-06 13:33

ציטוט:

נכתב במקור על ידי RS324
יש לך בתוך המשתנה של SERVER איזה משהו (לא זוכר בדיוק - תעשה PRINT_R)
שמחזיר לך את כל הערכים שאחרי הסימן שאלה
אז בתור שלב ראשון תחליף את כל &amp; בסימן &
ואחרי זה תעשה SPLIT ותקבל לתוך מערך את כל הערכים שנוצרו דרך ה GET
ואז תעשה איתם מה שאתה רוצה...דיי פשוט למרות שלא בדיוק הבנתי מה אתה מנסה לעשות

בכלל לא הבנת מה אני רוצה..

RS324 13-07-06 15:27

תשכח ממה שאמרתי

בשביל לקבל את כל המשתנים שמשתמש הכניס תשתמש ב ARRAY_KEYS

בכל מקרה בניתי לך פונקציה

אתה מגדיר מה מותר, ומה שאסור הוא מעיף מה GET

PHP קוד:

$keys = array('do','id');


foreach (
$_GET AS $key =>$val)
{
    if (!
in_array($key,$keys))
    {
        unset(
$_GET["$key"]);
    }
        



miniature 13-07-06 15:39

הביאו לי אותה פונקציה עמוד לפני חח..


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

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