zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden prüfen ob nur leerzeichen angegeben wurden - und wenn ja, dann alle löschen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 30.12.2009, 01:48
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 20.12.2008
Beiträge: 67
connor befindet sich auf einem aufstrebenden Ast
Standard prüfen ob nur leerzeichen angegeben wurden - und wenn ja, dann alle löschen

Hallo!
wie kann ich ein textarea-Feld überprüfen nur Leerzeichen angegeben wurden? Und wenn das der Fall ist, sollen diese überflüssigen Leerzeichen gelöscht werden.

Hier ein Auszug aus meinem Code.
Hier wird überprüft ob Text im textarea-Feld steht und hier müsste ich dann eine Funktion auf $input_text anwenden. Mit trim() klappt es irgendwie nicht.
Habt ihr vielleicht Tipps? Danke!

PHP-Code:
                        if(!empty($input_text))
                        {
                                
$sql_text ", text='".$input_text."'";
                                
$doQuery true;                                
                        } 
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 30.12.2009, 11:05
Benutzerbild von toscho
Perplexifikator
XHTMLforum-Kenner
 
Registriert seit: 22.05.2004
Ort: Halle/Saale
Beiträge: 1.565
toscho sorgt für eine eindrucksvolle Atmosphäretoscho sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich sehe kein trim(). Das funktioniert normalerweise.
__________________
toscho.de
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 30.12.2009, 14:00
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 20.12.2008
Beiträge: 67
connor befindet sich auf einem aufstrebenden Ast
Standard

ja normalerweise... nur hier scheinbar nicht. Als ergänzende Info noch folgendes:

PHP-Code:
$sql "UPDATE press SET
                headline='"
.$input_headline."',
                start='"
.$input_start."',
                end='"
.$input_ende."',
                insert_date=NOW()"
;

if(!empty(
$input_text))
{
        
$sql_text ", text='".trim($input_text)."'";
        
$doQuery true;                                
}



$sql $sql.$sql_text." WHERE id='".$_GET['askedit']."'"
je nachdem ob Text in das Input-Feld eingegeben wurde, wird dieser Text in die SQL-Abfrage miteinbezogen. Nur wie gesagt, das trim scheint nicht zu funktionieren - denn er gibt Leerzeichen mit und schreibt sie in die DB.
Mit Zitat antworten
  #4 (permalink)  
Alt 30.12.2009, 14:10
Benutzerbild von toscho
Perplexifikator
XHTMLforum-Kenner
 
Registriert seit: 22.05.2004
Ort: Halle/Saale
Beiträge: 1.565
toscho sorgt für eine eindrucksvolle Atmosphäretoscho sorgt für eine eindrucksvolle Atmosphäre
Standard

trim() erwischt keine geschützten Leerzeichen; vielleicht kommen die durch. Warum prüfst du denn erst mit empty() und führst danach das trim() aus? Verstehe ich nicht.

Und die Variable $_GET['askedit'] einfach so in einen SQL-Query einzubauen, find ich … mutig. Üblicherweise filtert man erst feindlichen Code aus und benennt die Variable dann um, damit klar ist, daß sie geprüft wurde.
__________________
toscho.de
Mit Zitat antworten
  #5 (permalink)  
Alt 30.12.2009, 14:17
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 20.12.2008
Beiträge: 67
connor befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von toscho Beitrag anzeigen
trim() erwischt keine geschützten Leerzeichen; vielleicht kommen die durch. Warum prüfst du denn erst mit empty() und führst danach das trim() aus? Verstehe ich nicht.
Ich prüfe, ob das Input-Feld leer ist. Wenn das nicht der Fall ist, sprich es wurde etwas eingegeben (auch Leerzeichen), wird das in die Variable $sql_text gespeichert. Mit trim() erhoffte ich mir überflüssige Leerzeichen entfernen zu können, falls jemand auf die Idee kommt ausschließlich Leerzeichen einzugeben.

Zitat:
Zitat von toscho Beitrag anzeigen
Und die Variable $_GET['askedit'] einfach so in einen SQL-Query einzubauen, find ich … mutig. Üblicherweise filtert man erst feindlichen Code aus und benennt die Variable dann um, damit klar ist, daß sie geprüft wurde.
wie mache ich das denn am gescheitesten?
Mit Zitat antworten
  #6 (permalink)  
Alt 30.12.2009, 15:14
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Silent Beitrag anzeigen
wie mache ich das denn am gescheitesten?
In dem Du den Inhalt der Variable mit dem vergleichst, was du erwartest. Z.B. wird eine ID für gewöhnlich nur aus Ziffern bestehen. Ein Name nur aus Buchstaben usw.

Erstes kannst du mit den Funktionen ctype_digit() machen, Namen müstest du von Hand prüfen, da ja auch Umlaute vorkommen könnten.

Sollte ein solcher Vergleich nicht möglich sein, weil wirklich alle Zeichen vorkommen könnten, dann gibt es die Funktion mysql_real_escape_string(), mit der man SQL-Sonderzeichen maskieren kann.
__________________
github | http://dnaber.de
Mit Zitat antworten
  #7 (permalink)  
Alt 30.12.2009, 15:20
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 20.12.2008
Beiträge: 67
connor befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von David Beitrag anzeigen
In dem Du den Inhalt der Variable mit dem vergleichst, was du erwartest. Z.B. wird eine ID für gewöhnlich nur aus Ziffern bestehen. Ein Name nur aus Buchstaben usw.

Erstes kannst du mit den Funktionen ctype_digit() machen, Namen müstest du von Hand prüfen, da ja auch Umlaute vorkommen könnten.

Sollte ein solcher Vergleich nicht möglich sein, weil wirklich alle Zeichen vorkommen könnten, dann gibt es die Funktion mysql_real_escape_string(), mit der man SQL-Sonderzeichen maskieren kann.
das mit mysql_real_escape_string() habe ich auch schon ein paar mal gelesen. Das werde ich so einbauen. Und die andere Funktion klingt auch vernünftig. Ist das Ganze dann relativ sicher bzw. SQL-Injections-geschützt?
Mit Zitat antworten
  #8 (permalink)  
Alt 30.12.2009, 19:25
Benutzerbild von toscho
Perplexifikator
XHTMLforum-Kenner
 
Registriert seit: 22.05.2004
Ort: Halle/Saale
Beiträge: 1.565
toscho sorgt für eine eindrucksvolle Atmosphäretoscho sorgt für eine eindrucksvolle Atmosphäre
Standard

Nochmal zu den Leerzeichen: Vielleicht stammen die aus einem der drei anderen Parameter: $input_headline, $input_start oder $input_ende?

Zur Prüfung der Eingabe: mysql_real_escape_string() funktioniert recht gut. Wenn deine Kontrolle aber feindlichen Code findet, brauchst du keine Zeit mehr mit dem SQL-Query zu vergeuden. In diesem Fall trägst du die IP des Senders in dein Blockfile ein, und dann schickst du dir selbst eine Mail mit den Details.
__________________
toscho.de
Mit Zitat antworten
  #9 (permalink)  
Alt 31.12.2009, 00:10
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Na ja, es muss ja nicht immer ein Angriffsversuch dahinter stecken, wenn ein Hochkomma in der Eingabe auftaucht.

Ich halte es für wenig sinnvoll über alle Eingaben mit mysql_real_escape_string drüber zu bügeln, eine Prüfung auf die Erwarteten werte spart u.U. eine Datenbankabfrage. Außerdem will man doch den Anwender auf evtl. Fehleingaben sicher aufmerksam machen.

Man sollte nur nie vergesse, alle vom Benutzer kommenden Daten zu prüfen.
__________________
github | http://dnaber.de
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 31.12.2009, 17:49
Benutzerbild von toscho
Perplexifikator
XHTMLforum-Kenner
 
Registriert seit: 22.05.2004
Ort: Halle/Saale
Beiträge: 1.565
toscho sorgt für eine eindrucksvolle Atmosphäretoscho sorgt für eine eindrucksvolle Atmosphäre
Standard

Ein Hochkomma möchte ich auch nicht als feindlichen Code bezeichnen. Ein ?> hingegen schon.
__________________
toscho.de
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Leerzeichen löschen meGa Serveradministration und serverseitige Scripte 3 11.01.2008 09:39
IE verkleinert Leerzeichen nach Bindestrich Aranxo CSS 11 20.10.2005 16:24
Dateien lassen sich nicht löschen Anonymous Serveradministration und serverseitige Scripte 14 11.05.2005 16:16
Variabler Text Button... der_junge CSS 2 11.11.2004 17:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:26 Uhr.