php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.10.2007, 11:43  
Neuer Benutzer
 
Registriert seit: 19.04.2008
Beiträge: 6
bluefanu befindet sich auf einem aufstrebenden Ast
Standard automatisch trim()

Hi
PHP-Code:
<?php

error_reporting
(E_ALL);

if (
$_POST){
$_POST array_map('trim'$_POST);
}

// CODE

?>
Das funktioniert wunderbar, nur spricht irgendwas dagegen, das so anzuwenden ? Und wenn Ja, warum ?
bluefanu ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.10.2007, 11:49  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo bluefanu,

zunächst ein Herzliches Willkommen und viel Spass im PHPFriende.de-Forum!


Zitat:
Das funktioniert wunderbar, nur spricht irgendwas dagegen, das so anzuwenden ? Und wenn Ja, warum ?
Funktionieren tut das sicher, denn es ist ja syntaktisch und logisch richtig. Einschränkung ist, dass es eben nur funktioniert, wenn etwas gepostet wurde, wie du auch schon bemerkt hast.
Ob es sinnvoll ist, kommt immer auf den Anwendungsfall an. In der Regel benötigt man diese Art von Bereinigung nur bei Formular-Eingaben. Der Rest sollte so implementiert sein, dass Parameter keine Leer- und Sonder-Zeichen enthalten. Wichtiger an dieser Stelle ist IMHO auf die vom User übergebenen Daten ein strip_tags() oder einen beliebigen anderen Filter anzuwenden, um XSS-Lücken zu vermeiden.
Solltest du diese Art der Anwendung aber für deinen speziellen Fall benötigen ist das schon richtig und sinnvoll so.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 14.10.2007, 11:50  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

wenn du wirklich alle Werte von $_POST getrimmt haben möchtest, was soll denn dagegen sprechen?
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 14.10.2007, 12:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

.. wenn nun aber ein Array ankommt ist der weg, siehe http://www.phpfriend.de/forum/ftopic62940.html

PS: Auch von mir ein herzlich willkommen!
Zergling-new ist offline  
Alt 14.10.2007, 13:49  
Neuer Benutzer
 
Registriert seit: 19.04.2008
Beiträge: 6
bluefanu befindet sich auf einem aufstrebenden Ast
Standard

Hi

Erstmal vielen danke für die Antworten und die nette Begrüßung

Grundsätzlich schicke ich jede einzelne Benutzereingabe vor dem Eintrag in die Datenbank erst durch trim() und dann durch mysql_real_escape_string() und auch, aber selten durch strip_tags()

Wenn ich jedoch ein Formular habe in dem z.b. 10 Felder ausgefüllt werden müssen, muss ich 10x trim() und mysql_real_escape_string schreiben.

Diese Schreibarbeit wollte ich mir aber gerne sparen und daher dachte ich an so was wie:
PHP-Code:
<?php

if ($_REQUEST){
$_REQUEST array_map('trim'$_REQUEST);
$_REQUEST array_map('mysql_real_escape_string'$_REQUEST);
}

// geht dass evtl. optimaler/kürzer ? und was ist mit is_numeric() und intval()

?>
Diese Methode habe ich jedoch noch nie in einem Script gesehen.

Was haltet Ihr davon ?
bluefanu ist offline  
Alt 14.10.2007, 16:02  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von bluefanu
Hi

Erstmal vielen danke für die Antworten und die nette Begrüßung

Grundsätzlich schicke ich jede einzelne Benutzereingabe vor dem Eintrag in die Datenbank erst durch trim() und dann durch mysql_real_escape_string() und auch, aber selten durch strip_tags()

Wenn ich jedoch ein Formular habe in dem z.b. 10 Felder ausgefüllt werden müssen, muss ich 10x trim() und mysql_real_escape_string schreiben.

Diese Schreibarbeit wollte ich mir aber gerne sparen und daher dachte ich an so was wie:
PHP-Code:
<?php

if ($_REQUEST){
$_REQUEST array_map('trim'$_REQUEST);
$_REQUEST array_map('mysql_real_escape_string'$_REQUEST);
}

// geht dass evtl. optimaler/kürzer ? und was ist mit is_numeric() und intval()

?>
Diese Methode habe ich jedoch noch nie in einem Script gesehen.

Was haltet Ihr davon ?
isset() fehlt

anderfalls, ich benutz immer was in der art (mit den filter konstanten):

PHP-Code:
function exists_not_empty($key,$submitted_through)
{
    switch(
$submitted_through)
    {
        case 
INPUT_GET$check_in=$_GET;
         break;

        case 
INPUT_COOKIE$check_in=$_COOKIE;
         break;

        case 
INPUT_REQUEST$check_in=$_REQUEST;
         break;

        default:
        case 
INPUT_POST$check_in=$_POST;
         break;
    }

    if(isset(
$check_in[$key]))
    {
        
$trimed=trim($check_in[$key]);
        if(
$trimed!=='') return $trimed;
            else return 
FALSE;
    }
    else return 
FALSE;

benutzen tust du das so:

PHP-Code:
$input_name=exists_not_empty('name'); #prueft in $_POST
if($input_name===FALSE$error.='Bitten nen namen angeben.'
das ist nämlich auch das was mich an den filter* nervt. kein trim....
brian johnson ist offline  
Alt 14.10.2007, 18:19  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn du das auf alle $_REQUEST anwendest, gehst du implizit davon aus, dass alle ankommenden Daten für die MySQL-Datenbank bestimmt sind. Das erschwert die Übergabe von Parametern, die nicht für die MySQL-Datenbank bestimmt sind, beispielsweise Navigations-Parameter etc.
Das aber nur als Hinweis, grundsätzlich kannst du array_map mit den beiden genannten Funktionen so natürlich aufrufen.

brian's Variante ist natürlich auch elegant, wobei ich statt $submitted_through wohl eher direkt den Array übergeben würde.
Zergling-new ist offline  
Alt 14.10.2007, 19:11  
Neuer Benutzer
 
Registriert seit: 19.04.2008
Beiträge: 6
bluefanu befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php

if (isset($_REQUEST)){
$_REQUEST array_map('trim'$_REQUEST);
$_REQUEST array_map('mysql_real_escape_string'$_REQUEST);
}

?>
Besser so ?

Also wenn ich das so direkt vor einem INSERT oder UPDATE verwende spricht nicht dagegen oder ?

Mit $_GET und mysql_real_escape_string() hab ich schon Probleme bekommen
bluefanu ist offline  
Alt 14.10.2007, 20:18  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ja, irgendwann musst du selbst für MySQL die Eingaben testen, kurz davor kann ein guter Zeitpunkt sein

Was für Probleme?
Zergling-new ist offline  
Alt 14.10.2007, 21:48  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von bluefanu
PHP-Code:
<?php

if (isset($_REQUEST)){
$_REQUEST array_map('trim'$_REQUEST);
$_REQUEST array_map('mysql_real_escape_string'$_REQUEST);
}

?>
Besser so ?
das kommt darauf an, wieviele daten denn verarbeitet werden sollen. du musst daran denken, dass das array bei 2 aufrufen von array_map auch 2 mal durchgegangen wird. besser wärs dann wohl, wenn dus selbst mit foreach durchgehst. außerdem könntest du dann sofort alle inhalte die nach trim() einen string mit der länge 0 ergeben, löschen.
brian johnson ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Termine nach Ablauf automatisch aus der DB löschen oder ausblenden Teela PHP Tipps 2008 4 24.03.2008 12:29
Formulare automatisch ausfüllen lassen? Marlboro PHP Tipps 2008 4 23.08.2007 20:30
"[code]" automatisch ins textfeld einfuegen Dilandau HTML, Usability und Barrierefreiheit 14 23.01.2007 20:10
Post Formular automatisch weiterleiten mansaylon PHP Tipps 2006 7 31.03.2006 10:46
deckkraft mit php automatisch ändern TaStEn PHP Tipps 2006 3 25.03.2006 20:46
radio button automatisch setzen HTML, Usability und Barrierefreiheit 2 11.10.2005 07:12
XML Tags automatisch schließen? tekknotrip PHP Tipps 2005-2 4 14.09.2005 11:51
Automatisch E-Mail Adressen erstellen lassen? Beitragsarchiv 5 24.08.2005 15:36
Parse error bei trim() PHP Tipps 2005-2 8 09.07.2005 13:37
Datum automatisch erhöht eingeben?!? Datenbanken 3 02.06.2005 12:49
logo automatisch anpassen HTML, Usability und Barrierefreiheit 15 14.03.2005 10:59
[Erledigt] Text automatisch einfügen lassen? PHP Tipps 2005 9 12.02.2005 20:22
bildgröße automatisch anpassen PHP Tipps 2004-2 9 10.12.2004 13:39
array auch automatisch erzeugt wenn.. PHP Tipps 2004-2 4 04.12.2004 12:33
[Erledigt] Zeilenumbrüche aus textarea automatisch ausgeben PHP Tipps 2004 7 22.08.2004 12:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array_map php, mehrere felder bei trim php, funktioniert trim automatisch, xml trim automatisch, bluefanu, array_map trim

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.