Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP: Prüfen ob bestimmter Parameter gesetzt ist (https://www.delphipraxis.net/54831-php-pruefen-ob-bestimmter-parameter-gesetzt-ist.html)

malo 12. Okt 2005 10:42


PHP: Prüfen ob bestimmter Parameter gesetzt ist
 
Hi!

Wie kann ich überprüfen, ob ein bestimmter Parameter gesetzt wurde?

Ich hab schon einige Möglichkeiten ausprobiert, anbei ein paar Beispiele, was ich versucht hab
Code:
$mode = $_GET;
if ($mode['subject'] == '') // hier soll die entsprechende Stelle überprüft werden
  miep(); // wird nicht ausgeführt
if (!$mode['subject'])
  miep(); // wird nicht ausgeführt
if ($mode['subject'] == NULL)
  miep(); // auch nicht
if (!ISSET($mode['subject']))
  miep(); // wird auch nicht ausgeführt
Die Methoden klappen alle nicht. Aber bei
Code:
if (ISSET($mode['subject']))
  miep();
wird miep() ausgeführt. Aber egal, ob ich nun als Parameter was bei "subject" angebe oder nicht.

ich rufe als Parameter immer "?page=index" auf. Wenn ich die Parameter verknüpfe schreibe ich "?page=index&subject=irgendwas".

Subject wird in letzterem Falle auch richtig gesetzt, ich kann es auch per Echo ausgeben. Aber irgendwie klappt die Abfrage nicht :gruebel:

alcaeus 12. Okt 2005 11:05

Re: PHP: Prüfen ob bestimmter Parameter gesetzt ist
 
Moin malo,

bei aelteren Scripts verwende ich das:
Code:
if (isset($HTTP_GET_VARS['varname']) || isset($HTTP_POST_VARS['varname']))
{
  $varname = (isset($HTTP_GET_VARS['varname'])) ? $HTTP_GET_VARS['varname'] : $HTTP_POST_VARS['varname'];
}
else
{
  $varname = ''; //Default
}
Bei neueren Scripts gehe ich einfach ueber $_REQUEST:
Code:
$varname = (isset($_REQUEST['varname'])) ? $_REQUEST['varname'] : '';
Vergiss aber nicht, dass du alle input-Variablen validieren solltest, also integer mit intval() konvertieren, ueber strings evtl. htmlspecialchars() laufen lassen, Anfuehrungszeichen escapen (nur bei SQL-Queries) usw.

Ganz geschickt sind sog. varlists:
Code:
$int_varlist = array('post_id', 'topic_id', 'user_id');
foreach ($int_varlist as $varname)
{
  $$varname = (isset($_REQUEST[$varname])) ? intval($_REQUEST[$varname]) : 0;
}
So kannst du schnell und einfach aehnliche Variablen validieren und uebernehmen ;)

Wenn du aber nur ueberpruefen willst, ob was gesetzt wurde, solltest du isset() verwenden.
Und abschliessend noch eine Frage: warum kopierst du das ganze $_GET-Array? Dir ist hoffentlich klar dass
Code:
$mode = $_GET;
das gesamte Array im Speicher kopiert?

Greetz
alcaeus

malo 12. Okt 2005 11:56

Re: PHP: Prüfen ob bestimmter Parameter gesetzt ist
 
Danke, mit $_REQUEST funktioniert das wunderbar :)

Zitat:

Zitat von alcaeus
Und abschliessend noch eine Frage: warum kopierst du das ganze $_GET-Array? Dir ist hoffentlich klar dass
Code:
$mode = $_GET;
das gesamte Array im Speicher kopiert?

Hab ich so noch nicht drüber nachgdacht :oops: Hab ich jetzt entsprechend geändert.

Airblader 12. Okt 2005 12:15

Re: PHP: Prüfen ob bestimmter Parameter gesetzt ist
 
Ich bin persönlich kein Fan von $_REQUEST....ein Scripter sollte wissen, woher seine Parameter kommen sollen... ;)

Zur Sache:

Ich würde einfach 2 Abfragen vereinen:

Code:
if(isset($_GET['subject']) && !empty($_GET['subject']))
air

alcaeus 12. Okt 2005 12:20

Re: PHP: Prüfen ob bestimmter Parameter gesetzt ist
 
Zitat:

Zitat von Airblader
Ich bin persönlich kein Fan von $_REQUEST....ein Scripter sollte wissen, woher seine Parameter kommen sollen... ;)

Warum? Die kommen vom User...na und? Wenn ich ein Formular habe, und ich will ein Aufrufen ueber Get verhindern, dann geh ich explizit auf $_POST, aber wenn es mir egal ist...warum nicht $_REQUEST verwenden? So hat man wenigstens alle Daten, denen man nicht vertrauen darf, auf einen Haufen ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz