Forum » Server-Side scripting » Problemen met inbox
PSD BOUTIQUE
Berichten: 657
avatar
Offline Stuur privebericht
Beste,

Ik heb dus een probleempje met de inbox op mijn site. Dat hele script werkt niet naar behoren.

Wat is het probleem?
De enters komen in het bericht met <br>. Daarbij kan ik wel...
Code | Selecteer Alles
minimaliseren
1
[url]http://lala.nl[/url]

... in het forum doen, maar ik kan het niet als link lezen in de PM's.

Wie o wie kan mij hier aub mee helpen.

Script kan worden geplaatst als dat nodig is.


Voorbeeld van het probleem:
http://www.dumpyourphoto.com/files2/43683/shjbe.png




Mvg,
Maks Jorritsma
MJorritsma.nl
20-10-2010 00:33
Dit topic is 230 keer bekeken door 41 verschillende leden
Reacties op: "Problemen met inbox"
1
R. Jipping
Berichten: 1596
avatar
Online Stuur privébericht
Simpelste vraag die hier te stellen staat? Heb je de functie wel toegevoegd bij je prive berichten dus bijvoorbeeld:

ubb($lala['berichten'])
20-10-2010 08:29
Gevallen leider
Berichten: 118
avatar
Offline Stuur privébericht
Dat er <br> in je berichten komt te staan heeft er puur en alleen mee te maken dat je htmlspecialchars, htmlentities of whatever gebruikt nadat je een replacement of nl2br gebruikt op je newlines.
Natuurlijk had je dat zelf al bedacht, maar ik zeg het vast even voor de rest.
20-10-2010 09:00
PSD BOUTIQUE
Berichten: 657
avatar
Offline Stuur privébericht
Code | Selecteer Alles
minimaliseren
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<?php
if(isset($_SESSION['id']) && isset($_SESSION['status']))
{
    if(isset(
$_GET['new']) && is_numeric($_GET['new']))
    {
        
?>
        <div class="content">
        <div class="csubject">Nieuwe bericht</div>
        <?php
        $pm_to        
mysqli_real_escape_string($mysqli$_GET['new']);
        
        if(
$_SERVER['REQUEST_METHOD'] == 'POST')
        {
            
$pm_subject mysqli_real_escape_string($mysqli$_POST['pm_subject']);
            
$pm_message mysqli_real_escape_string($mysqli$_POST['pm_message']);
            
            
$query $mysqli->query("SELECT id FROM users WHERE id='" $pm_to "'");
            
            if(
mysqli_num_rows($query) > 0)
            {
                
$mysqli->query("INSERT INTO messages (pm_from, pm_to, pm_subject, pm_message, pm_unread, pm_date) VALUES ('" $_SESSION['id'] . "','" $pm_to "','" $pm_subject "','" $pm_message "', 0, NOW())");
                
                if(
mysqli_error($mysqli))
                {
                    echo 
'<div class="msg-err">' mysqli_error($mysqli) . '</div>';
                }
                else
                {
                    echo 
'<div class="msg">Uw bericht is succesvol verzonden.</div>';
                }
            }
            else
            {
                echo 
'<div class="msg-err">U kan helaas geen bericht sturen naar een gebruiker die niet bestaat.</div>';
            }
        }
        
        
$getuser $mysqli->query("SELECT * FROM users WHERE id='" $pm_to "'");
        
        if(
mysqli_num_rows($getuser) > 0)
        {
            
$userrow mysqli_fetch_assoc($getuser);
        }
        else
        {
            
$userrow['username'] = 'Onbekend';
        }
        
?>
        <div style="padding: 5px;">
            <form method="post" action="">
            <fieldset>
              <legend>Naar</legend>
              <input type="text" name="pm_to" size="35" disabled="disabled" value="<?php echo htmlspecialchars($userrow['username']); ?>" />
            </fieldset>
            <fieldset>
              <legend>Onderwerp</legend>
              <input type="text" name="pm_subject" size="35" value="<?php echo isset($_SESSION['subject']) ? htmlspecialchars($_SESSION['subject']) : ''?>" />
            </fieldset>
            <fieldset>
              <legend>Bericht</legend>
              <textarea name="pm_message" cols="45" rows="10" style="width: 95%;" onload="this.select();"><?php echo isset($_SESSION['message']) ? "nrnr" '---' "nr" htmlspecialchars($_SESSION['message']) : ''?></textarea>
            </fieldset>
            <fieldset>
                <input type="submit" value=" Verzend " />
            </fieldset>
            </form>
        </div>
        </div>    
        <?php
        
unset($_SESSION['subject']);
        unset(
$_SESSION['message']);
    }
    elseif(isset(
$_GET['read']) && is_numeric($_GET['read']))
    {
        
$pm_id mysqli_real_escape_string($mysqli$_GET['read']);
                
        if(isset(
$_GET['del']) && is_numeric($_GET['del']))
        {
            
$mysqli->query("DELETE FROM messages WHERE pm_to='" $_SESSION['id'] . "' AND pm_id='" $pm_id "'");
            
            echo 
'Succesvol verwijdert, <a href="javascript:history.go(-2);">ga terug</a>. <script>javascript:history.go(-2);</script>';
        }
        else
        {
                
$query $mysqli->query("SELECT * FROM messages WHERE pm_to='" $_SESSION['id'] . "' AND pm_id='" $pm_id "'");
                
                if(
mysqli_num_rows($query) > 0)
                {
                    
$row mysqli_fetch_assoc($query);
                    
                    
$getuser $mysqli->query("SELECT * FROM users WHERE id='" $row['pm_to'] . "'");
                    
                    if(
mysqli_num_rows($getuser) > 0)
                    {
                        
$userrow mysqli_fetch_assoc($getuser);
                    }
                    else
                    {
                        
$userrow['username'] = 'Onbekend';
                    }
                    
?>
                    <div class="content">
                    <div class="csubject"><?php echo htmlspecialchars($row['pm_subject']); ?></div>
                    <div style="padding: 5px;">
                    <?php echo htmlspecialchars(nl2br($row['pm_message'])); ?>
                    </div>
                    <div style="border-top: 1px dotted #CCC; padding: 5px; margin-top: 5px;">
                    <a href="javascript:history.go(-1);">Ga terug</a> | <a href="/content/inbox/new/<?php echo htmlspecialchars($row['pm_from']); ?>.html">Antwoorden</a> | <a href="/content/inbox/read/<?php echo $_GET['read']; ?>/delete/<?php echo $_GET['read']; ?>.html">Verwijderen</a>
                    </div>
                    </div>
                    <?php
                    $_SESSION
['subject'] = $row['pm_subject'];
                    
$_SESSION['message'] = $row['pm_message'];
                    
                    
$mysqli->query("UPDATE messages SET pm_unread=1 WHERE pm_to='" $_SESSION['id'] . "' AND pm_id='" $pm_id "'");
                }
                else
                {
                    echo 
'<div class="msg-err">Dit bericht is niet voor jouw bedoelt!</div>';
                }
        }
    }
    else
    {
        
$count $mysqli->query("SELECT pm_unread FROM messages WHERE pm_to='" $_SESSION['id'] . "' AND pm_unread=0");
        
$query $mysqli->query("SELECT * FROM messages WHERE pm_to='" $_SESSION['id'] . "' ORDER BY pm_date DESC");
        
?>
        <div class="content">
        <div class="csubject">Inbox<font color="#BBBBBB" size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo mysqli_num_rows($count); ?> nieuwe berichten</font></div>
        <div style="padding: 5px;">
        <?php
        
if(mysqli_num_rows($query) > 0)
        {
            while(
$row mysqli_fetch_assoc($query))
            {
                if(
$row['pm_unread'] == 0)
                {
                    
$subject '<b>' $row['pm_subject'] . '</b>';
                }
                else
                {                
                    
$subject $row['pm_subject'];
                }
                
                
$getuser $mysqli->query("SELECT * FROM users WHERE id='" $row['pm_to'] . "'");
                
                if(
mysqli_num_rows($getuser) > 0)
                {
                    
$userrow mysqli_fetch_assoc($getuser);
                }
                else
                {
                    
$userrow['username'] = 'Onbekend';
                }

                echo 
'<div class="message" onclick="window.location = '/content/inbox/read/' . htmlspecialchars($row['pm_id']) . '.html';">' htmlspecialchars($subject) . ' <font color="#BBBBBB" size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verzonden door ' htmlspecialchars($userrow['username']) . ' op ' htmlspecialchars($row['pm_date']) . '</font></div>';
            }
        }
        else
        {
            echo 
'<div class="topic">Er zijn helaas geen nieuwe berichten voor je.</div>';
        }
        
?>
        </div>
        </div>
        <?php
    
}
}
else
{
    echo 
'<div class="content">
<div class="csubject">Niet ingelogd</span></div>
<div style="padding: 5px;">U dient ingelogd te zijn om deze pagina te bekijken. <a href=login.html alt=Inloggen title=Inloggen>Klik hier om in te loggen</a>.

</div>
</div>'
;
}
?>


Dit is de code, wie zou hierin misschien weten hoe ik dit oplos?
20-10-2010 21:43
Gevallen leider
Berichten: 118
avatar
Offline Stuur privébericht
Doet me denken aan brakke ASP code geschreven door een ex-stagiair bij mij op stage

Zoals ik al zei: eerst nl2br, dan pas htmlspecialchars.
<?php echo nl2br(htmlspecialchars($row['pm_message'])); ?>

Wat betreft die UBB codes, dat is heel logisch. Je gebruikt nergens functies of classes om UBB code te parsen.
De functie om url tags te vervangen zou er ongeveer zo uit komen te zien:
preg_replace("/\[url\](http:\/\/)?([a-z0-9-_\.\?&=\/)+[/url]/i", '<a href="http://$2">$2</a>', $subject);
Heb deze statement niet getest.
20-10-2010 22:25
Reageer op: "Problemen met inbox"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden