' teken zorgt voor onverwijderbaar topic

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Terence Hersbach

Terence Hersbach

26/09/2006 10:47:00
Quote Anchor link
foutje van mij..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<a href="'.$_SERVER['PHP_SELF'].'?show=del&id='.$row['id'].'" onClick="return confirm(\'Wilt u '.$row['titel'].' verwijderen?\');"><img src="../img/icon_delete.jpg" width="32" height="30" border="0" align="center" /></a>';
?>


zo zou die het moeten doen..
 
PHP hulp

PHP hulp

28/11/2024 11:32:04
 
Marije

Marije

26/09/2006 10:52:00
Quote Anchor link
:)
het wordt steeds vreemder. titels verwijderen zonder ' geeft hij wel een melding.. titels met dus niet... maar heb ook een javascript error on page ")" expected...

als er geen ' in staat verwijderd hij hem direct.

ik probeer zelf ook nog even wat :)
 
Jan Koehoorn

Jan Koehoorn

26/09/2006 11:00:00
Quote Anchor link
Die JavaScript error heeft te maken met die enkele quote in je topictitel. In JavaScript moet je binnen strings altijd escapen, of het nu enkele of dubbele quotes zijn. Haal maar eens addslashes over je topictitel heen voordat je hem naar je JavaScript stuurt.
 
Marije

Marije

26/09/2006 11:03:00
Quote Anchor link
uuh hehe dat wil ik wel.. maar addslashes over mijn topictitel halen is niet iets wat ik dagelijk doe ;)

maw, wat bedoel je precies? ikke = noob he :o)
 
Terence Hersbach

Terence Hersbach

26/09/2006 11:14:00
Quote Anchor link
@jan, hij heeft die slashes er als het goed is al in staan, want voordat hij het naar de db stuurt, doet hij al mysql_real_escape_string();

(is het zelfde als addslashes();)
 
Marije

Marije

26/09/2006 11:18:00
Quote Anchor link
ooh dat :)
 
Jan Koehoorn

Jan Koehoorn

26/09/2006 11:50:00
Quote Anchor link
Terence:
@jan, hij heeft die slashes er als het goed is al in staan, want voordat hij het naar de db stuurt, doet hij al mysql_real_escape_string();

(is het zelfde als addslashes();)

En die slashes haalt MySQL er keurig uit tijdens het opslaan. Zodra het uit de DB rolt is het weer zonder slashes.
 
Marije

Marije

26/09/2006 11:54:00
Quote Anchor link
dus dat doe ik niet verkeerd? :)
volgens mij is het echt het stukje JS hoor. want als ik dat weghaal kan ik gewoon verwijderen
 
Terence Hersbach

Terence Hersbach

26/09/2006 12:29:00
Quote Anchor link
Welk stukje javascript bedoel je? dat in de link dat ik jou gegeven heb of je eigen stukje?
 
Michael -

Michael -

26/09/2006 12:52:00
Quote Anchor link
Zoals jan zegt, de data wordt met slashes in de database gestopt, maar komt zonder slashes uit de database. Dus wel even addslashes gebruiken!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$topictitel
= addslashes($row['titel']);
?>


en dan die $topictitel in je JS gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Michael -
 
Marije

Marije

26/09/2006 12:55:00
Quote Anchor link
idd, Jan je had helemaal gelijk.

Het was het gebrek aan addslashes. Het werk! Bedankt allen!


zo heb ik het nu werkend :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?

echo "<a href=\"javascript:askConfirm('Wilt u ".str_replace("'", "\'", $row['titel'])." verwijderen?','$PHP_SELF?show=del&id=$row[id]');\"><center><img src=\"../img/icon_delete.jpg\" width=\"32\" height=\"30\" border=\"0\"></center></a>";

?>
 
Martijn B

Martijn B

26/09/2006 13:00:00
Quote Anchor link
@SanThe:
SanThe:
Tussen enkele quotes heeft escapen geen effect.
Maak je query met dubbele quotes met daarin enkele quotes om de 'strings'.

Dus:
$sql = 'INSERT INTO nieuws (id, ..... files) VALUES (\'\', \'' . mysql_real_escape_string(......
wordt:
$sql = "INSERT INTO nieuws (id, ..... files) VALUES ('', '" . mysql_real_escape_string(......


Dit moet je mij eens even uitleggen.

Naar mijn idee is een single-quoted string prima geschikt om een query mee op te bouwen.
Deze string neemt immers alle karakters/tekens letterlijk. (o.a. speciale tekens zoals \n worden niet als enter gezien), dit maakt het interpreteren door PHP ook weer eens iets sneller.

De functies mysql_escape_string en mysql_real_escape_string escapen zowel een enkele als een dubbele quote.

Dus ik zie het probleem hierin niet...

Uiteraard snap ik dan wel dat je waardes tussen single-quotes moet gaan escapen maar dat maakt mij niet zoveel uit. In een goede query zitten alle waardes (van variabelen) zowel integer als string tussen single-quotes.

Ik ben benieuwd naar je argumenten ;D
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
- SanThe -

- SanThe -

26/09/2006 13:14:00
Quote Anchor link
Martijn!:
Deze string neemt immers alle karakters/tekens letterlijk. (o.a. speciale tekens zoals \n worden niet als enter gezien)

Dus \' wordt ook niet als ' gezien in bijvoorbeeld '... SET bla = \'tekst\' ... '
 
Martijn B

Martijn B

26/09/2006 13:40:00
Quote Anchor link
Ik zie het nog steeds niet sorry.

Ik heb snel even een voorbeeldje
gemaakt en dit op:

- Apache2
- PHP 4.4.4
- MySQL - 5.0.24a


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
    error_reporting(E_ALL);
    
    /*
CREATE TABLE `tabel` (
`kolom1` VARCHAR( 255 ) NOT NULL ,
`kolom2` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;    
    */

    
    $rLinkID = mysql_connect('localhost', 'root');
    mysql_select_db('test');
    
    if( $rLinkID === false )
    {

        die('HooHoo: dat ging mis!');
    }

        
    $sWaarde1 = 'waa"rde1';
    $sWaarde2 = "waa'rde2";
    
    $sQry = 'INSERT INTO tabel' .
            ' VALUES( ' .
            '\'' . mysql_real_escape_string($sWaarde1) . '\',' .
            '\'' . mysql_real_escape_string($sWaarde2) . '\' )';
    
    echo $sQry;
    
    $rQuery = mysql_query($sQry);

    if( $rQuery === false )
    {

        die('HooHoo: dat ging mis!');
    }

    
    $sQry = 'SELECT * FROM tabel';
    
    $rQuery = mysql_query($sQry);
    
    if( $rQuery === false )
    {

        die('HooHoo: dat ging mis!');
    }

    
    while( $mRow = mysql_fetch_assoc($rQuery) )
    {

        print_r($mRow);
    }

        
    mysql_close($rLinkID);
?>
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 

Pagina: « vorige 1 2



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.