Reguliere Expressies
Ik heb al talloze tutorials gelezen, heel veel geprobeerd maar het blijft niet werken.
op dit moment heb ik dit als basis:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
if (!preg_match("string", "$_POST['login']")
{
echo "FOUT";
}
else
{
echo "GOED";
}
?>
if (!preg_match("string", "$_POST['login']")
{
echo "FOUT";
}
else
{
echo "GOED";
}
?>
Maar wat er nu op de plek van de string moet komen te staan? iets met [A-Z] en [0-9] maar wat precies.
Ik zou eigenlijk willen vragen (aangezien het maar een klein formuliertje is) of iemand het voor mij zou willen maken.
Het formulier is alsvolgt:
Gebruikersnaam: (controleren of hij alleen uit letters, cijfers en _ bestaat. Absoluut geen spaties en minimaal 3 tekens)
Wachtwoord: (Minmaal 4 tekens)
Geboortedatum: (controleren of het volgende formaat is gebruikt: dd-mm-yyyy.)
Het zijn maar 3 dingen die mij vrij eenvoudig lijken als je weet hoe het werkt.
Het e-mailformulier heb ik al (gekopieerd van een tutorial) en die werkt.
Ik gebruik het maxlenght element in mijn formulier om de maximale lengte te controleren. Ook gebruik ik beveiliging tegen sql injectie. Dat lukt allemaal.
Nu die preg_match nog
Alvast hartelijk bedankt
Zoiets zou moeten volstaan als ik me niet vergis
Nu de geboortedatum nog, lijkt me een stuk lastiger
Dankje
Een aantal controles die wel werken. Voor de gebruikersnaam, minimaal 3 tekens en alleen cijfers, letters en _:
Wachtwoord (minimaal 4 tekens):
De geboortedatum is weer een ander verhaal. Allereerst is een datum in het formaat dd-mm-yyyy helemaal geen datum. Dat is een string waarvan jij en ik weten dat het een datum voor moet stellen. Een database kan hier bijvoorbeeld echter helemaal niets mee.
Een datum zet je daarom altijd in het formaat yyyy-mm-dd en de functie checkdate() gebruik je om te controleren of de datum geldig is:
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Quote:
@Jacco: nope, dat zal niet werken. Die punt in je regex gooit roet in het eten, nu hoeft namelijk alleen het eerste teken van een string een word-character te zijn.
Is mijn credit voor het "maandagmorgen/koffie gebrek" excuus al op?
Ach, het is nog steeds ochtend en bovendien 5 mei. Het is je vergeven ;-)
dankje, ga het vanavond proberen
Blanche schreef op 05.05.2008 10:41:
Ach, het is nog steeds ochtend en bovendien 5 mei. Het is je vergeven ;-)
Gelukkig begon al te zweten
Het lijkt me aan te raden om ook een maximum lengte in te stellen door
{3,} aan te passen tot bijvoorbeeld {3,10}
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if(preg_match('/^\w{3,}$/', $username))
{
// continue
}
else
{
// error handling
}
?>
if(preg_match('/^\w{3,}$/', $username))
{
// continue
}
else
{
// error handling
}
?>
Gr.
TS: maxlength van velden is doormiddel van firefox zeer makkelijk uit te schakkelen dus neem het inderdaad ook op in je usernamecheck
Nu wou ik erin bouwen dat je geen dubbel post kunt (Maar dat is volgensmijn beste veel werk)
Maar ook dat ze minimaal 50 caracters moeten voordat ze een bericht kunnen plaatsen dit werkt niet?
Code (php)
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
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
<?php
if(strlen($message) >= 50)
{
// Bericht is goed
}
// Post view handler & echoer
$query_min = ($page * 10) - 10;
if($query_min < 0){ // Page 1
$query_min = 0;
}
$get_em = mysql_query("SELECT * FROM cms_forum_posts WHERE threadid = '".$threadid."' ORDER BY id ASC LIMIT ".$query_min.", 10") or die(mysql_error());
$dynamic_id = 0;
while($row = mysql_fetch_assoc($get_em)){
$dynamic_id++;
if(IsEven($dynamic_id)){
$oddeven = "odd";
} else {
$oddeven = "even";
}
$userquery = mysql_query("SELECT * FROM users WHERE name = '".$row['author']."' LIMIT 1");
$userdata = mysql_fetch_assoc($userquery);
$userid = $userdata['id'];
echo "<tr class=\"post-list-index-".$oddeven."\">
<a id='post-".$row['id']."'>
<td class=\"post-list-row-container\">
<a href=\"user_profile.php?name=".$userdata['name']."\" class=\"post-list-creator-link post-list-creator-info\">".$userdata['name']."</a><br /> \n";
if(IsUserOnline($userid)){ echo "<img alt=\"Online\" src=\"./web-gallery/images/myhabbo/habbo_online_anim.gif\" />"; } else { echo "<img alt=\"Offline\" src=\"./web-gallery/images/myhabbo/habbo_offline.gif\" />"; }
echo "<div class=\"post-list-posts post-list-creator-info\">Aantal berichten: ".$userdata['postcount']."</div>
<div class=\"clearfix\">
<div class=\"post-list-creator-avatar\"><img src=\"http://www.habbo.co.uk/habbo-imaging/avatarimage?figure=".$userdata['figure']."&size=b&direction=2&head_direction=2&gesture=sml\" alt=\"".$userdata['name']."\" /></div><div class=\"post-list-group-badge\">";
if(GetUserGroup($userid) !== false){
echo "<a href=\"group_profile.php?id=".GetUserGroup($userid)."\"><img src='http://www.habbo.co.uk//habbo-imaging/badge-fill/".GetUserGroupBadge($userid).".gif' /></a>";
}
echo "</div>
<div class=\"post-list-avatar-badge\">";
if(GetUserBadge($userid) !== false){
echo "<img src=\"http://www.habbo.co.uk//c_images/badges/Badges/".GetUserBadge($userid).".gif\" />";
}
echo "</div>
</div>
<div class=\"post-list-motto post-list-creator-info\">".trim(stripslashes($userdata['mission']))."</div>
</td>
<td class=\"post-list-message\" valign=\"top\" colspan=\"2\">";
if($topic_open == true && $logged_in){
echo " <a href=\"#\" class=\"quote-post-link verify-email\" id=\"quote-post-".$row['id']."-message\">Quote</a>";
}
if($user_rank > 5 || $my_id == $userdata['id'] && $logged_in){
echo "<a href=\"#\" class=\"edit-post-link verify-email\" id=\"edit-post-".$row['id']."-message\">Bewerken</a>";
}
echo "<span class=\"post-list-message-header\">";
if($dynamic_id !== 1 || $page > 1){
echo "RE: ";
}
echo ubb_code($thread['title'])."</span><br />
<span class=\"post-list-message-time\">".$row['date']."</span>
<div class=\"post-list-report-element\">";
if($user_rank > 5 || $my_id == $userdata['id'] && $logged_in){
echo "<a href=\"#\" id=\"delete-post-".$row['id']."\" class=\"delete-button delete-post\"></a>";
}
if($my_id !== $userdata['id'] && $logged_in){
echo " <div class=\"post-list-report-element\">\n <a href=\"./iot/go.php?do=report&post=".$row['id']."&page=".$page."\" class=\"create-report-button\" title=\"Geef dit bericht aan\" target=\"habbohelp\" onclick=\"openOrFocusHelp(this); return false\"></a>\n </div>";
}
echo " </div>";
if(!empty($row['edit_date']) && !empty($row['edit_author'])){
echo "\n<br /><br /><font size='1'><strong>Laast aangepast: ".$row['edit_date']." Door: ".$row['edit_author']."</strong></font>";
}
echo " <div class=\"post-list-content-element\">";
echo bbcode_format(trim(nl2br(ubb_code($row['message']))))."
<input type=\"hidden\" id=\"".$row['id']."-message\" value=\"".stripslashes($row['message'])."\" />
</div>
<div>
</div>
</td>
</tr>";
}
?>
<tr id="new-post-entry-message" style="display:none;">
<td class="new-post-entry-label"><div class="new-post-entry-label" id="new-post-entry-label">Bericht:</div></td>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0" style="margin: 5px; width: 98%;">
<tr>
<td>
<input type="hidden" id="edit-type"/>
<input type="hidden" id="post-id"/>
<a href="#" class="preview-post-link" id="post-form-preview">Voorbeeld »</a>
<input type="hidden" id="spam-message" value="Spam-alarm!"/>
<textarea id="post-message" class="new-post-entry-message" rows="5" name="Bericht" ></textarea>
<script type="text/javascript">
bbcodeToolbar = new Control.TextArea.ToolBar.BBCode("post-message");
bbcodeToolbar.toolbar.toolbar.id = "bbcode_toolbar";
var colors = { "red" : ["#d80000", "Red"],
"orange" : ["#fe6301", "Orange"],
"yellow" : ["#ffce00", "Yellow"],
"green" : ["#6cc800", "Green"],
"cyan" : ["#00c6c4", "Cyan"],
"blue" : ["#0070d7", "Blue"],
"gray" : ["#828282", "Grey"],
"black" : ["#000000", "Black"]
};
bbcodeToolbar.addColorSelect("Color", colors, false);
</script>
<br /><br />
<a id="post-form-cancel" class="new-button red-button cancel-icon" href="#"><b><span></span>Annuleeren</b><i></i></a>
<a id="post-form-save" class="new-button green-button save-icon" href="#"><b><span></span>Opslaan</b><i></i></a>
</td>
</tr>
</table>
</td>
</tr></table>
<div id="new-post-preview" style="display:none;">
</div>
if(strlen($message) >= 50)
{
// Bericht is goed
}
// Post view handler & echoer
$query_min = ($page * 10) - 10;
if($query_min < 0){ // Page 1
$query_min = 0;
}
$get_em = mysql_query("SELECT * FROM cms_forum_posts WHERE threadid = '".$threadid."' ORDER BY id ASC LIMIT ".$query_min.", 10") or die(mysql_error());
$dynamic_id = 0;
while($row = mysql_fetch_assoc($get_em)){
$dynamic_id++;
if(IsEven($dynamic_id)){
$oddeven = "odd";
} else {
$oddeven = "even";
}
$userquery = mysql_query("SELECT * FROM users WHERE name = '".$row['author']."' LIMIT 1");
$userdata = mysql_fetch_assoc($userquery);
$userid = $userdata['id'];
echo "<tr class=\"post-list-index-".$oddeven."\">
<a id='post-".$row['id']."'>
<td class=\"post-list-row-container\">
<a href=\"user_profile.php?name=".$userdata['name']."\" class=\"post-list-creator-link post-list-creator-info\">".$userdata['name']."</a><br /> \n";
if(IsUserOnline($userid)){ echo "<img alt=\"Online\" src=\"./web-gallery/images/myhabbo/habbo_online_anim.gif\" />"; } else { echo "<img alt=\"Offline\" src=\"./web-gallery/images/myhabbo/habbo_offline.gif\" />"; }
echo "<div class=\"post-list-posts post-list-creator-info\">Aantal berichten: ".$userdata['postcount']."</div>
<div class=\"clearfix\">
<div class=\"post-list-creator-avatar\"><img src=\"http://www.habbo.co.uk/habbo-imaging/avatarimage?figure=".$userdata['figure']."&size=b&direction=2&head_direction=2&gesture=sml\" alt=\"".$userdata['name']."\" /></div><div class=\"post-list-group-badge\">";
if(GetUserGroup($userid) !== false){
echo "<a href=\"group_profile.php?id=".GetUserGroup($userid)."\"><img src='http://www.habbo.co.uk//habbo-imaging/badge-fill/".GetUserGroupBadge($userid).".gif' /></a>";
}
echo "</div>
<div class=\"post-list-avatar-badge\">";
if(GetUserBadge($userid) !== false){
echo "<img src=\"http://www.habbo.co.uk//c_images/badges/Badges/".GetUserBadge($userid).".gif\" />";
}
echo "</div>
</div>
<div class=\"post-list-motto post-list-creator-info\">".trim(stripslashes($userdata['mission']))."</div>
</td>
<td class=\"post-list-message\" valign=\"top\" colspan=\"2\">";
if($topic_open == true && $logged_in){
echo " <a href=\"#\" class=\"quote-post-link verify-email\" id=\"quote-post-".$row['id']."-message\">Quote</a>";
}
if($user_rank > 5 || $my_id == $userdata['id'] && $logged_in){
echo "<a href=\"#\" class=\"edit-post-link verify-email\" id=\"edit-post-".$row['id']."-message\">Bewerken</a>";
}
echo "<span class=\"post-list-message-header\">";
if($dynamic_id !== 1 || $page > 1){
echo "RE: ";
}
echo ubb_code($thread['title'])."</span><br />
<span class=\"post-list-message-time\">".$row['date']."</span>
<div class=\"post-list-report-element\">";
if($user_rank > 5 || $my_id == $userdata['id'] && $logged_in){
echo "<a href=\"#\" id=\"delete-post-".$row['id']."\" class=\"delete-button delete-post\"></a>";
}
if($my_id !== $userdata['id'] && $logged_in){
echo " <div class=\"post-list-report-element\">\n <a href=\"./iot/go.php?do=report&post=".$row['id']."&page=".$page."\" class=\"create-report-button\" title=\"Geef dit bericht aan\" target=\"habbohelp\" onclick=\"openOrFocusHelp(this); return false\"></a>\n </div>";
}
echo " </div>";
if(!empty($row['edit_date']) && !empty($row['edit_author'])){
echo "\n<br /><br /><font size='1'><strong>Laast aangepast: ".$row['edit_date']." Door: ".$row['edit_author']."</strong></font>";
}
echo " <div class=\"post-list-content-element\">";
echo bbcode_format(trim(nl2br(ubb_code($row['message']))))."
<input type=\"hidden\" id=\"".$row['id']."-message\" value=\"".stripslashes($row['message'])."\" />
</div>
<div>
</div>
</td>
</tr>";
}
?>
<tr id="new-post-entry-message" style="display:none;">
<td class="new-post-entry-label"><div class="new-post-entry-label" id="new-post-entry-label">Bericht:</div></td>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0" style="margin: 5px; width: 98%;">
<tr>
<td>
<input type="hidden" id="edit-type"/>
<input type="hidden" id="post-id"/>
<a href="#" class="preview-post-link" id="post-form-preview">Voorbeeld »</a>
<input type="hidden" id="spam-message" value="Spam-alarm!"/>
<textarea id="post-message" class="new-post-entry-message" rows="5" name="Bericht" ></textarea>
<script type="text/javascript">
bbcodeToolbar = new Control.TextArea.ToolBar.BBCode("post-message");
bbcodeToolbar.toolbar.toolbar.id = "bbcode_toolbar";
var colors = { "red" : ["#d80000", "Red"],
"orange" : ["#fe6301", "Orange"],
"yellow" : ["#ffce00", "Yellow"],
"green" : ["#6cc800", "Green"],
"cyan" : ["#00c6c4", "Cyan"],
"blue" : ["#0070d7", "Blue"],
"gray" : ["#828282", "Grey"],
"black" : ["#000000", "Black"]
};
bbcodeToolbar.addColorSelect("Color", colors, false);
</script>
<br /><br />
<a id="post-form-cancel" class="new-button red-button cancel-icon" href="#"><b><span></span>Annuleeren</b><i></i></a>
<a id="post-form-save" class="new-button green-button save-icon" href="#"><b><span></span>Opslaan</b><i></i></a>
</td>
</tr>
</table>
</td>
</tr></table>
<div id="new-post-preview" style="display:none;">
</div>
Ik heb verder ook een woordfilter door middel van ubb, michien dat ik daar die minimaal 50 caracters moet plaatsen?
Gewijzigd op 01/01/1970 01:00:00 door Tom Swinkels
Ok gedaan, iemand die me nog kan helpen hiermee?
Een dubbelpost voorkomen is niet zo ingewikkeld. Zet gewoon elke INSERT query in de session. Als iemand een INSERT probeert, vergelijk je hem met de variabele in de sessie.
Het je daar een stukje script van? Ben er namelijk niet zo goed in!