Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 23.08.2002, 15:55   #1
TP-Member
 
Benutzerbild von McClaine
 
Registriert seit: May 2002
McClaine macht alles soweit korrekt
Question

[PHP-MySql] Wozu addslashes() etc. ?


Hallo zusammen,

ich lese hin und wieder, dass man Texte (z.B. aus Formularfeldern) vor dem schreiben in die Db mit addslashes() bearbeiten soll.
Und beim Auslesen wieder stripslashes().

Ich habe diese Funktionen nie angewand und bis jetzt keine Probleme bekommen. Wozu sind die also gut?

Kann mir das einer von Euch erklären?

Gruß
McClaine
McClaine ist offline   Mit Zitat antworten


Alt 23.08.2002, 16:16   #2
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Hi !! Das ist ganz einfach... mal ein Beispiel:

PHP-Code:
$string "Hallo Leut's wie schaut's aus?";

mysql_query = ("INSERT INTO tabelle SET text = '$string'"); 
Das würde nicht funktionieren. Da der Query dann so aussehen würde:
Code:
INSERT INTO tabelle SET text = 'Hallo Leut's wie schaut's aus?'
...wenn du addslashes() vorher auf den string anwendest werden die ' oder die " excapet d.h ein \ wird davor gesetzt.

Hoffe das hilft...

Gruss Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 23.08.2002, 16:19   #3
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
..kleiner Nachtrag... wenn Du Text aus einer Textarea an ein Script übergibst wird im Post oder irgendwo dazwischen die Funktion auf den Text schon angewand. Das siehst du, wenn du z.B. eine Textarea an sich selber schickst:
PHP-Code:
<form action="<?=$PHP_SELF;?>>
 <textarea name="deintext"><?=$deintext;?></textarea>
 <input type="submit" value="und los">
</form>
Stuck Mojo ist offline   Mit Zitat antworten
Alt 23.08.2002, 16:26   #4
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
is mir eine sql-reform entgangen?

PHP-Code:
INSERT INTO tabelle SET text 
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 23.08.2002, 16:29   #5
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
"addslashes" ist aber unnötig, wenn der Provider die magic_quotes aktiviert hat - dann wird dies nämlich automatisch gemacht. Davon sollte man aber niemals einfach so ausgehen
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 23.08.2002, 16:32   #6
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Zitat:
Original geschrieben von Longfang
is mir eine sql-reform entgangen?

PHP-Code:
INSERT INTO tabelle SET text 
...denke schon... http://www.mysql.com/doc/en/INSERT.html (das 3te Syntax-Besipiel?)
Stuck Mojo ist offline   Mit Zitat antworten
Alt 23.08.2002, 16:37   #7
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
habs selber grad probiert.

kaum zu glauben. bitte bitte sag, dass das mysql spezifisch ist!

denn soweit ich mich entsinnen kann, ist die ansi konforme ausgabe eines insert, der mit 'values'.

entschuldige, dass ich an dir gezweifelt hab

scheinbar arbeite ich zu viel am ms-sql. (bei dem gehts übrigends NICHT)

lf
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 23.08.2002, 16:48   #8
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
...ähm... ob das ansi-konform ist weiß ich um ehrlich zu sein nicht. Aber das ist für bestimmte Querys oder Scripe ein super Vorteil... Du packst deine Varis in ein Hashtable lässt einmal ne' Schleife drüberlaufen und dein Query ist fast komplett.

Ich hab das aber selber auch eher durch Zufall mitbekommen... habs einfach mal gemacht... und siehe da es hat geklappt

...ich zweifle übrigends auch oft an mir
Gruss Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 23.08.2002, 16:58   #9
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Zitat:
Original geschrieben von Stuck Mojo
...ähm... ob das ansi-konform ist weiß ich um ehrlich zu sein nicht. Aber das ist für bestimmte Querys oder Scripe ein super Vorteil... Du packst deine Varis in ein Hashtable lässt einmal ne' Schleife drüberlaufen und dein Query ist fast komplett.

Ich hab das aber selber auch eher durch Zufall mitbekommen... habs einfach mal gemacht... und siehe da es hat geklappt

...ich zweifle übrigends auch oft an mir
Gruss Jan
Hey, das würde mir auch helfen. Ich hab da ein Formular mit 80 (!) Feldern, die alle in eine Tabelle reingeschrieben werden müssen ... die entsprechende Query zu basteln ist sehr zeitaufwändig ... nehmen wir mal an, die Formularfelder entsprechen den Feldern in der Datenbank, wie muss eine eintsprechende Schleife aussehen, um eine Query "generieren" zu lassen?
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 23.08.2002, 17:08   #10
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
benenne deine Felder erstmal als Array um... so sparst du dir die konvertierung in PHP. z.B. so:
Code:
<input type="text" name="deinarray[elementname]" size="20">
Auf der folgenden Seite machst du dann folgendes (weiß es jetzt nur mit register globals auf off:
PHP-Code:
foreach($deinarray AS $key => $val) {
  
$tmpsql .= "$key = '$val',";
}
$tmpsql substr($tmpsql,0,strlen($tmpsql)-1);

mysql_query("UPDATE tabelle SET $tmpsql"); 
...das sollte es gewesen sein... aber wie gesagt... register globals = off...

Gruss Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 23.08.2002, 17:20   #11
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Meinst Du nicht eher register_globals auf ON?

Deine Version wird nicht gehen, wenn sie OFF sind ... es müsste dann doch so (oder ähnlich) aussehen:

foreach($_POST AS $key => $val) {
$tmpsql .= "$key = '$val',";
}

Oder? Ich arbeite ausschliesslich mit register_globals=off, sprich: ohne globale Variablen (alles ganz brav mit $_POST,. $_GET, $_SESSION usw).
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 23.08.2002, 17:24   #12
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
ähm.. ja klar... register globals = on

das müsste dann bei dir irgendwie so aussehen:
PHP-Code:
foreach($_POST[deinarray] AS $key => $val) {
$tmpsql .= "$key = '$val',";

Stuck Mojo ist offline   Mit Zitat antworten
Alt 23.08.2002, 17:31   #13
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Jo, habs getestet und es funktioniert wunderbar soweit ... es hat aber einen kleinen Nachteil - die Daten können nicht weiter "manipuliert" werden.

Beispiel: wenn ich drei Felder habe für ein Geburtsdatum, und ich es nach dem Submit kombinieren und in ein Feld schreiben will, könnte ich das mit dieser "automatischen" Variante vergessen.

Nun, danke dennoch - diese Schleife ist recht nützlich
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 23.08.2002, 17:36   #14
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Du kannst doch deine Felder vor der Schleife bearbeiten... bzw das Array manipulieren... und dann die Schleife fahren...
Stuck Mojo ist offline   Mit Zitat antworten
Alt 23.08.2002, 17:43   #15
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Jo, könnte ich ...
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[PHP-MySql] Wozu addslashes() etc. ? [PHP-MySql] Wozu addslashes() etc. ?
« Code Parsen | Leerer Zeilenumbruch »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:39 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37