[php][MySQL] apostrof linux<->windows?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • smaij
  • Registratie: November 2000
  • Laatst online: 10:44
Ik heb een tijdje mijn cms systeem prima laten draaien op zowel linux als windows.
Sinds vandaag krijg ik opeens iets heel raars. Het komt voor in meerdere scripts op de linux server. Lokaal (windows) doet alles het goed

PHP:
1
2
3
4
5
6
7
8
9
10
11
        $Query_get_restore = mysql_query("SELECT * FROM page WHERE PageID = '$id'") or die($mysql_error());
         if (mysql_num_rows($Query_get_restore)){
          $RESTORE = mysql_fetch_array($Query_get_restore);
          $RESTORE_PageID = $RESTORE["PageID"];
          $RESTORE_PageGroupID = $RESTORE["PageGroupID"];
          $RESTORE_Title = $RESTORE["Title"];
          $RESTORE_PageInhoud = $RESTORE["PageInhoud"]; 
          $RESTORE_Date = $RESTORE["Date"];
          mysql_query("INSERT INTO page_restore (PageID, PageGroupID, Title, PageInhoud, Date, Date_Inserted) VALUES ('$RESTORE_PageID','$RESTORE_PageGroupID','$RESTORE_Title','$RESTORE_PageInhoud', '$RESTORE_Date', '$Date_New')") or die(mysql_error());
         }
        $update = mysql_query("UPDATE page SET Title = '$Title_In_Form', PageInhoud = '$PageInhoud_In_Form2', Date = '$Date_New' WHERE PageID = '$id'") or die($mysql_error());


Voordat ik een update uitvoer doe ik een insert in een 'restore' tabel met de huidige inhoud. Nu bevat die inhoud dus een ' en daar krijg ik een error op. Dit terwijl dit vroeger niet zo was. Ik zou dus elk script kunnen uitvoeren met addslashes, maar vroeger werkte het op die linux machine wel :?

phpinfo staat hier

volgens mij zou MySQL toch echt automatisch ' moeten escapen, en toch zeker in dit geval. Hoe kan dit nou opeens niet meer werken?

Ik ben vorige week over gegaan op php_safe_mode maar heb deze voor mijn eigen domeinen natuurlijk wel uitgezet.

Acties:
  • 0 Henk 'm!

Verwijderd

Gebruik altijd addslashes :) en indien je zeker wilt zijn dat er geen html instaat ook htmlspecialchars :) dan weet je zekers dat het altijd goed werkt ;)

Acties:
  • 0 Henk 'm!

  • smaij
  • Registratie: November 2000
  • Laatst online: 10:44
html is toegestaan :) in dit 'oude' content systeem van mij moet het zelfs want omdat ik html aan heb staan (standaard) worden enters niet zomaar herkend.. in mijn nieuwe te bouwen ga ik dit natuurlijk anders doen!

maar gebruik addslashes als argument.. tja. snap ik, maar waarom werkt het sinds vorige week niet meer dan. dat is toch v@@g

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

xtentic:
Gebruik altijd addslashes :)
Euhm nee.. Gebruik geen addslashes wanneer:
[list]• De variabele die je in je query stopt via get, post, env, cookie, etc... binnen komt en je magic_quotes_gpc aan hebt staan
• Je magic_quotes_runtime aan hebt staan
• Je alleen enkele quotes en backslashes wilt escapen. Gebruik dan mysql_escape_string

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

drm schreef op 10 november 2002 @ 15:32:
[...]

Euhm nee.. Gebruik geen addslashes wanneer:
[list]• De variabele die je in je query stopt via get, post, env, cookie, etc... binnen komt en je magic_quotes_gpc aan hebt staan
dat zal addslashes toch wel detecteren neem ik aan?... en zo niet, bij hoeveel servers staat dat wel aan (als je denkt aan public domain scripting, dus scripts voor iedereen)
• Je magic_quotes_runtime aan hebt staan
komt volgens mij in de regelmaat niet vaak voor ;)

[quote]
• Je alleen enkele quotes en backslashes wilt escapen. Gebruik dan mysql_escape_string

is een handige tip, maar doet addslashes dan meer dan dat? :D

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

xtentic:
dat zal addslashes toch wel detecteren neem ik aan?...
Nee. Dat zou ook vreemd zijn, want als ik een addslashes uit wil voeren, moet niet addslashes voor mij gaan bepalen dat ik dat stiekem toch niet uit wil voeren omdat er toevallig een bepaalde configuratie-directive op true staat. Kortom, als ik addslashes aanroep, moet'ie doen wat ik zeg, en verder niet "nadenken" ;)
en zo niet, bij hoeveel servers staat dat wel aan (als je denkt aan public domain scripting, dus scripts voor iedereen)
Da's natuurlijk geen argument. Het probleem is dat het aan kan staan, en dat je er dus rekening mee moet houden.
komt volgens mij in de regelmaat niet vaak voor ;)
idem.
is een handige tip, maar doet addslashes dan meer dan dat? :D

Hm nee, je hebt gelijk. Is was in de veronderstelling dat mysql_escape_string de dubbele quote niet escapet. Maar dat doettie dus wel. :z

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

drm schreef op 10 november 2002 @ 16:53:

[...]


Hm nee, je hebt gelijk. Is was in de veronderstelling dat mysql_escape_string de dubbele quote niet escapet. Maar dat doettie dus wel. :z
hijs fijn O-)

dus't kenmerkende verschil is de " ?

Acties:
  • 0 Henk 'm!

  • smaij
  • Registratie: November 2000
  • Laatst online: 10:44
Er is dus geen verschil tussen die 2? :?

Maar om terug te komen op mijn probleem: waarom in windows wel en in linux ook altijd behalve sinds vanochtend toen ik commentaar kreeg dat het niet meer werkte :?

Acties:
  • 0 Henk 'm!

Verwijderd

weten we niet, maar probeer het eens op onze manieren :)

Acties:
  • 0 Henk 'm!

  • sjokki
  • Registratie: Juli 2002
  • Niet online
Verwijderd schreef op 10 November 2002 @ 16:26:
dat zal addslashes toch wel detecteren neem ik aan?... en zo niet, bij hoeveel servers staat dat wel aan (als je denkt aan public domain scripting, dus scripts voor iedereen)
Je zal het zelf moeten 'detecteren'.
PHP:
1
2
3
4
if (!get_magic_quotes_gpc())
{
   $str = mysql_escape_string($str);
}

Magic_quotes_runtime staat vrijwel nooit aan, maar het is toch verstandig om die uit te zetten met set_magic_quotes_runtime().

Acties:
  • 0 Henk 'm!

  • smaij
  • Registratie: November 2000
  • Laatst online: 10:44
Verwijderd schreef op 10 November 2002 @ 17:37:
weten we niet, maar probeer het eens op onze manieren :)
Inmiddels heb ik het natuurlijk al opgelost met addslashes. Dit omdat het hoge nood is.. maar ik zou toch wel leuk vinden als er een soort van verklaring op kwam.. waarom werkte het eerst wel en nu opeens niet meer :?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Ow TS? als je ff op die phpinfo pagina kijkt zie je het volgende:
magic_quotes_gpc Off Off
magic_quotes_runtime Off Off
Waarschijnlijk hebben ze dat aangepast waardoor je scripts niet meer werken.

Beste manier is en blijft gewoon die van sjokki. Die gebruik ik zelf ook. Zorg bij het maken van je scripts dat je zo onafhankelijk mogelijk van de serverinstellingen werkt. Maak er desnoods een my_addslashes() functie voor.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • smaij
  • Registratie: November 2000
  • Laatst online: 10:44
nouja ze ben ikzelf.. het is mijn eigen server. het enigste wat ik heb gedaan is vorige week php_safe_mode aangezet heb standaard en bij mijn eigen domeinen (en dus niet bij mijn hosters) die weer heb uitgezet.. voorderest niks
Pagina: 1