Linebreaks & escape_query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rogier de Vries

Rogier de Vries

23/06/2013 02:48:37
Quote Anchor link
Beste allemaal,

dit is mijn eerste post en ik moet eerlijk zeggen dat ik me ook heb geregistreerd om deze te stellen.

Ik heb mezelf een tijdje terug op een blauwe maandag PHP geleerd via internet.
Ik kan naar mijn mening al aardig goed programmeren, maar soms loop ik tegen een probleempje aan, zoals nu om half 3 's nachts. Normaal google ik dan en vind ik zo een oplossing, maar nu niet. Ik hoop dan ook dat jullie mij uit de brand kunnen helpen.
Het probleem is als volgt:
Ik heb een form gemaakt in html en php (?action=register) waarvoor de code wordt geinclude vanuit form.inc.php , deze wordt gesubmit naar ?action=submit waar de $_POST variabelen worden gecontroleerd middels een include van submit.inc.php. De variabelen worden door de functies strip_tags en mysqli_real_escape_string gehaald en op bepaalde kenmerken gecontroleerd. Als een veriabele niet aan de voorwaarden voldoet, wordt in ?action=submit het forum weer tevoorschijn gehaald, en worden de waarden die ingevuld waren teruggezet via echo $variabele . Echter, in de text area worden de linebreaks daar als \r\n neergezet in de browser. Het vreemde is dat voordat er gesubmit wordt, dus op ?action=register, ik een standaardwaarde uit een variabele haal waar ik ook \r\n gebruik voor de linebreak, en dan werkt het wel.
Ik vermoed dus dat het iets met de escape_string te maken heeft, maar weet niet wat.
Heb ik een functie nodig waar ik niet mee bekend ben om dit op te lossen?

Alvast bedankt!

Server draait hier thuis onder Debian 6 met Apache 2 ; uit phpinfo():
Linux debian 2.6.32-5-amd64 #1 SMP Mon Feb 25 00:26:11 UTC 2013 x86_64
Apache/2.2.16 (Debian)
 
PHP hulp

PHP hulp

20/12/2024 20:03:24
 
Ward van der Put
Moderator

Ward van der Put

23/06/2013 12:10:44
Quote Anchor link
Rogier de Vries op 23/06/2013 02:48:37:
De variabelen worden door de functies strip_tags en mysqli_real_escape_string gehaald en op bepaalde kenmerken gecontroleerd. Als een variabele niet aan de voorwaarden voldoet, wordt in ?action=submit het forum weer tevoorschijn gehaald, en worden de waarden die ingevuld waren teruggezet via echo $variabele . Echter, in de text area worden de linebreaks daar als \r\n neergezet in de browser.

Voer je ook een query uit als een variabele niet aan alle voorwaarden voldoet?

Probeer HTML en SQL meer gescheiden te houden. Gebruik mysqli_real_escape_string() voor de SQL-expressie die je wilt gaan uitvoeren, niet voor de HTML-weergave van ingevoerde tekst.
 
Rogier de Vries

Rogier de Vries

23/06/2013 13:25:38
Quote Anchor link
Bedankt voor je reactie.
Neem de query wordt niet uitgevoerd wanneer de waarden teruggezet worden.

Ik heb een functie gemaakt, heel simpel, die de string voorbereid op de sql-query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function fixstring($string,$max,$connect){
        $count = strlen($string);
        $string = mysqli_real_escape_string($connect, strip_tags($string));
        if ($count > $max){
        $string = substr($string,0,$max -1);}
        return $string;
        }

?>



Ik snap je punt over het scheiden van code, maar als ik die string straks weer uit mijn database haal, heb ik waarschijnlijk nog steeds dit probleem, of wordt dit dan verholpen daar een fetch functie?

Toevoeging op 23/06/2013 13:57:01:

Ik zie nu ook een fout staan, regel 3 en 4 van de functie heb ik even omgedraaid.
Gewijzigd op 23/06/2013 13:31:07 door Rogier de Vries
 



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.