How to make Jquery Validation Error Messages Dynamic? [duplicate] - php

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
jQuery validation in different languages
I am using jquery.validate.js. And I need to show up the error messages in two languages. How can I do this? How can I make the error messages dynamic?

I use this for a dutch website. Just add this to a .js file and include it.
jQuery.extend(jQuery.validator.messages, {
required: "Dit is een verplicht veld.",
remote: "Controleer dit veld.",
email: "Vul hier een geldig email adres in.",
url: "Vul hier een geldige URL in.",
date: "Vul hier een geldige datum in.",
dateISO: "Vul hier een geldige datum in (ISO).",
number: "Vul hier een geldig nummer in.",
digits: "Vul hier alleen nummers in.",
creditcard: "Vul hier een geldig credit card nummer in.",
equalTo: "Vul hier dezelfde waarde in.",
accept: "Vul hier een waarde in met een geldige extensie.",
maxlength: jQuery.validator.format("Vul hier maximaal {0} tekens in."),
minlength: jQuery.validator.format("Vul hier minimaal {0} tekens in."),
rangelength: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),
range: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),
max: jQuery.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
min: jQuery.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}.")
});
To add a custom class use this:
$.validator.addMethod(
'class', function (value, element), 'message'
);

Related

Php form gives nothing

I'm quite new to php and am trying to make a simple form that mails the form-data to a specified mail address. I used this script here and modified it to my needs but when I try it out it just does nothing. It will go to the php page but nothing else happens and the page is empty.
Here is my HTML form:
<form class="contact" name="contact" method="post" action="./files/php/contact_send.php">
<table id="form">
<tr>
<td class="data-right"><label for="naam"><b>NAAM</b></label></td>
<td class="data-left">
<input type="text" name="naam" size="50" style="border-style:inset"/>
</td>
</tr>
<tr>
<td class="data-right"><label for="mailadres"><b>E-MAILADRES</b></label></td>
<td class="data-left">
<input type="text" name="mailadres" size="50" style="border-style:inset"/>
</td>
</tr>
<tr>
<td class="data-right"><label for="boodschap"><b>BOODSCHAP</b></label></td>
<td class="data-left">
<textarea name="boodschap" cols="39" rows="4" style="border-style:inset"></textarea>
</td>
</tr>
</table>
<input type="image" src="./files/img/stuur.png"
onmouseover="this.src='./files/img/stuur-hover.png'"
onmouseout="this.src='./files/img/stuur.png'"
alt="Stuur" width="150px" name="submit" value="Submit" />
</form>
and my php code:
<?php
if(isset($_POST['mailadres'])) {
// CHANGE THE TWO LINES BELOW
$email_to = "blabla#gmail.com";
$email_subject = "Contact";
function died($error) {
// your error code can go here
echo "Het spijt ons maar er is iets fout gelopen bij het versturen van het formulier";
echo "Hieronder zijn de fouten weergegeven:<br /><br />";
echo $error."<br /><br />";
echo "Verbeter de fouten en probeer opnieuw.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['naam']) ||
!isset($_POST['mailadres']) ||
!isset($_POST['boodschap'])) {
died('Het spijt ons maar het lijkt er op dat er iets mis is gelopen met de gegevens die u heeft ingevuld.');
}
$naam = $_POST['naam']; // required
$mailadres = $_POST['mailadres']; // required
$boodschap = $_POST['boodschap']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+#[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$mailadres)) {
$error_message .= 'Het e-mailadres dat u heeft opgegeven is geen geldig e-mailadres.<br />';
}
$naam_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($naam_exp,$naam)) {
$error_message .= 'De naam die u heeft opgegeven is geen geldige naam.<br />';
}
if(strlen($boodschap) < 5) {
$error_message .= 'De opgegeven boodschap is niet lang genoeg, gelieve minstens 5 letters te gebruiken.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Formulier details:\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Naam: ".clean_string($naam)."\n";
$email_message .= "E-mail: ".clean_string($mailadres)."\n";
$email_message .= "Boodschap: ".clean_string($boodschap)."\n";
// create email headers
$headers = 'From: '.$mailadres."\r\n".'Reply-To: '.$mailadres."\r\n" .'X-Mailer: PHP/' phpversion();
#mail($email_to, $email_subject, $email_message, $headers);
?>
Bedankt om ons te contacteren. We proberen zo spoedig mogelijk met u contact op te nemen.
<?php
}
die();
?>
You have a syntax error at this line:
$headers = 'From: '.$mailadres."\r\n".'Reply-To: '.$mailadres."\r\n" .'X-Mailer: PHP/' phpversion();
You forgot a dot in your string concatination at phpversion(). Change it to:
$headers = 'From: '.$mailadres."\r\n".'Reply-To: '.$mailadres."\r\n" .'X-Mailer: PHP/'. phpversion();
The reason why you got an empty screen is because php is probably not displaying the error. This is a security measure. You can force php to report and display the errors by adding the next lines to the top of your script:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
You should remove these lines in a production environment because it is a security risk.
Replace:
if(!isset($_POST['naam']) ||
!isset($_POST['mailadres']) ||
!isset($_POST['boodschap'])) {
died('Het spijt ons maar het lijkt er op dat er iets mis is gelopen met de gegevens die u heeft ingevuld.');
}
with:
if ( (!isset($_POST['naam'])) ||
(!isset($_POST['mailadres'])) ||
(!isset($_POST['boodschap'])) ) {
died('Het spijt ons maar het lijkt er op dat er iets mis is gelopen met de gegevens die u heeft ingevuld.');
}
You were missing a lot of brackets for this statement.
Also, change the bottom part from:
?>
Bedankt om ons te contacteren. We proberen zo spoedig mogelijk met u contact op te nemen.
<?php
}
die();
?>
To:
echo "Bedankt om ons te contacteren. We proberen zo spoedig mogelijk met u contact op te nemen.";
}
die();
?>

PHP html-Mail empty email

Hy guys,
I'm trying to send a couple of emails through PHP with the default PHP Mail function ( i know that there are libraries, but this is a script i will only run 1 time... )
Here's the code that i'm using (the $leMSG and email sending part are inside an foreach loop ):
$leMSG = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Uw nieuwe aanmeld gegevens voor website.nl</tilte></head><body><p>Beste klant van website.nl,</p><p>website.nl is overgegaan naar een nieuw systeem en uw account is mee verhuisd. Helaas konden we niet uw oude wachtwoord gebruiken, aangezien die beveiligd was opgeslagen. Daarom waren wij genoodzaakt om uw wachtwoord te resetten.</p><p>Uw nieuwe gegevens zijn:<br />Email: ' . $leEmail . '<br />Wachtwoord: ' . $password . '</p><p>U kunt uw gegevens hier na lopen en desnoods veranderen.</p><p>Mochten er nog vragen / opmerkingen zijn, dan horen wij dat graag.</p><p>Met Vriendelijke Groet,<br />Webbeheer website.nl</p></body></html>';
$this -> mailer($leMSG, $item['email'], $item['customer_id']);
And the mailer function:
function mailer($msg, $to, $id){
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To: email#addres.nl\r\n';
$headers .= 'From: Webmaster website.nl <webmaster#website.nl> \r\n';
if(mail('email#addres.nl', 'Uw nieuwe aanmeld gegevens voor website.nl', $msg, $headers)){
return TRUE;
}
else{
echo "<br />ERROR #id_" . $id;
}
}
But the email is empty. When i look at the source ( with GMail ), i can see that there is some HTML:
From: webmaster#website.nl
To:
Date: Thu, 7 Nov 2013 15:43:29 +0100
Subject: Uw nieuwe aanmeld gegevens voor website.nl
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Uw nieuwe aanmeld gegevens voor website.nl</tilte></head><body><p>Beste klant van website.nl,</p><p>website.nl is overgegaan naar een nieuw systeem en uw account is mee verhuisd. Helaas konden we niet uw oude wachtwoord gebruiken, aangezien die beveiligd was opgeslagen. Daarom waren wij genoodzaakt om uw wachtwoord te resetten.</p><p>Uw nieuwe gegevens zijn:<br />Email: email#addres.nl<br />Wachtwoord: 55jws2tS0j</p><p>U kunt uw gegevens hier na lopen en desnoods veranderen.</p><p>Mochten er nog vragen / opmerkingen zijn, dan horen wij dat graag.</p><p>Met Vriendelijke Groet,<br />Webbeheer website.nl</p></body></html>
Does anybody knows what's wrong with this script? I don't get any kind of error or something like that...
EDIT, Using now some more newlines for code readability, but that didn't fix it
$leMSG = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Uw nieuwe aanmeld gegevens voor Kadobos.nl</tilte></head>' . PHP_EOL;
$leMSG .= '<body><p>Beste klant van website.nl,</p>' . PHP_EOL;
$leMSG .= '<p>website.nl is overgegaan naar een nieuw systeem en uw account is mee verhuisd. Helaas konden we niet uw oude wachtwoord gebruiken, aangezien die beveiligd was opgeslagen. Daarom waren wij genoodzaakt om uw wachtwoord te resetten.</p>' . PHP_EOL;
$leMSG .= '<p>Uw nieuwe gegevens zijn:<br />Email: ' . $leEmail . '<br />Wachtwoord: ' . $password . '</p>' . PHP_EOL;
$leMSG .= '<p>U kunt uw gegevens hier na lopen en desnoods veranderen.</p>' . PHP_EOL;
$leMSG .= '<p>Mochten er nog vragen / opmerkingen zijn, dan horen wij dat graag.</p>' . PHP_EOL;
$leMSG .= '<p>Met Vriendelijke Groet,<br />Webbeheer website.nl</p></body></html>' . PHP_EOL;
</tilte> is spelled wrong in the head.
Should be </title>
Unclear. Looking at your HTML with carriage returns properly set:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Uw nieuwe aanmeld gegevens voor website.nl</tilte>
</head>
<body>
<p>Beste klant van website.nl,</p>
<p>website.nl is overgegaan naar een nieuw systeem en uw account is mee verhuisd. Helaas konden we niet uw oude wachtwoord gebruiken, aangezien die beveiligd was opgeslagen. Daarom waren wij genoodzaakt om uw wachtwoord te resetten.</p>
<p>Uw nieuwe gegevens zijn:<br />Email: ' . $leEmail . '<br />Wachtwoord: ' . $password . '</p>
<p>U kunt uw gegevens hier na lopen en desnoods veranderen.</p>
<p>Mochten er nog vragen / opmerkingen zijn, dan horen wij dat graag.</p>
<p>Met Vriendelijke Groet,<br />Webbeheer website.nl</p>
</body>
</html>
I wonder about this line:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
My gut says it should close itself so it should be; note the / at the end of the line:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
EDIT: Looking at your core code this seems like another issue:
$headers .= 'To: email#addres.nl\r\n';
$headers .= 'From: Webmaster website.nl <webmaster#website.nl> \r\n';
Perhaps try it like this.
$headers .= "To: " . 'email#addres.nl' . "\r\n";
$headers .= 'From: " . 'Webmaster website.nl <webmaster#website.nl>' . "\r\n";
The single versus double quote issue could be adding more lines to the message body & thus have your mail program choke when trying to process the HTML part of the message. Meaning it seems like that the one line space between the headers & the body cause issues. So what looks like this; look at the area between Subject: and the body of the message:
Subject: Uw nieuwe aanmeld gegevens voor website.nl
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Uw nieuwe aanmeld gegevens voor website.nl</tilte></head><body><p>Beste klant van website.nl,</p><p>website.nl is overgegaan naar een nieuw systeem en uw account is mee verhuisd. Helaas konden we niet uw oude wachtwoord gebruiken, aangezien die beveiligd was opgeslagen. Daarom waren wij genoodzaakt om uw wachtwoord te resetten.</p><p>Uw nieuwe gegevens zijn:<br />Email: email#addres.nl<br />Wachtwoord: 55jws2tS0j</p><p>U kunt uw gegevens hier na lopen en desnoods veranderen.</p><p>Mochten er nog vragen / opmerkingen zijn, dan horen wij dat graag.</p><p>Met Vriendelijke Groet,<br />Webbeheer website.nl</p></body></html>
Should render like this:
Subject: Uw nieuwe aanmeld gegevens voor website.nl
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Uw nieuwe aanmeld gegevens voor website.nl</tilte></head><body><p>Beste klant van website.nl,</p><p>website.nl is overgegaan naar een nieuw systeem en uw account is mee verhuisd. Helaas konden we niet uw oude wachtwoord gebruiken, aangezien die beveiligd was opgeslagen. Daarom waren wij genoodzaakt om uw wachtwoord te resetten.</p><p>Uw nieuwe gegevens zijn:<br />Email: email#addres.nl<br />Wachtwoord: 55jws2tS0j</p><p>U kunt uw gegevens hier na lopen en desnoods veranderen.</p><p>Mochten er nog vragen / opmerkingen zijn, dan horen wij dat graag.</p><p>Met Vriendelijke Groet,<br />Webbeheer website.nl</p></body></html>

Regex on sentences

I built a regex to match sentences in a PHP script, it works great though, it misses the first sentence. Here is the PHP including the regex.
preg_match_all('([A-Z][^\.!?]*[\.!?]\s)', '$data', $arr, PREG_OFFSET_CAPTURE);
The string used for testing.
Persoonsgegevens van 84.000 Bol.com-klanten waren toegankelijk via een
lek in de site van een externe partij waar Bol.com mee samenwerkte.
Het ging om een kwetsbaarheid voor sql-injectie. De gegevens zijn
volgens Bol.com niet misbruikt.
De webwinkel heeft de getroffen klanten uit zichzelf geïnformeerd,
blijkt onder meer uit een topic op GoT. Het gaat om 84.000 klanten die
meededen aan de 'kennismakingsactie' Warm Welkom.
De klantgegevens stonden in een database van een externe partij waar
Bol.com mee samenwerkte voor de actie, zegt Bol.com-directeur Daniel
Ropers tegenover Tweakers.net. Van de klanten konden naam, geslacht,
e-mailadres en geboortedatum worden achterhaald; betaalgegevens waren
niet toegankelijk.
"We hebben gisteravond klanten geïnformeerd die eind vorig jaar hebben
meegedaan aan de marketingactie", zegt Ropers. "Via het bureau dat de
actie heeft verzorgd waren gedurende een bepaalde periode gegevens
toegankelijk." Het lek zou in ieder geval vorig jaar zomer al in de
software hebben gezeten. Sinds februari waren de gegevens versleuteld.
Volgens Webwereld gaat het om een lek in de tool amfphp.
Bol.com ondernam actie nadat het bedrijf werd getipt. Ropers: "Buiten
de tipgever is er niemand bij de data geweest; er is niets uitgelekt.
We zijn de tipgever zeer dankbaar." Hij benadrukt dat Bol.com zelf
niet is gehackt, maar zegt ook dat het bedrijf desondanks zijn
verantwoordelijkheid wil nemen. "Voor alle bedrijven waar we mee
samenwerken hebben we security-checklists. Daar moeten we dus een stap
verder in gaan."
Source: Tweakers.net
I would use this regex to match sentence:
'.*?([\.!?]+|$)'
Add a bit more tweaks here and there gives a better looking output for the test input (test input only - no guarantee for general text):
/[\S].*?(?:[\.!?]+["]?(?=\s)|$)/

Return value from selfmade library in CodeIgniter is empty

I am having a problem with returning a value from a library back to the controller.
When I echo the return value it shows nothing, but when I echo it in the library instead of returning it does show the whole thing.
This is the controller:
$this->load->library('lib_registration');
$message = $this->lib_registration->create_email($registerData);
echo $message;
This is the library:
<?php
class lib_registration
{
public function create_email($incomingData)
{
$name = $incomingData['name'];
$lastname = $incomingData['lastname'];
$email = $incomingData['email'];
$password = $incomingData['password'];
$this->return_email($name, $lastname, $email, $password);
}
public function return_email($name, $lastname, $email, $password)
{
$emailMessage = '
<p>Beste '.$name.' '.$lastname.'</p>
<p>
Ten eerste heten wij u welkom bij BodyBook. Uw online medische dossier waarin u bepaalt wat er in staat.
Privacy staat bij ons heel hoog en wij respecteren ook de privacy van anderen. Daardoor willen wij u
er gelijk op wijzen dat u zelf beslist wat in uw online dossier komt te staan en wat zichtbaar is voor anderen.
</p>
<p>
Ten tweede heeft u zojuist een account aangemaakt bij BodyBook.
Hieronder staat uw voorlopig wachtwoord om mee in te loggen.
Gelieve dit wachtwoord gelijk te veranderen op het moment dat uw voor het eerst inlogt.
</p>
<p>
Uw wachtwoord = <span style="font-weight:bold; font-size:20px"><strong>'.$password.'</strong></span>
</p>
<p>
Onthoudt dit wachtwoord goed. Dit wachtwoord is beveiligd opgeslagen en kan daarom niet worden opgevraagd.
Mocht u uw wachtwoord vergeten zijn, dan is daar een optie voor tijdens het inloggen.
Mocht u uw wachtwoord willen wijzigen, dan kan dat in uw account instellingen als u bent ingelogd.
</p>
<p>
Wij wensen u veel plezier met BodyBook.
</p>
<p>
Met Vriendelijk Groet,
</p>
<p>
Het BodyBook team.
</p>
';
return $emailMessage;
}
}
?>
I hope you guys can show me what I am doing wrong.
The create_email function needs a return as well. Like this...
public function create_email($incomingData)
{
$name = $incomingData['name'];
$lastname = $incomingData['lastname'];
$email = $incomingData['email'];
$password = $incomingData['password'];
return $this->return_email($name, $lastname, $email, $password); //return here
}

add extra field to form not working

I have a working recommend to script, I just wanted to add a extra field named fename, now I get an error like this:
Parse error: syntax error, unexpected $end in
this is the html form:
<form action="action.php" method="post">
Uw naam:<br />
<input type="text" name="name" size="25"><br />
<br />
Uw e-mail adres:
<br />
<input type="text" name="email" size="25"><br />
<br />
De naam van uw kennis of vriend:
<br />
<input type="text" name="fename" size="25"><br />
<br />
Het e-mail adres van uw vriend of kennis:<br />
<input name="femail" type="text" size="25"><br />
<br />
Bijzonderheden:<br>
<textarea rows="5" name="recon" cols="75">
</textarea><br />
<input type="submit" name="submit" value="Aanbevelen!">
</form>
This is the action.php
<?
if (!$_POST['name']) {echo "Je moet wel je naam invullen a.u.b."; } else {
if (!$_POST['email']) {echo "Je moet wel je e-mail adres invullen a.u.b."; } else {
if (!$_POST['fename']) {echo "Naam van uw vriend of vriendin invullen."; } else {
if (!$_POST['femail']) {echo "Je moet wel het e-mail adres van uw vriend/familie of kennis invullen. a.u.b."; }
else{
$name=$_POST['name'];
$email=$_POST['email'];
$fename=$_POST['fename'];
$femail=$_POST['femail'];
$recon=$_POST['recon'];
$recon=htmlspecialchars($recon);
$headers = "From: $email\r\nReply-To: $femail\r\n";
PRINT "Bedankt $name dat u ons heeft aanbevolen.";
mail("$femail", "Computerhulp is nabij!", "
Beste $name , $fename heeft u ons aanbevolen.
$recon
",$headers);
}
}
}
?>
You need another } since you added another nested if-else.
However, it'd be far better to refactor using elseif's since those are designed exactly for this type of chaining:
<?php
if (!$_POST['name']) {echo "Je moet wel je naam invullen a.u.b."; }
elseif (!$_POST['email']) {echo "Je moet wel je e-mail adres invullen a.u.b."; }
elseif (!$_POST['fename']) {echo "Naam van uw vriend of vriendin invullen."; }
elseif (!$_POST['femail']) {echo "Je moet wel het e-mail adres van uw vriend/familie of kennis invullen. a.u.b."; }
else {
$name=$_POST['name'];
$email=$_POST['email'];
$fename=$_POST['fename'];
$femail=$_POST['femail'];
$recon=$_POST['recon'];
$recon=htmlspecialchars($recon);
$headers = "From: $email\r\nReply-To: $femail\r\n";
PRINT "Bedankt $name dat u ons heeft aanbevolen.";
mail("$femail", "Computerhulp is nabij!", "
Beste $name , $fename heeft u ons aanbevolen.
$recon
",$headers);
}
?>
When you write a code, keep the block minimum. If you using the IDE, then it will tell you when you missed a }. Use a consistent bracket style and indentation to help you spot a bug.
Here is your code above but will be more readable and easier to find the bug:
<?php
$error = 0;
if (!$_POST['name']) {
echo "Je moet wel je naam invullen a.u.b.";
$error = 1;
}
if (!$_POST['email']) {
echo "Je moet wel je e-mail adres invullen a.u.b.";
$error = 1;
}
if (!$_POST['fename']) {
echo "Naam van uw vriend of vriendin invullen.";
$error = 1;
}
if (!$_POST['femail']) {
echo "Je moet wel het e-mail adres van uw vriend/familie of kennis invullen. a.u.b.";
$error = 1;
}
if ( $error == 0 ) {
$name=$_POST['name'];
$email=$_POST['email'];
$fename=$_POST['fename'];
$femail=$_POST['femail'];
$recon=$_POST['recon'];
$recon=htmlspecialchars($recon);
$headers = "From: $email\r\nReply-To: $femail\r\n";
PRINT "Bedankt $name dat u ons heeft aanbevolen.";
mail("$femail", "Computerhulp is nabij!", "
Beste $name , $fename heeft u ons aanbevolen.
$recon
",$headers);
}
See how I use $error to prevent nested if-else.

Categories