comment loopt buiten TD

Overzicht Reageren

Direct weten hoe jij ervoor staat in de arbeidsmarkt?
Sam H

Sam H

27/07/2012 16:18:10
Quote Anchor link
Hallo,

ik heb net een stukje geschreven dat de user de mogelijkheid biedt om een comment te plaatsen over een bepaalde file.
Dit komt in de database terecht. Hiervoor gebruik ik ook de nl2br() functie om de linebreaks te behouden.

Nu echt als de user een hele lange zin ingeeft, en ik roep deze daarna op in mijn tabel, dan blijft deze tabel super ver doorlopen tot buiten het scherm. Ik heb nu ook al <table style="table-layout:fixed"> gebruikt, en nu blijft de 'layout' van de tabel staan maar loopt de tekst hier gewoon buiten. Hoe kan ik dit verhelpen dat er dus automatisch een nieuwe lijn gestart wordt als de 'comment' niet binnen de <td> past.


hier kan de user een comment schrijven:

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

<form id="contactForm" method="POST" action="file.php?id=<?php echo $id; ?>">
<
table id="contactForm">    <tr><td><textarea name="comment" rows="2"></textarea></td></tr>
                        <
tr><td><input type="submit" name="reageer" value="Reageer">
<
/table>
<
/form>

?>



zo haal ik de info op en stop het in de database:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if (isset($_POST['reageer']))
{

    $comment = nl2br($_POST['comment']);
    $dat = date('y-m-d');
    
    mysql_query("INSERT INTO comments (id, username, comment, file_id, date) VALUES (NULL, '$username', '$comment', '$id', '$dat')");
}

?>


zo laat ik de comments zien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$result
= mysql_query("SELECT * FROM comments WHERE file_id = '$id' ORDER BY id DESC");

while($row = mysql_fetch_array($result))
{

    
    echo'    <table id="courses" style="table-layout:fixed">    
                        <tr class="alt"><th width="18%">Door: '
.$row['username'].'</td>
            <td class="alt"rowspan="2">'
.$row['comment'].'</td></tr>
            <tr class="alt"><th>Op: '
.$row['date'].'</td></tr></table>';
}

?>
Gewijzigd op 27/07/2012 16:23:30 door Sam H
 
PHP hulp

PHP hulp

23/05/2013 03:57:52
 
Reshad F
Redacteur

Reshad F

27/07/2012 16:18:58
Quote Anchor link
als ik vragen mag.. waarom gebruik je tabellen om tekst weer te geven?
 
Sam H

Sam H

27/07/2012 16:20:40
Quote Anchor link
Ik vind het een makkelijke manier van werken, links in 2 kolommetjes Naam en Datum, rechts de tekst
Gewijzigd op 27/07/2012 16:23:38 door Sam H
 
Eddy E

Eddy E

27/07/2012 16:31:14
Quote Anchor link
Kijk eens naar <label>.

Weet dat je query heel lek is.
Type voor de fijn eens dit in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
bla'; DROP TABLE comments;


Welke CSS heb je op je td.alt? Daar moet geen overflow: hidden; op staan.
 
Reshad F
Redacteur

Reshad F

27/07/2012 16:37:00
Quote Anchor link
makkelijk is niet correct... ( just sayin' )

gebruik fetch_assoc ipv array..

gebruik geen * wildcards..

simpel gezegd.. : http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
 
Sam H

Sam H

27/07/2012 17:21:05
Quote Anchor link
Ah oke had ik geen idee van, waarom is het dan zo lek?

en dit is de css:

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
#courses
{
    font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
    width:100%;
    border-collapse:collapse;
    margin: 20px 20px 10px 20px;
}
#courses td, #courses th
{
    font-size:1em;
    border:0px solid #6DCDF1;
    padding:3px 7px 2px 7px;
}
#courses th
{
    font-size:1.1em;
    text-align:left;
    padding-top:5px;
    padding-bottom:4px;
    background-color:#ea4c88;
    color:#ffffff;
}
#courses tr.alt td
{
    color:#000000;
    background-color:#BDE3F1;
}
Gewijzigd op 27/07/2012 17:21:27 door Sam H
 
Bart V B

Bart V B

27/07/2012 17:49:51
Quote Anchor link
Quote:
Ah oke had ik geen idee van, waarom is het dan zo lek?


Omdat je nu een sql injection kan uitvoeren..

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
<?php
 mysql_query("INSERT INTO comments (id,
                                    username,
                                    comment,
                                    file_id, date
                                   )
                                   VALUES (NULL,
                                           '"
.mysql_real_escape_string($username)."',
                                           '"
.mysql_real_escape_string($comment)."',
                                           '"
.mysql_real_escape_string($id)."',
                                           '"
.mysql_real_escape_string($dat)."'
                                           )
                                    "
);
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$result
= mysql_query("SELECT * FROM comments WHERE file_id = '".mysql_real_escape_string($id)."' ORDER BY id DESC");
?>
 
Sam H

Sam H

27/07/2012 18:02:22
Quote Anchor link
Ah ok omdat ik tekens als ' kan ingeven, kan ik de comment dan ook niet best beveiligen met htmlspecialchars() ?
 
Bart V B

Bart V B

27/07/2012 18:06:05
Quote Anchor link
Ik geef je toch een correcte oplossing erbij waardoor sql injection niet meer mogelijk is? en ja je mag htmlspecialchars() er nog omheen bouwen. :)
 
Sam H

Sam H

27/07/2012 18:19:19
Quote Anchor link
Ja daar zei ik toch niks slecht van? :D
Bedankt trouwens voor je hulp!
 



Overzicht Reageren