Probleem met vervangen php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper De Moor

Jasper De Moor

16/04/2014 20:17:41
Quote Anchor link
Hallo iedereen,

Ik heb een vraagje over vervangen dus ik wil ' vervangen door \' omdat dat een bug fixed die je krijgt met text editors en zonder dit wat ik hier nu vraag

Vriendelijke groet,
Jasper De Moor,
Gewijzigd op 16/04/2014 20:25:01 door Jasper De Moor
 
PHP hulp

PHP hulp

04/02/2023 16:09:22
 
- Ariën  -
Beheerder

- Ariën -

16/04/2014 20:41:42
Quote Anchor link
Kan je wat meer vertellen over de opzet waarin het optreedt? Is het data die je in een database opslaat, of ergens anders?
 
Jasper De Moor

Jasper De Moor

16/04/2014 20:44:35
Quote Anchor link
Laat maar kheb het zelf al gevonden was veel makkelijker dan ik dacht :/

Dit was wat ik wou bekomen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
$content=$_POST['reply_content'];
        
        // Order of replacement
        $str     = $content;
        $order   = array("'");
        $replace = "\'";

        // Processes \r\n's first so they aren't converted twice.
        $newstr = str_replace($order, $replace, $str);
        
        $content = $newstr;


Dus het is gefixt :)
Toch dankje
 
Ivo P

Ivo P

16/04/2014 20:48:03
Quote Anchor link
maar de vraag blijft, welk probleem je nu gefixt hebt.

gaat het anders mis bij je database?
Zo ja, dan is het verstandig om de database eigen functies te gebruiken om dit probleem op te lossen.

Bijvoorbeeld mysql_real_escape_string(). Die pakt ook nog andere tekens aan.

En niet elke database lost dit probleem op met een \

Maar goed, pas als je verraadt wat het probleem was...
 
Jasper De Moor

Jasper De Moor

16/04/2014 21:07:52
Quote Anchor link
Het probleem lag bij de php
Dus ik typte dus een text in mijn tiny_mce editor en dan kreeg ik een error dat vanalles niet meer klopte zoals mijn functies om gebruikersnamen enzo te krijgen omdat er een paar dingen kapot waren door de ' in de text.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "INSERT INTO posts (category_id, topic_id, post_creator, post_content, post_date) VALUES ('".$cid."', '".$tid."', '".$creator."', '".$reply_content."', now())"; //dus zoals je ziet gebruik ik '".$reply_content."' en omdat mijn reply content variable zelf een ' bevat was het helemaal kapot =/ het lag dus niet aan de database


Hopelijk versta je mijn probleem nu al beter en kan je eventuele dingen uitleggen die ik misschien over het hoofd zag met deze fix :)
 
- Pepijn  -

- Pepijn -

16/04/2014 21:09:08
Quote Anchor link
Ik begrijp 'm, die "'"s verprutsen Tiny MCE bij mij ook. preg_replace doet wonderen!
 
Jasper De Moor

Jasper De Moor

16/04/2014 21:13:28
Quote Anchor link
idd :)
 
Ivo P

Ivo P

16/04/2014 21:15:38
Quote Anchor link
dat los je dus zo op:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$sql
= "INSERT INTO posts (category_id, topic_id, post_creator, post_content, post_date)
     VALUES ('"
.mysql_real_escape_string($cid)."',
             '"
.mysql_real_escape_string($tid)."',
             '"
.mysql_real_escape_string($creator)."',
             '"
.mysql_real_escape_string($reply_content)."',
              now())"
;

?>


en niet alleen vanwege de reden die je ziet, maar ook omdat mensen hier misbruik van maken:

http://wiki.pfz.nl/sqlinjectie
 
- Pepijn  -

- Pepijn -

16/04/2014 21:17:15
Quote Anchor link
Real escape string doet wonderen!
 
Michael -

Michael -

16/04/2014 21:21:43
Quote Anchor link
Of, zoals al is gezegd, real_escape_string gebruiken.
Ik vind het wel knap van je dat je een simpele str_replace over 6 regels kunt uitstrijken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$content
= str_replace("'", "\'", $_POST['reply_content']);
?>


Versus

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$content
=$_POST['reply_content'];
        
        // Order of replacement
        $str     = $content;
        $order   = array("'");
        $replace = "\'";

        // Processes \r\n's first so they aren't converted twice.
        $newstr = str_replace($order, $replace, $str);
        
        $content = $newstr;
?>
 
Jasper De Moor

Jasper De Moor

16/04/2014 21:41:58
Quote Anchor link
michael ik vond het overzichtelijker in 6 regels maar kga zoals al gezegd dan toch real excape string gebruiken :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.