Template-System: Markierung von " verhindern
Bastian Schnitzler
- php
Hallo!
Ich habe ein Template-System mit php programmiert, mit dem man .php-Dateien aus dem Browser heraus editieren kann. In einem Textfeld in einem Formular kann man den Inhalt der Datei aendern. Der Inhalt dieser Textfelds wir dann per post weitervermittelt und dann in die betreffende .php-Datei geschrieben. Das Problem ist nun, dass die php-Datei " und " enthaelt, die bei der Zuweisung in der Post-Variable automatisch von php maskiert werden. So wird aus dem " ein " und aus dem " logischerweise ein \". Da die .php-Datein so unbrauchbar werden, will ich diese Markierung rueckgaengig machen. An ein einfaches Ersetzen ist nicht zu denken, da ich zuerst ein \" zu einem " veraendern wuerde, was dann im zweiten Veraenderungsvorgang zu " veraendert wuerde. Wenn ichs andersherum machen wuerde, also zuerst " zu " und danach \" zu " wuerdes gehen, was mir erst jetzt auffaellt. Da ich mir jetzt soviel Muehe mit dem Schreiben gemacht habe, poste ich es jetzt, obwohls ein bissl Spam ist, aber vielleicht hilfts ja nochmal anderen.
Son Mist,
euer Basti
Aber wie kann ich zb. " in einer Datei replacen mit einem ", muss ich die in der Suchanfrage dann maskieren, so zb. um " mit " zu replacen, muesste ich als Suchmuster und Ersetzmuster "\" und """ verwenden?
Oder kann man hier ascii-codes verwenden? Wie loese ich das Problem?
Hello,
Die Erstzung sollte auf jeden Fall vor dem Wegscheiben stattfinden.
Zum Speichern in Datenbanken muss aber eine spezielle Maskierung vorher stattfinden, wenn Dir die DB lieb ist.
Lies Dir dazu bitte alles zum Thema get_magic_quotes_gpc() durch und rundherum...
http://de2.php.net/manual/en/function.get-magic-quotes-gpc.php
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Wills ja garnicht in ne Datenbank schreiben.
Also mit Replacen gehts nicht, hab die Loesung gefunden, nennt sich stripslashes
Hallo Basti!
Wills ja garnicht in ne Datenbank schreiben.
Also mit Replacen gehts nicht, hab die Loesung gefunden, nennt sich stripslashes
strpslashes() tut es auch, bsw. habe ich mir direkt die php.ini editiert (http://de3.php.net/manual/de/ref.info.php#ini.magic-quotes-gpc) - ob Du das auch in Deinem webspace machen darfst, weiß ich nicht.
M. E. ist es in Fällen, wenn php nicht mit --with-config-file-scan-dir übersetzt wurde und einem die Rechte fehlen die zentrale php.ini zu editieren, sauberer einzelne Dateien mit ini_set() auf eine Konfiguration festzusetzen, als angelieferte Variablen erst umzuforem, um sie dann wieder zurückzuformen.
Ich kann Dir Toms Rat sich mit get_magic_quotes_gpc() und insgesamt mit http://de2.php.net/manual/en/ref.info.php zu beschäftigen nur wärmstens ans Herz legen. Vieles kann man sich ersparen, wenn man PHP konfiguriert, statt verseumte Konfigurationen durch Funktionen nachzuahmen.
Gruß aus Berlin!
eddi
Hello Eddi,
Ich kann Dir Toms Rat sich mit get_magic_quotes_gpc() und insgesamt mit http://de2.php.net/manual/en/ref.info.php zu beschäftigen nur wärmstens ans Herz legen. Vieles kann man sich ersparen, wenn man PHP konfiguriert, statt verseumte Konfigurationen durch Funktionen nachzuahmen.
magic_quotes_gpc kann man aber nicht mehr im Script einstellen, bzw. nützt das dann nichts mehr, da die GPC-Variablen bereits aus dem Environment des Scriptes erzeugt wurden, wenn die Kontrolle an das Script übergeben wird. Man kann das aber sicher in den VirtHosts oder aber in einer .htaccess einstellen, wenn man die Rechte dafür besitzt.
Leider weiß ich nicht, welche Direktive in der Apache-Konfiguration für "php_value" und "php_admin_value" und "php_flag" und "php_admin_flag" gesetzt sein muss, damit die Änderung durchgeführt wreden darf. Ich habe erst auf AllowOverride ... getippt, aber das "..." konnte ich
nicht finden http://httpd.apache.org/docs-2.0/mod/core.html#allowoverride und wie man im Apache-Manual richtig sucht, ist mir auch schleierhaft. Vielleicht findest Du es raus.
(dann mach mal Piep)
Es ist sicherlich günstig, wenn das Script ohne Backslashes arbeiten soll und kann (Dann immer selbst an die System- und Datenbankschnittstellen denken!) eine universelle rekursive Funktion auf die Globalen Arrays anzusetzen, die die Backslashes wieder entfernt, wenn magic_quotes_gpc doch eingeschaltet sein sollte.
#--------------------------------------------------------------------
function strip($_data) ## entfernt rekursiv die Backslashes aus dem Array $_data
{
if (!get_magic_quotes_gpc())
{
return $_data;
}
if (is_array($_data))
{
foreach($_data as $key => $val)
{
$_data[$key] = strip($val);
}
}
else
{
$_data = stripslashes($_data);
}
return $_data;
}
#--------------------------------------------------------------------
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Leider weiß ich nicht, welche Direktive in der Apache-Konfiguration für "php_value" und "php_admin_value" und "php_flag" und "php_admin_flag" gesetzt sein muss, damit die Änderung durchgeführt wreden darf. Ich habe erst auf AllowOverride ... getippt, aber das "..." konnte ich
nicht finden http://httpd.apache.org/docs-2.0/mod/core.html#allowoverride und wie man im Apache-Manual richtig sucht, ist mir auch schleierhaft. Vielleicht findest Du es raus.
An anderer Stelle fand ich den Vermerk, dass "AllowOverride Options" gesetzt sein muss. Im Apache-Manual konnte ich das aber nicht verifizieren. Und Ausprobieren ist kein vollständiger Beweis, sondern nur ein Indiz.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Guten Morgen :)
Ich kann Dir Toms Rat sich mit get_magic_quotes_gpc() und insgesamt mit http://de2.php.net/manual/en/ref.info.php zu beschäftigen nur wärmstens ans Herz legen. Vieles kann man sich ersparen, wenn man PHP konfiguriert, statt verseumte Konfigurationen durch Funktionen nachzuahmen.
magic_quotes_gpc kann man aber nicht mehr im Script einstellen, bzw. nützt das dann nichts mehr, da die GPC-Variablen bereits aus dem Environment des Scriptes erzeugt wurden, wenn die Kontrolle an das Script übergeben wird. Man kann das aber sicher in den VirtHosts oder aber in einer .htaccess einstellen, wenn man die Rechte dafür besitzt.
Da habe ich offengestanden im Moment nicht den Schimmer von, ob PHP nicht erst das angeforderte Script einließt, dann die $ENV nach konfiguration umwandelt und den Steuerfluß interpretieren und abarbeitet.
Möglich wäre es. Nur Sinn macht es dann nicht PHP mit einer Funktion ini_set() auszustatten. Daher will ich, um diesen Punkt durch vielleicht eine Dritte Partei abklären zu lassen mal sagen, dagegenhalten.
Leider weiß ich nicht, welche Direktive in der Apache-Konfiguration für "php_value" und "php_admin_value" und "php_flag" und "php_admin_flag" gesetzt sein muss, damit die Änderung durchgeführt wreden darf. Ich habe erst auf AllowOverride ... getippt, aber das "..." konnte ich
nicht finden http://httpd.apache.org/docs-2.0/mod/core.html#allowoverride und wie man im Apache-Manual richtig sucht, ist mir auch schleierhaft. Vielleicht findest Du es raus.
PHP mit httpd.conf und .htaccess zu konfiguieren - da bin ich kein Fan von! Da ist es mir wichtiger, das ich ein PHP mit --with-config-file-scan-dir vor mir habe und ich .htacces-gleich feintunig Für jedes Verzeichnis betreiben kann.
Gruß aus Berlin!
eddi
Hello,
magic_quotes_gpc kann man aber nicht mehr im Script einstellen, bzw. nützt das dann nichts mehr, da die GPC-Variablen bereits aus dem Environment des Scriptes erzeugt wurden, wenn die Kontrolle an das Script übergeben wird. Man kann das aber sicher in den VirtHosts oder aber in einer .htaccess einstellen, wenn man die Rechte dafür besitzt.
Da habe ich offengestanden im Moment nicht den Schimmer von, ob PHP nicht erst das angeforderte Script einließt, dann die $ENV nach konfiguration umwandelt und den Steuerfluß interpretieren und abarbeitet.
Möglich wäre es. Nur Sinn macht es dann nicht PHP mit einer Funktion ini_set() auszustatten. Daher will ich, um diesen Punkt durch vielleicht eine Dritte Partei abklären zu lassen mal sagen, dagegenhalten.
Es ist laut Manual auch gar nicht erlaubt:
magic_quotes_gpc "1" PHP_INI_PERDIR
PHP_INI_PERDIR 2 Entry can be set in php.ini, .htaccess or httpd.conf
siehe: http://de.php.net/manual/en/function.ini-set.php
Außerdem kannst DU es nun noch ausprobiren, ob es nicht trotzdem funktioniert.
ICH habe es schon ausprobiert. Bei 4.3.1. und 4.3.8. ist es definitiv verboten.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Es ist laut Manual auch gar nicht erlaubt:
magic_quotes_gpc "1" PHP_INI_PERDIR
PHP_INI_PERDIR 2 Entry can be set in php.ini, .htaccess or httpd.conf
jetzt ist auch bei mir der Groschen gefallen. Gut ini_set() ist in dem Fall Quatsch! Da waren mal wieder die Finger bei mir schneller als der Blick ins Manual :\ Danke für die Aufklärung ;)
Gruß aus Berlin!
eddi
Hello,
Es ist laut Manual auch gar nicht erlaubt:
magic_quotes_gpc "1" PHP_INI_PERDIR
PHP_INI_PERDIR 2 Entry can be set in php.ini, .htaccess or httpd.conf
jetzt ist auch bei mir der Groschen gefallen. Gut ini_set() ist in dem Fall Quatsch! Da waren mal wieder die Finger bei mir schneller als der Blick ins Manual :\ Danke für die Aufklärung ;)
Da nicht für...
Aber hast Du es denn wenigstens bei vollem Error-Reporting mal ausprobiert? Man weiß ja nie *gg*
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Da nicht für...
Aber hast Du es denn wenigstens bei vollem Error-Reporting mal ausprobiert? Man weiß ja nie *gg*
Ja wie denn? [heul]
Am Rechner nebenan leuft erst ./configure durch - und das diese Woche schon das X-te mal
Gruß aus Berlin!
eddi
Hello,
Aber hast Du es denn wenigstens bei vollem Error-Reporting mal ausprobiert? Man weiß ja nie *gg*
Ja wie denn? [heul]
Am Rechner nebenan leuft erst ./configure durch - und das diese Woche schon das X-te mal
Das hatte ich hier vorletzte Woche. Meistens geht doch irgendwas schief, weil man das ja nicht unbedingt jeden Tag übt. Aber einmal muss ich noch ran:
Neuer Apache mit PHP 5.0.0. und MySQL 4.?? und irgend ein stabiles Linux darunter. Welche Kombi würdest DU mir den vorschlagen?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Du wirst mich vermutlich steinigen. Aber ich baue mir das ganz sachte an einem PIII 500 auf einer SuSE 9.1 zusammen. Erst hatte ich versucht Debian drüberzuziehen, aber das hat mir ganz schnell eins drübergezogen und dann habe es auch dabei bewenden lassen.
Den letzten Server hatte ich mir gestern Nacht zerschossen (da im Frußt gelöscht), weil ich, wie ich später noch mal drüber nachgedacht habe, einfach dem wwwrun vergessen habe Rechte zu verteilen. (Ja schade auch :\ )
Ich habe mir paralel verschiedene Konfigurationen vom Server gebaut (mal mit fest einkompilierten Sätzen mal ohne) um sie dann gegeneinader testen zu können. Dabei hat mir die config.layout sehr geholfen und kann auch nur empfelen dies selbst zu editieren.
Bei der Installation der SuSE habe ich mir ein Laufwerk als /server mounten lassen, auf dem ich die Packete stückweise eintpacke und allesamt nicht von SuSE entlehne. Teilweise gibt es wesentlich neuere Biblioteken, um PHP zu speisen.
Sollte mir SuSE dann doch 'ne Nummer zu bequem werden und ich mich wieder mit dem gedanken herrumplage, eine andere Diestribution drüberzuziehen, dann sind die Server davon unberührt, da ich nichts in die "öffentlichen" Verzeichnisse gesteckt habe.
Ich denke, um auf Deine ursprüngliche Frage zurückzukommen, das es in dieser Variation völlig egal ist, welches Linux Du nutzen magst.
Dann erlaube ich mir noch einen selbstmoderierten Thread als Verweis anzugeben *fg* http://forum.de.selfhtml.org/archiv/2004/8/t87280/
Gruß aus Berlin!
eddi
Moin!
Neuer Apache mit PHP 5.0.0. und MySQL 4.?? und irgend ein stabiles Linux darunter. Welche Kombi würdest DU mir den vorschlagen?
MySQL 4 - kaufst du denn dafür auch eine Lizenz ein?
- Sven Rautenberg
Hello,
Neuer Apache mit PHP 5.0.0. und MySQL 4.?? und irgend ein stabiles Linux darunter. Welche Kombi würdest DU mir den vorschlagen?
MySQL 4 - kaufst du denn dafür auch eine Lizenz ein?
Da gab es doch neulich den interessanten Artikel, dass man das immer noich nicht muss. Da ich es ja nicht mit meinen Scripten zusammen ausliefere...
Wenn der Kunde es sich besorgt, ist das seine Sache.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin!
MySQL 4 - kaufst du denn dafür auch eine Lizenz ein?
Da gab es doch neulich den interessanten Artikel, dass man das immer noich nicht muss. Da ich es ja nicht mit meinen Scripten zusammen ausliefere...
Du setzt doch aber MySQL ein, damit du diese Skripte erstellen kannst.
Wenn der Kunde es sich besorgt, ist das seine Sache.
Das ist soweit richtig. Der Kunde bräuchte auch eine Lizenz.
- Sven Rautenberg
Hello,
MySQL 4 - kaufst du denn dafür auch eine Lizenz ein?
Da gab es doch neulich den interessanten Artikel, dass man das immer noich nicht muss. Da ich es ja nicht mit meinen Scripten zusammen ausliefere...
Du setzt doch aber MySQL ein, damit du diese Skripte erstellen kannst.
Wenn der Kunde es sich besorgt, ist das seine Sache.
Das ist soweit richtig. Der Kunde bräuchte auch eine Lizenz.
Bisher nicht. Leider habe ich den Link verloren.
Auf welche Passage in deren Lizenz beziehst Du dich?
Sollte der Einsatz zum Programmieruen und/oder die Nutzung nun Geld kosten, dann werde ich eben wechseln. Die fehlende Transaktionssteuerung, etc. stören mich sowieso.
Werde ich wieder zu Informix zurückwechseln. Da sind die Lizenzkosten für die Linux-Version vertretbar. (ca. 80 Euro) Als Intranetversion zahlt man dann nochmal was für jeden Requester. Aber das auch vertretbar.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
MySQL 4 - kaufst du denn dafür auch eine Lizenz ein?
Da gab es doch neulich den interessanten Artikel, dass man das immer noich nicht muss. Da ich es ja nicht mit meinen Scripten zusammen ausliefere...
Du setzt doch aber MySQL ein, damit du diese Skripte erstellen kannst.
Wenn der Kunde es sich besorgt, ist das seine Sache.
Das ist soweit richtig. Der Kunde bräuchte auch eine Lizenz.
http://www.mysql.com/products/licensing/opensource-license.html
Hast Du in dem Thread hier im Forum nicht mitdiskutiert? Ich ahbe ihn mir leider nicht bookmarked.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin!
Das ist soweit richtig. Der Kunde bräuchte auch eine Lizenz.
http://www.mysql.com/products/licensing/opensource-license.html
Veröffentlichst du deine Applikationen unter einer GPL-kompatiblen Lizenz? Wo kann ich mir die Applikationen denn runterladen?
Ohne GPL-Lizenz deiner Applikation ist es irgendwie sehr wahrscheinlich, dass du die kommerzielle Lizenz brauchst: http://www.mysql.com/products/licensing/commercial-license.html
Hast Du in dem Thread hier im Forum nicht mitdiskutiert? Ich ahbe ihn mir leider nicht bookmarked.
Wir haben doch eine Suche, oder?
- Sven Rautenberg
Hello,
Das ist soweit richtig. Der Kunde bräuchte auch eine Lizenz.
http://www.mysql.com/products/licensing/opensource-license.html
Veröffentlichst du deine Applikationen unter einer GPL-kompatiblen Lizenz? Wo kann ich mir die Applikationen denn runterladen?
Ohne GPL-Lizenz deiner Applikation ist es irgendwie sehr wahrscheinlich, dass du die kommerzielle Lizenz brauchst: http://www.mysql.com/products/licensing/commercial-license.html
Hast Du in dem Thread hier im Forum nicht mitdiskutiert? Ich habe ihn mir leider nicht bookmarked.
Wir haben doch eine Suche, oder?
Du bist wohl jetzt bei MySQL beschäftigt, oder? ;-)
gesucht habe ich diesen Artikel: http://blog.koehntopp.de/archives/206_MySQL+und+die+Lizenzen.html
und ihn in http://forum.de.selfhtml.org/archiv/2004/8/87056/#m516465
wiedergefunden.
http://www.mysql.com/products/licensing/opensource-license.html
Free use for those who never copy, modify or distribute. As long as you never distribute (internally or externally) the MySQL Software in any way, you are free to use it for powering your application, irrespective of whether your application is under GPL license or not.
Ich denke, da werde ich nun doch mal Informix updaten. Die Version ist auch schon zu alt.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
http://www.mysql.com/products/licensing/opensource-license.html
Free use for those who never copy, modify or distribute. As long as you never distribute (internally or externally) the MySQL Software in any way, you are free to use it for powering your application, irrespective of whether your application is under GPL license or not.
Jetzt fragt sich aber, was »distribute« bedeutet: http://www.mysql.com/products/licensing/commercial-license.html definiert das so:
»Typical examples of MySQL distribution include: (...) Selling software that requires customers to install MySQL themselves on their own machines. (...) If you develop and distribute a commercial application and as part of utilizing your application, the end-user must download a copy of MySQL; for each derivative work, you (or, in some cases, your end-user) need a commercial license for the MySQL server and/or MySQL client libraries.«
Wenn ich also drei Scripte schreibe, die über die gängigen Schnittstellen auf einen MySQL-Server zugreifen (z.B. PHP), und diese unter einer anderne Lizenz als GPL verkaufe, bräuchte ich, wenn ich es richtig verstehe, eine Lizenz (und jeder, der die Scripte einsetzt, anscheinend ebenfalls).
Sehe ich das richtig?
Mathias
Hello,
Wenn ich also drei Scripte schreibe, die über die gängigen Schnittstellen auf einen MySQL-Server zugreifen (z.B. PHP), und diese unter einer anderne Lizenz als GPL verkaufe, bräuchte ich, wenn ich es richtig verstehe, eine Lizenz (und jeder, der die Scripte einsetzt, anscheinend ebenfalls).
Sehe ich das richtig?
Ich befürchte, dass die das so durchsetzen wollen. Ob das allerdings so rechtens ist und nicht sogar sittenwidrig, das will ich doch noch genauer wissen. Da wird es bestimmt irgendwann wieder ein paar schlaue Artikel bei Heise oder in der Kompjuta-Blöd geben.
Die 3er-Versionen betrifft das ja wohl noch nicht. Bevor ich die 4er einsetzen könnte, müsste ich sowieso erst die gesamte Rechteverwaltung neu schreiben, da die bei 4 anders funktioniert. Dazu habe ich im Moment sowieso keine Zeit.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom