Weet iemand wat code is voor spatie niet toelaten in eregi?
Hieronder mijn code:
$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$first_name))
{
$error_message .= 'De voornaam is niet geldig.<br />';
}
Oke, hoor het graag, Thanks
Gewijzigd op 10/08/2012 17:27:58 door Bas IJzelendoorn
Van php.net: Warning
This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
Gebruik preg_match().
Toevoeging op 06/08/2012 20:30:04:
Gebruik eerst trim().
Code:
/** Validate bericht */
if ( !isset( $_POST['bericht'] ) or strlen( trim( $_POST['bericht'] ) ) < 5 )
{
echo "Het bericht moet minimaal 5 tekens lang zijn!<br><br> \n\n";
}
Terwijl de antieke het wel goed doet:
if(strlen($comments) < 2)
{
$error_message .= 'Het bericht is niet geldig.<br />';
}
if(strlen($error_message) > 0)
{
died($error_message);
}
Dus de antieke doet het wel en de moderne niet...?
Gewijzigd op 08/08/2012 08:39:09 door Spider Finder
Ik zie in deze code niet wat dit met eregi/preg_match te maken heeft.
Gewijzigd op 08/08/2012 08:38:31 door Spider Finder
Quote:
Dus de antieke doet het wel en de moderne niet...?
Voor mij lastig daar ik een leek ben en met scripts werk van het internet, kan zelf niet programmeren zoals andere dit doen, het lukt mij ook wel, maar niet altijd.
Dus zegt het maar......
Dus de antieke doet het wel en de moderne niet...?
Voor mij lastig daar ik een leek ben en met scripts werk van het internet, kan zelf niet programmeren zoals andere dit doen, het lukt mij ook wel, maar niet altijd.
Dus zegt het maar......
dit is echt bullshit.. het is niet dat ene woordje wat veranderd van eregi in preg_match het scriptje zelf veranderd ook.. het is toch ook niet zo dat als je een nieuwe model ferarri uitbrengt dat er alleen een nieuwe modelnaam komt en de functionaliteit blijft hetzelfde als de voorganger?
verder vind ik je laatste post ook niet echt vriendelijk
Quote:
Het gaat erom dat ik wil checken of iemand niet alleen spaties doet en dat het bericht veld meer dan bijvoorbeeld 5 tekens bevat, het bericht veld bij preg-match doet het niet en bij eregi wel, op mijn NAS draait PHP wat het aan kan en dus ook blijft doen, maar weet iemand nu de code voor checken geen spatie en meer dan zoveel tekens in bericht voor preg-match of niet....????
de code voor spaties is
trim is overigens niet handig in zijn geval omdat hij wil weten of er spaties zijn of niet en trim verwijdert spaties.. dat is dus hele andere koek.
Dus ik wil geen spaties toestaan en hoef niet te weten of iemand dit doet, hij moet bij een spatie in het begin van het invoerveld gewoon een foutmelding geven.
Groet
Gewijzigd op 10/08/2012 17:28:12 door Bas IJzelendoorn
Dus de input "Dit is een naam" is wel toegestaan maar " " niet? Dan zou mijn oplossing moeten werken!
En ook nog een stuk sneller dan het gebruik van reguliere expressies (en uiteraard beter dan het gebruik van een deprecated functie).
/** Validate bericht */
if ( !isset( $_POST['bericht'] ) or if(strlen(trim($var)) < 5)
{
echo "Het bericht moet minimaal 5 tekens lang zijn!<br><br> \n\n";
}
Gewijzigd op 08/08/2012 08:41:09 door Spider Finder
if ( !isset( $_POST['bericht'] ) or strlen(trim($var)) < 5)
1) als men een of twee spaties geeft in een invulveld moet hij een foutmelding geven.
2) bij bericht ook geen spaties, maar ook meer dan 5 tekens, bij mijnder tekend ook foutmelding.
Is mij nog niet gelukt werkend te krijgen, zie hieronder het totale script:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>send4</title>
</head>
<body
style="font-family: 'Franklin Gothic Book'; font-size: 16px; font: normal; background-color: #E7E0D2; ">
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
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
<?php
$mailsupport= "[email protected]";
$titel= "mijn domeinnaam - " .
$_POST['onderwerp'];
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
if (isset ($_POST['kaartleggen']))
{
$kaartleggen="Ja, wel informatie";
}
else
{
$kaartleggen="Nee, geen informatie";
}
if (isset ($_POST['orakel']))
{
$orakel="Ja, wel informatie";
}
else
{
$orakel="Nee, geen informatie";
}
if (isset ($_POST['tenen']))
{
$tenen="Ja, wel informatie";
}
else
{
$tenen="Nee, geen informatie";
}
if (isset ($_POST['coaching']))
{
$coaching="Ja, wel informatie";
}
else
{
$coaching="Nee, geen informatie";
}
if (isset ($_POST['individueel']))
{
$individueel="Ja, wel informatie";
}
else
{
$individueel="Nee, geen informatie";
}
// Bericht
$mssg .= "Ingevuld Contact Formulier \n\n";
$mssg .= "Voornaam: " .$_POST['naam1'] . "\n";
$mssg .= "Achternaam: " .$_POST['naam2'] . "\n";
$mssg .= "Telefoon: " .$_POST['telefoon'] . "\n";
$mssg .= "E-mailadres: " .$_POST['mail'] . "\n";
$mssg .= "Onderwerp: " .$_POST['onderwerp'] . "\n";
$mssg .= "Wilt u mij bellen over: \n";
$mssg .= "*Informatie Tarot Kaartleggen: " .$kaartleggen . "\n";
$mssg .= "*Informatie Orakel Snuffelen: " .$orakel . "\n";
$mssg .= "*Tenen lezen Online: " .$tenen . "\n";
$mssg .= "*Coaching: " .$coaching . "\n";
$mssg .= "*Individuele Workshop: " .$individueel . "\n";
$mssg .= "Voorkeur voor tijdstip: " .$tijdstip . "\n";
$mssg .= "Bericht:" . "\n";
$mssg .= $_POST['bericht'] . "\n" . "\n";
$mssg .= "Dit bericht is verstuurd op $datum van het ip adres " . $ip . ".";
//Afzender
$headers = "From: " . $_POST['naam1'] . $_POST['naam2'] . " <" . $_POST['mail'] . ">";
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
if (empty($_POST['naam1']) or empty($_POST['naam2']) or empty($_POST['mail']) or empty($_POST['onderwerp']) or empty($_POST['bericht'])) {
//Validatie
/** Validate naam1 */
$naam1Pattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['naam1'] ) or !preg_match( $naam1Pattern, $_POST['naam1'] ) )
{
echo "De voornaam is niet geldig!<br> \n";
}
/** Validate naam2 */
$naam2Pattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['naam2'] ) or !preg_match( $naam2Pattern, $_POST['naam2'] ) )
{
echo "De achternaam is niet geldig!<br> \n";
}
/** Validate e-mail address */
$mailPattern = '~^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$~Di';
if ( !isset( $_POST['mail'] ) or !preg_match( $mailPattern, $_POST['mail'] ) )
{
echo "Het e-mailadres is niet geldig!<br> \n";
}
/** Validate onderwerp */
$onderwerpPattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['onderwerp'] ) or !preg_match( $onderwerpPattern, $_POST['onderwerp'] ) )
{
echo "Het onderwerp is niet geldig!<br> \n";
}
/** Validate bericht */
if ( !isset( $_POST['bericht'] ) or strlen(trim($var)) < 5)
{
echo "Het bericht moet minimaal 5 tekens lang zijn!<br><br> \n\n";
}
echo "Sorry, maar helaas ben u iets vergeten, of heeft u iets verkeerd ingevuld!!<br><br>\n";
echo '<button type="button" onclick="history.go(-1);">Terug naar formulier</button>';
} else {
mail ($mailsupport, $titel, $mssg, $headers);
header ("Refresh: 0; URL=verzonden.php");
}
}
?>
$mailsupport= "[email protected]";
$titel= "mijn domeinnaam - " .
$_POST['onderwerp'];
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
if (isset ($_POST['kaartleggen']))
{
$kaartleggen="Ja, wel informatie";
}
else
{
$kaartleggen="Nee, geen informatie";
}
if (isset ($_POST['orakel']))
{
$orakel="Ja, wel informatie";
}
else
{
$orakel="Nee, geen informatie";
}
if (isset ($_POST['tenen']))
{
$tenen="Ja, wel informatie";
}
else
{
$tenen="Nee, geen informatie";
}
if (isset ($_POST['coaching']))
{
$coaching="Ja, wel informatie";
}
else
{
$coaching="Nee, geen informatie";
}
if (isset ($_POST['individueel']))
{
$individueel="Ja, wel informatie";
}
else
{
$individueel="Nee, geen informatie";
}
// Bericht
$mssg .= "Ingevuld Contact Formulier \n\n";
$mssg .= "Voornaam: " .$_POST['naam1'] . "\n";
$mssg .= "Achternaam: " .$_POST['naam2'] . "\n";
$mssg .= "Telefoon: " .$_POST['telefoon'] . "\n";
$mssg .= "E-mailadres: " .$_POST['mail'] . "\n";
$mssg .= "Onderwerp: " .$_POST['onderwerp'] . "\n";
$mssg .= "Wilt u mij bellen over: \n";
$mssg .= "*Informatie Tarot Kaartleggen: " .$kaartleggen . "\n";
$mssg .= "*Informatie Orakel Snuffelen: " .$orakel . "\n";
$mssg .= "*Tenen lezen Online: " .$tenen . "\n";
$mssg .= "*Coaching: " .$coaching . "\n";
$mssg .= "*Individuele Workshop: " .$individueel . "\n";
$mssg .= "Voorkeur voor tijdstip: " .$tijdstip . "\n";
$mssg .= "Bericht:" . "\n";
$mssg .= $_POST['bericht'] . "\n" . "\n";
$mssg .= "Dit bericht is verstuurd op $datum van het ip adres " . $ip . ".";
//Afzender
$headers = "From: " . $_POST['naam1'] . $_POST['naam2'] . " <" . $_POST['mail'] . ">";
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
if (empty($_POST['naam1']) or empty($_POST['naam2']) or empty($_POST['mail']) or empty($_POST['onderwerp']) or empty($_POST['bericht'])) {
//Validatie
/** Validate naam1 */
$naam1Pattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['naam1'] ) or !preg_match( $naam1Pattern, $_POST['naam1'] ) )
{
echo "De voornaam is niet geldig!<br> \n";
}
/** Validate naam2 */
$naam2Pattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['naam2'] ) or !preg_match( $naam2Pattern, $_POST['naam2'] ) )
{
echo "De achternaam is niet geldig!<br> \n";
}
/** Validate e-mail address */
$mailPattern = '~^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$~Di';
if ( !isset( $_POST['mail'] ) or !preg_match( $mailPattern, $_POST['mail'] ) )
{
echo "Het e-mailadres is niet geldig!<br> \n";
}
/** Validate onderwerp */
$onderwerpPattern = '~^[a-z .\'-]+$~Di';
if ( !isset( $_POST['onderwerp'] ) or !preg_match( $onderwerpPattern, $_POST['onderwerp'] ) )
{
echo "Het onderwerp is niet geldig!<br> \n";
}
/** Validate bericht */
if ( !isset( $_POST['bericht'] ) or strlen(trim($var)) < 5)
{
echo "Het bericht moet minimaal 5 tekens lang zijn!<br><br> \n\n";
}
echo "Sorry, maar helaas ben u iets vergeten, of heeft u iets verkeerd ingevuld!!<br><br>\n";
echo '<button type="button" onclick="history.go(-1);">Terug naar formulier</button>';
} else {
mail ($mailsupport, $titel, $mssg, $headers);
header ("Refresh: 0; URL=verzonden.php");
}
}
?>
</body>
</html>
Wees consequent in het gebruik van ' en " --> php (echo) ' en html " (vergelijk regel 117/118)
Na header --> exit; Zou overigens nog een keer kijken naar jouw opbouw van header; heb het idee dat jouw syntax niet overkomt met de standaard (op phpnet)
Je moet natuurlijk wel de code aanpassen aan jouw site. Waar komt $var vandaan? Dat zal, vermoedelijk $_POST['bericht'] moeten zijn.
Zet error reporting daarom, tijdens ontwerpen, altijd (boven)aan in je script.
Variabelen ($datum) buiten quotes.
Waarom eerst op allerlei $_POST variabelen controleren en aanmaken (regel 12-56) en een bericht aanmaken, terwijl je niet eens controleert of het formulier wel verzonden is?
Is het voor jezelf niet handiger om alleen dat onderwerp/die onderwerpen in de mail te laten zetten waarin men geïnteresseerd is, ipv elk onderwerp apart te noemen met wel/niet?
Uit interesse: als je het formulier onjuist/onvolledig hebt ingevuld en je klikt op de link om terug te gaan naar het formulier: zijn dan de velden nog ingevuld (of kun de bezoeker opnieuw beginnen met invoeren)?
Vraag:
Hoe veilig is het om $_POST-waarden direct in een bericht te zetten? Of kan daarvoor beter bv htmlspecialchars worden gebruikt?
Gewijzigd op 07/08/2012 15:33:54 door Obelix Idefix
Ik zou eerst eens zorgen dat er logica in je script zit. Je gebruikt nu eerst diverse $_POST-vars terwijl je aan het eind pas gaat kijken of er wel gepost is.
Gewijzigd op 08/08/2012 08:42:50 door Spider Finder
naam verwijderd op 07/08/2012 16:10:07:
Verder snap ik sommige opmerkingen niet daar ik een leek ben, dus tot zover iederen bedankt en graag alleen nog reacties die ik als leek ook echt kan gebruiken of dat iemand het geposte script wil bewerken en retour posten.
De tips/opmerkingen die geplaatst worden kun je, ook als leek, prima gebruiken en ik kan je alleen maar aanraden om ze ook te gebruiken, als je de site daadwerkelijk wilt gaan publiceren.
Je begint ergens aan (als leek) omdat je er interesse in hebt, iets wilt maken/bereiken. Dat betekent tijd investeren om kennis op te doen.
Er wordt je een bijna werkende oplossing aangeboden.
Gewijzigd op 10/08/2012 17:31:48 door Bas IJzelendoorn
Gewijzigd op 10/08/2012 17:32:05 door Bas IJzelendoorn
Obelix en Idefix op 07/08/2012 15:22:31:
Je moet natuurlijk wel de code aanpassen aan jouw site. Waar komt $var vandaan? Dat zal, vermoedelijk $_POST['bericht'] moeten zijn.
Al geprobeerd????
Ja, heb alles al geprobeerd, sorry, kan er ook niet aan doen.