PHP-Funktion: Variablen aus POST/GET setzen

edit | delete

Autor: Ralf v.d.Mark

eingetragen: Montag, 23. Oktober 2017 um 09:11 Uhr (43/2017 Kalenderwoche)

geändert: Montag, 18. März 2024 um 14:39 Uhr (12/2024 Kalenderwoche)

Keywords: Variablen getPOST getGET getValue getWert gibWert

Kategorien: PHP,

Text:

Immer wiederkehrende Schreibweise, um die Post/Get-Variablen in einer PHP-Variable zu speichern.


Als Letztes ist eine kürzere Funktion eingefügt.

Quellcode:  

<?php
/**
 * Enthält Funktionen zur Filterung aus Post- oder Get-Arrays und setzt
 * automatisch Konstanten "AUTOM_VDM_KONSTANTE_'.trim(VariablenName)"
 * und "$GLOBALS['VDM']['getOrPost'][VariablenName]".
 *
 * PHP version 8.3
 *
 * @file       function_gibWerteAusPostOderGet.php (s. a. "function_getValuesFromPostOrGet.php")
 *             mit Pfad: function_gibWerteAusPostOderGet.php
 * @author     Ralf von der Mark <ralf@website-vdm.de>, www.WebSite-vdM.de
 * @copyright  2024, Ralf von der Mark
 * @version    18.03.2024, GIT: No
 */


define('AUTOM_VDM_KONSTANTE_', 'Dummy! - Zur einfachen Schreibweise der Konstante!');
define('AUTOM_VDM_KONST_LEN_', 'Dummy! - Integer! Zur einfachen Schreibweise der Konstante!');

/**
 * Bei Nennung des Key-Namens aus POST/GET gibt die Funktion
 * als RETURN den Wert zurueck und
 * definiert jeden Wert aus POST/GET als Konstante
 * beginnend mit dem Namen "AUTOM_VDM_KONSTANTE_...".
 *
 * @param string $variablenName (Name des Key)
 * @param string $defaultWert
 * @param string $wertTyp (Standard ist STRING, 'INT', 'TRIM', 'TIME', 'ARRAY')
 *     HINWEIS: gibt bei INT keine Negativ-Werte zurueck!
 * @param bool $wertSchuetzn (Standardmaessig wird PHP und HTML entfernt)
 * @param string $checkMitEmptyOrIsset (Standardmäßig 'empty', wenn man 0 als 'INT' übergibt, dann sollte man 'isset' setzen)
 *
 * @return string (Wert des Array-Feldes)
 *
 * @example
 *         $einString = getWertFromPostOrGet('einString', null);
 *         $eineZahl = getWertFromPostOrGet('eineZahl', 0, 'INT');
 *         $eineZahlAuchNullen = getWertFromPostOrGet('eineZahlAuchNullen', 1, 'INT', true, 'isset');
 */
function gibWertAusPostOderGet($variablenName,
                              $defaultWert,
                              $wertTyp = 'ALL',
                              $wertSchuetzn = true,
                              $checkMitEmptyOrIsset = 'empty')
{
    if ($checkMitEmptyOrIsset === 'isset') {
        //Ausnahmsweise mit isset() prüfen
        if (isset($_GET[$variablenName])) {
            $variablenInhalt = $_GET[$variablenName];
        } elseif (isset($_POST[$variablenName])) {
            $variablenInhalt = $_POST[$variablenName];
        } else {
            $variablenInhalt = $defaultWert;//Standardwert!
        }//ENDE: else ==> if (!empty($_POST[$variablenName]))
    } else {
        //Standardmäßig immer mit empty() prüfen
        if (!empty($_GET[$variablenName])) {
            $variablenInhalt = $_GET[$variablenName];
        } elseif (!empty($_POST[$variablenName])) {
            $variablenInhalt = $_POST[$variablenName];
        } else {
            $variablenInhalt = $defaultWert;//Standardwert!
        }//ENDE: else ==> if (!empty($_POST[$variablenName]))
    }//ENDE: else ==> if ($checkMitEmptyOrIsset === 'isset')

    $wertTyp = strtoupper($wertTyp);

    if (!empty($variablenInhalt) && $wertTyp !== 'ARRAY' && $wertSchuetzn === true) {
        $variablenInhalt = strip_tags($variablenInhalt);
    }//ENDE: if ($wertSchuetzn === true && $wertTyp !== 'ARRAY')

    if ($wertTyp === 'INT') {
        //Der POST-/GET-Wert soll nur Ganzzahlen-Werte enthalten.
        $variablenInhalt = (int)$variablenInhalt;
        //Negativ-Werte rausfiltern:
        $variablenInhalt = ($variablenInhalt >= 0 ? $variablenInhalt : (int)$defaultWert);
    } elseif (!empty($variablenInhalt) && $wertTyp === 'ARRAY') {
        //Das POST-/GET-Feld ist als Array übergeben worden.
        //ggf. was sinniges machen :-)
    } elseif (!empty($variablenInhalt) && $wertTyp === 'TRIM') {
        //Der POST-/GET-Wert soll getrimmt werden.
        $variablenInhalt = trim($variablenInhalt);
    } elseif (!empty($variablenInhalt) && $wertTyp === 'TIME') {
        //Der POST-/GET-Wert soll in einen Time-Wert umgewandelt werden.
        $variablenInhalt = strtotime($variablenInhalt);
    }//ENDE: elseif () => if ($wertTyp === 'INT')

    /** Variable ist so als automatische Konstante ueberall verfuegbar!
     *  Der Einfachheit halber verzichte ich auf Konstanten-Großschreibung. */
    if (!defined('AUTOM_VDM_KONSTANTE_' . $variablenName)) {
        define('AUTOM_VDM_KONSTANTE_' . $variablenName, $variablenInhalt);
    }//ENDE: if ()

    if ($wertTyp !== 'ARRAY' && !defined('AUTOM_VDM_KONST_LEN_' . $variablenName)) {
        //Alles außer Array wird hier behandelt:
        define('AUTOM_VDM_KONST_LEN_' . $variablenName, mb_strlen($variablenInhalt ?? ''));
    } elseif ($wertTyp === 'ARRAY' && !defined('AUTOM_VDM_KONST_LEN_' . $variablenName)) {
        //Wenn es ein Array ist, dann hier...
        define('AUTOM_VDM_KONST_LEN_' . $variablenName, count($variablenInhalt ?? ''));
    }//ENDE: else ==> if()

    $GLOBALS['VDM']['getOrPost'][$variablenName] = $variablenInhalt;

    return $variablenInhalt;
}//ENDE: function getWertFromPostOrGet()


/**
 * Bei Nennung des Key-Namens aus POST/GET gibt die Funktion
 * als RETURN die kommagetrennten Array-Werte zurueck und
 * definiert diesen String auch als Konstante
 * beginnend mit dem Namen "AUTOM_VDM_KONSTANTE_..."
 * und schreibt das Array in $GLOBALS['VDM']['getOrPost'][...].
 *
 * @param string $variablenName (Name des Key)
 *
 * @return array (Array-Feldes)
 */
function gibArrayAusPostOderGet($variablenName)
{
    if (empty($_GET[$variablenName]) && empty($_POST[$variablenName])) {
        //Wenn beides leer, dann beenden!
        $variablenInhalt = 0;
        $arrayInhalt = [];

    } elseif (!empty($_GET[$variablenName]) && is_array($_GET[$variablenName])) {
        //Wenn ein Array ist, dann speichern
        $arrayInhalt = nurZahlenImArray($_GET[$variablenName]);
        $variablenInhalt = implode(',', $arrayInhalt);

    } elseif (!empty($_POST[$variablenName]) && is_array($_POST[$variablenName])) {
        //Wenn ein Array ist, dann speichern
        $arrayInhalt = nurZahlenImArray($_POST[$variablenName]);
        $variablenInhalt = implode(',', $arrayInhalt);

    } else {
        //hier einfach zurueckgeben
        if (!empty($_POST[$variablenName])) {
            $variablenInhalt = $_POST[$variablenName];
        } elseif (!empty($_GET[$variablenName])) {
            $variablenInhalt = $_GET[$variablenName];
        } else {
            $variablenInhalt = '';//Standardwert!
        }//ENDE: else ==> if (!empty($_POST['']))
        $arrayInhalt = [];

    }//ENDE: else ==> if ()

    /** Variable ist so als automatische Konstante ueberall verfuegbar!
     *  Der Einfachheit halber verzichte ich auf Konstanten-Großschreibung. */
    if (!defined('AUTOM_VDM_KONSTANTE_' . $variablenName)) {
        define('AUTOM_VDM_KONSTANTE_' . $variablenName, $variablenInhalt);
    }//ENDE: if ()
    if (!defined('AUTOM_VDM_KONST_LEN_' . $variablenName)) {
        define('AUTOM_VDM_KONST_LEN_' . $variablenName, mb_strlen($variablenInhalt));
    }//ENDE: if ()
    $GLOBALS['VDM']['getOrPost'][$variablenName] = $arrayInhalt;

    return $variablenInhalt;
}//ENDE: function gibArrayAusPostOderGet()


/** Laesst nur Zahlen (mehr als 0) im Array zu!
 * @param array $arr
 * @return array
 */
function nurZahlenImArray($arr)
{
    $arrSamml = [];
    if (is_array($arr) && count($arr) > 0) {
        foreach ($arr as $key => $wert) {
            $wert = (int)$wert;
            if ($wert > 0) {
                $arrSamml[$key] = $wert;
            }//ENDE: if ()
        }//ENDE: foreach
    }//ENDE: if (is_array($arr) && count($arr) > 0)
    return $arrSamml;
}//ENDE: function nurZahlenImArray($arr)


/**
 * Ralf vdM, 25.02.2024: Kurze Funktion aus...
 * /download/string_umformer/piktoSymboleAnzeigen.php
 * /TechDox/charUnicode_edit/piktoSymboleAnzeigen.php
 *
 * Holt jeden Parater aus POST oder GET
 *
 * @param string $nameKey (Welches Feld soll zurueckgegeben werden)
 * @param string $defaultValue (optional, gibt es einen Standardwert, wenn leer)
 * @param string $isInteger (Muss der Wert als Zahl deklariert werden)
 *
 * @return string  (Wert der Variablen)
 *
 * @example
 *    1.)  setzePostUndGetAufVariable('navigation', 'index');
 *    2.)  setzePostUndGetAufVariable('id', 1, 1);
 */
function setzePostUndGetAufVariable($variablenName,
                                    $defaultWert,
                                    $wertTyp = 'ALL',
                                    $wertSchuetzn = true)
{
    if (isset($_POST[$variablenName])) {
        $variablenInhalt = $_POST[$variablenName];
    } elseif (isset($_GET[$variablenName])) {
        $variablenInhalt = $_GET[$variablenName];
    }//ENDE: elseif () ==> if (!empty($_POST[$variablenName]))

    if ($wertSchuetzn === true && !empty($variablenInhalt)) {
        $variablenInhalt = strip_tags($defaultWert); //Soll den Angriff erschweren!
    }//ENDE: if ($wertSchuetzn === true)

    if (empty($variablenInhalt)) {
        $variablenInhalt = $defaultWert;//Standardwert einfüllen, wenn leer!
    }//ENDE: if (empty($variablenInhalt))

    if (!empty($variablenInhalt) && $wertTyp === 'INT') {
        //Negativ-Werte rausfiltern:
        return (int)((int)$variablenInhalt > 0 ?
            $variablenInhalt : $defaultWert);
    }

    if (!empty($variablenInhalt) && $wertTyp === 'TRIM') {
        return trim($variablenInhalt);
    }

    if (!empty($variablenInhalt) && $wertTyp === 'TIME') {
        return strtotime($variablenInhalt);
    }//ENDE: elseif () => if ()

    return $variablenInhalt;//$wertTyp = 'ALL'
}//ENDE: function setzePostUndGetAufVariable(...)