This question already has answers here:
Configure WAMP server to send email
(7 answers)
Closed 7 years ago.
I wanted to know if it was possible to test the sending of the confirmation email for a registration with this code :
$cle = md5(microtime(TRUE)*100000);
// Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
$stmt = $bdd->prepare("UPDATE personnes SET cle=:cle WHERE Pseudo = :pseudo");
$stmt->bindParam(':cle', $cle);
$stmt->bindParam(':pseudo', $pseudo);
$stmt->execute();
// Préparation du mail contenant le lien d'activation
$destinataire = $email;
$sujet = "Activer votre compte" ;
$entete = "From: inscription#votresite.com" ;
// Le lien d'activation est composé du login(log) et de la clé(cle)
// penser a changer l adresse du site lorsque celuici sera en ligne
$message = 'Bienvenue sur blablabla,
Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.
http://votresite.com/activation.php?log='.urlencode($pseudo).'&cle='.urlencode($cle).'
---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
when you work locally or does it absolutely have its online site
Thank you
First, install sendmail (tutorial on how to install is on their website) to be able to send e-mail from localhost
After this, you can check if mail was sent with simple "if" statement
if(mail($destinataire, $sujet, $message, $entete))
{
//sent
}else{
//not sent
}
On windows, You can try with Test Mail Server Tool
Related
I need to insert static data in DATABASE during migration. so in my migration file I am adding one insert query but this is unfortunately giving error. same sql query running properly in mysql console.
$this->addSql('insert into `Translations` values('fr',
'{
"footer_header": "Contactez-nous",
"footer_address": "Tour Ariane 92088 La Défense",
"footer_phone": "+33(1) 42 74 83 02",
"footer_email": "marsh#marsh.com",
"footer_website": "www.marsh.com",
"footer_cookies": "Politique relative aux cookie",
"footer_confidential": "Politique de confidentialité",
"footer_utilise": "Conditions d’utilisation",
"footer_link_tou": "https://www.marsh.com/fr/fr/terms-of-use.html",
"footer_link_privacy": "https://www.marsh.com/fr/fr/privacy-notice.html",
"footer_link_cookies": "https://www.marsh.com/fr/fr/cookie-notice.html",
"marketing_contact": "Contact",
"marketing_address": "Tour Ariane 92088 La Défense",
"marketing_phone": "+33(1) 42 74 83 02",
"marketing_email": "marsh#marsh.com",
"price_lab": "Compte tenu des informations complétées précemment, votre prime s''élève à",
"price_lab1": "HT",
"price_lab2": "Taxes",
"price_lab3": "TTC",
"price_lab4": "Frais de gestion",
"price_lab5": "Montant total de votre prime",
"signature_heading": "Veuillez remplir les informations ci-dessous afin de signer électroniquement votre document :",
"signature_name1_lab": "<div>Prénom</div>",
"signature_name1": "Prénom",
"signature_name2_lab": "<div>Nom</div>",
"signature_name2": "Nom",
"signature_phone_lab": "<div>Numéro de téléphone</div>",
"signature_phone": "Format attendu : +33658968956",
"signature_otp": "Nous vous avons envoyé votre code, merci de le renseigner ci-dessous.",
"payment_gateway": "Pour vous permettre de procéder au règlement en ligne par carte bancaire de votre cotisation d’assurance en toute sérénité, MARSH a choisi la solution proposée par son partenaire bancaire : la Société Générale. Le paiement s’effectuant sur un serveur totalement sécurisé, aucune information ne transite par notre site https://connexion.marsh.com. Les échanges se déroulant en mode SSL (Secure Sockets Layer), norme de sécurité de transfert, l’ensemble des données sont cryptées afin d’empêcher leur lecture ou leur interception par des tiers. Ce protocole permet d’établir une connexion sécurisée sur Internet, afin d’exclure toute fraude. Le cadenas placé en barre d’adresse de votre écran témoigne de la sécurisation de la connexion ».",
"payment_button": "Traiter le paiement",
"final_page": "Votre demande est bien enregistrée. Nos équipes vont étudier votre dossier et reviendront vers vous par email rapidement. Si vous avez des questions, nous vous invitons à adresser un email à ",
"final_file_name": "Votre document signé",
"zipFile_Name": "Fichiers attachés"
}')');
I am getting below error while executing.
The problem is because of the ', you need to escape it like that :
$this->addSql('insert into `Translations` values(\'fr\', \'{
"footer_header": "Contactez-nous",
"footer_address": "Tour Ariane 92088 La Défense",
"footer_phone": "+33(1) 42 74 83 02",
"footer_email": "marsh#marsh.com",
"footer_website": "www.marsh.com",
"footer_cookies": "Politique relative aux cookie",
"footer_confidential": "Politique de confidentialité",
"footer_utilise": "Conditions d’utilisation",
"footer_link_tou": "https://www.marsh.com/fr/fr/terms-of-use.html",
"footer_link_privacy": "https://www.marsh.com/fr/fr/privacy-notice.html",
"footer_link_cookies": "https://www.marsh.com/fr/fr/cookie-notice.html",
"marketing_contact": "Contact",
"marketing_address": "Tour Ariane 92088 La Défense",
"marketing_phone": "+33(1) 42 74 83 02",
"marketing_email": "marsh#marsh.com",
"price_lab": "Compte tenu des informations complétées précemment, votre prime s élève à",
"price_lab1": "HT",
"price_lab2": "Taxes",
"price_lab3": "TTC",
"price_lab4": "Frais de gestion",
"price_lab5": "Montant total de votre prime",
"signature_heading": "Veuillez remplir les informations ci-dessous afin de signer électroniquement votre document :",
"signature_name1_lab": "<div>Prénom</div>",
"signature_name1": "Prénom",
"signature_name2_lab": "<div>Nom</div>",
"signature_name2": "Nom",
"signature_phone_lab": "<div>Numéro de téléphone</div>",
"signature_phone": "Format attendu : +33658968956",
"signature_otp": "Nous vous avons envoyé votre code, merci de le renseigner ci-dessous.",
"payment_gateway": "Pour vous permettre de procéder au règlement en ligne par carte bancaire de votre cotisation d’assurance en toute sérénité, MARSH a choisi la solution proposée par son partenaire bancaire : la Société Générale. Le paiement s’effectuant sur un serveur totalement sécurisé, aucune information ne transite par notre site https://connexion.marsh.com. Les échanges se déroulant en mode SSL (Secure Sockets Layer), norme de sécurité de transfert, l’ensemble des données sont cryptées afin d’empêcher leur lecture ou leur interception par des tiers. Ce protocole permet d’établir une connexion sécurisée sur Internet, afin d’exclure toute fraude. Le cadenas placé en barre d’adresse de votre écran témoigne de la sécurisation de la connexion ».",
"payment_button": "Traiter le paiement",
"final_page": "Votre demande est bien enregistrée. Nos équipes vont étudier votre dossier et reviendront vers vous par email rapidement. Si vous avez des questions, nous vous invitons à adresser un email à ",
"final_file_name": "Votre document signé",
"zipFile_Name": "Fichiers attachés"
}\')');
I can not run this script, I have every time two error messages can you help me
(!) Warning: DOMDocument :: loadHTML (): Empty string Supplied as
input in C: \ wamp \ www \ form \ formulaire.php on line 23
0.1442 2 142344 loadHTML () .. \ formulaire.php: 23 Notice (!): Undefined variable: description in C: \ wamp \ www \ form \
formulaire.php on line 57
<?php
//La page qu'on veut utiliser
$wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth';
//On initialise cURL
$ch = curl_init();
//On lui transmet la variable qui contient l'URL
curl_setopt($ch, CURLOPT_URL, $wikipediaURL);
//On lui demdande de nous retourner la page
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//On envoie un user-agent pour ne pas être considéré comme un bot malicieux
curl_setopt($ch, CURLOPT_USERAGENT, 'Le blog de Samy Dindane (www.dinduks.com');
//On exécute notre requête et met le résultat dans une variable
$resultat = curl_exec($ch);
//On ferme la connexion cURL
curl_close($ch);
//On crée un nouveau document DOMDocument
$wikipediaPage = new DOMDocument();
//On y charge le contenu qu'on a récupéré avec cURL
$wikipediaPage->loadHTML($resultat);
//On parcourt les balises <div>
foreach($wikipediaPage->getElementsByTagName('div') as $div){
//Si l'id de la page est bodyContent
if($div->getAttribute('id') == "bodyContent"){
//On met le contenu du premier <p> dans une variable
$premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue);
//Si le premier <p> est vide ou ne contient pas du texte
while($premierP == '<br>' || $premierP == '<br />' || $premierP == ''){
//On le supprime
$div->removeChild($div->getElementsByTagName('p')->item(0));
//Et on passe au <p> suivant
$premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue);
};
//Un joli try pour éviter les messages d'erreur
try{
//On parcourt toutes les tables
foreach( $div->getElementsByTagName('table') as $table ){
//Et on les supprime
$div->removeChild($table);
}
} catch(Exception $e){
//On censure :P
}
//On récupère le contenu de la fameuse balise <p> dans une variable
$description = '<p>' . $div->getElementsByTagName('p')->item(0)->nodeValue. '</p>';
}
}
//On enlève la syntaxe propre à Wikipedia
$description = preg_replace('/\[[0-9]*\][,]|\[[0-9]*\]/', '', $description);
//On affiche de résultat
echo $description;
?>
Hello I tackled too big so I gave up Thanks for your help
Check out Simple Html Dom. It really simplifies finding stuff in html files. Here is an example with your code.
<?php
include("simple_html_dom.php");
$wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth';
$html = file_get_html($wikipediaURL);
$description = '<p>' .$html->find('p', 0). '</p>';
$description = preg_replace('/\[[0-9]*\][,]|\[[0-9]*\]/', '', $description);
echo $description;
Simple Html Dom Documentation
Try this
$resultat = file_get_contents('http://fr.wikipedia.org/wiki/Megadeth');
I have a simple PHP script :
function test() {
$sql = "select author, synopsis from book";
$result = mysql_query($sql); // result set
while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) {
$arr[] = $rec;
};
$data = json_encode($arr); //encode the data in json format
echo $data;
}
The problem is that when I try to read the result with jQuery, I get ‘"synopsis" : NULL‘. I'm wondering is it because the value of synopsis in the database contains multiple lines?
jQuery code :
<script>
$(document).ready(function() {
$.ajax({
url: "data/book.php",
type: 'POST',
dataType: 'json',
success : function (data) {
$('div.book').text(data[0].synopsis);
}
});
});
</script>
The output of the php :
[{"author":"author","synopsis":null}]
Responde to #iMx suggestion :
array(2) {
[0]=>
array(2) {
["author"]=>
string(7) "author"
["synopsis"]=>
string(697) "Le patient du psychiatre
Dekker, un certain Boone, avoue durant les transes dans lesquelles
le plonge le docteur, qu'il aurait commis une dizaine de meurtres,
tous plus sordides les uns que les autres. Seulement, une fois sortie de
cet �tat d'exaltation, l'homme ne se rappelle de rien. D�sesp�r�, Boone fait une
tentative de suicide rat�e qui le conduit � l'h�pital. Son compagnon de chambre,
visiblement bien cram� du cerveau, �voque le nom de Midian, un endroit dans le
d�sert de l'Athabasca o� se regroupent les damn�s de la terre,
les �tres qui souffrent horriblement. Convaincu de pouvoir y trouver un r
efuge, et ainsi de mettre un terme � ses crimes, il part sur ce lieu �trange..."
}
Maybe there is a problem because of the french characters?
I guess it is an encoding problem. What encoding do your mysql tables have? json_encode() accepts only UTF-8 strings and could return null on a non UTF-8 strings - maybe it is your problem. Try to convert the strings with iconv() or mb_convert_encoding() or to set your MySQL query encoding to UTF-8 with mysql_query('SET CHARACTER SET utf8') before your SELECT requests.
I have 2 things I am trying to do here but I am miserably failing and I have tried everything so I don't know the reason.
I am trying to use str_replace to remove the copyright, but the copyright signature of the email is appearing.
For some reason, at random spots in the message, it's entering numbers. I am really confused why this is happening. Below is the PHP code and how the HTML output looks.
**** NEW Output:****
I added the qprint and now I get:
Output:
Code:
<?php
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'username#gmail.com';
$password = 'Password';
/* try to connect */
$inbox = imap_open($hostname, $username, $password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox, 'ALL');
/* if emails are returned, cycle through each... */
if ($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
/* for every email... */
foreach ($emails as $email_number) {
/* get information specific to this email */
$overview = imap_fetch_overview($inbox, $email_number, 0);
$message = imap_fetchbody($inbox, $email_number, 2);
$DateFormatted = str_replace("-0500", "", $overview[0] -> date);
/* output the email header information */
$output .= '<span class="msg_subject">' . $overview[0] -> subject . '</span> | ';
$output .= '<span class="msg_date"> ' . $DateFormatted . '</span><br />';
$bodyFormatted = str_replace("This e-mail (and attachment(s)) is confidential, proprietary, may be subject to copyright and legal privilege and no related rights are waived. If you are not the intended recipient or its agent, any review, dissemination, distribution or copying of this e-mail or any of its content is strictly prohibited and may be unlawful. All messages may be monitored as permitted by applicable law and regulations and our policies to protect our business. E-mails are not secure and you are deemed to have accepted any risk if you communicate with us by e-mail. If received in error, please notify us immediately and delete the e-mail (and any attachments) from any computer or any storage medium without printing a copy.
Ce courriel (ainsi que ses pièces jointes) est confidentiel, exclusif, et peut faire l’objet de droit d’auteur et de privilège juridique; aucun droit connexe n’est exclu. Si vous n’êtes pas le destinataire visé ou son représentant, toute étude, diffusion, transmission ou copie de ce courriel en tout ou en partie, est strictement interdite et peut être illégale. Tous les messages peuvent être surveillés, selon les lois et règlements applicables et les politiques de protection de notre entreprise. Les courriels ne sont pas sécurisés et vous êtes réputés avoir accepté tous les risques qui y sont liés si vous choisissez de communiquer avec nous par ce moyen. Si vous avez reçu ce message par erreur, veuillez nous en aviser immédiatement et supprimer ce courriel (ainsi que toutes ses pièces jointes) de tout ordinateur ou support de données sans en imprimer une copie.", "", $message);
/* output the email body */
$output .= '<span class="msg_body">' . $bodyFormatted . '</span><br /><br />';
}
echo $output;
}
/* close the connection */
imap_close($inbox);
?>
I don't know which format the email is coming across as, but it looks like you need to use imap_qprint($message); to get the message in the correct format, then do str_replace('©','',$bodyFormatted); because it should be in HTML.
The random numbers are from not using imap_qprint(). You have 8bit strings inside your message that need to be converted.
Here's the modified code:
/* get information specific to this email */
$overview = imap_fetch_overview($inbox, $email_number, 0);
$message = imap_fetchbody($inbox, $email_number, 2);
$message = imap_qprint($message);
$DateFormatted = str_replace("-0500", "", $overview[0] -> date);
/* output the email header information */
$output .= '<span class="msg_subject">' . $overview[0] -> subject . '</span> | ';
$output .= '<span class="msg_date"> ' . $DateFormatted . '</span><br />';
$string = "you should get the HTML and put it in there, I'm sure there are things like and other html chars that it's not finding";
$bodyFormatted = str_replace($string, "", $message);
/* output the email body */
$output .= '<span class="msg_body">' . $bodyFormatted . '</span><br /><br />';
In an e-commerce website for a company located in France we want to take payments through Mercanet (BNP Paribas). I downloaded API's for linux, it only contains two binary files (request, response) there are no PHP examples. No answer from helpdesk either. Also I downloaded the certificate for the website, but just stuck as there is no howto files.
TO anybody out there pulling their hair out with the ATOS / Mercanet / Sips payment system, below is an example of the PHP file they sent me.
All their help docs is in french.
It is important to note that there are 32 and 64 bit versions - you have to use correct one. I tried the tricks mentioned here
https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://www.developpez.net/forums/d599959/webmasters-developpement-web/general-conception-web/e-commerce/probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhj4iJ0kxEE9EoUbQTjq_0peu4_PSQ
FTP trick did not work.
https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://www.developpez.net/forums/d1154720/webmasters-developpement-web/general-conception-web/e-commerce/probleme-d-installation-d-plug-in-mercanet/&usg=ALkJrhiEypDQCmEu5uVWD5uDpOChAAaNbQ
32bit hack did not work
this give you pretty good instructions. translations looks good enough to make sense of it
https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=translate.google.co.za&sl=fr&u=http://thierry-godin.developpez.com/php/atos/&usg=ALkJrhjC12cJksMlauYxLvwnoxPV0G__9g
the only thing that worked was having the correct version.
also remember if you using git, a push may reset permissions, then you have to 755 the request file everytime you push.
PHP example:
print ("<HTML><HEAD><TITLE>MERCANET - Paiement Securise sur Internet</TITLE></HEAD>");
print ("<BODY bgcolor=#ffffff>");
print ("<Font color=#000000>");
print ("<center><H1>Test de l'API plug-in MERCANET</H1></center><br><br>");
// Affectation des paramètres obligatoires
$parm="merchant_id=082584341411111";
$parm="$parm merchant_country=fr";
$parm="$parm amount=100";
$parm="$parm currency_code=978";
// Initialisation du chemin du fichier pathfile (à modifier)
// ex :
// -> Windows : $parm="$parm pathfile=c:/repertoire/pathfile";
// -> Unix : $parm="$parm pathfile=/home/repertoire/pathfile";
$parm="$parm pathfile=" . XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/param/pathfile';
// Si aucun transaction_id n'est affecté, request en génère
// un automatiquement à partir de heure/minutes/secondes
// Référez vous au Guide du Programmeur pour
// les réserves émises sur cette fonctionnalité
//
// $parm="$parm transaction_id=123456";
// Affectation dynamique des autres paramètres
// Les valeurs proposées ne sont que des exemples
// Les champs et leur utilisation sont expliqués dans le Dictionnaire des données
//
// $parm="$parm normal_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
// $parm="$parm cancel_return_url=http://www.maboutique.fr/cgi-bin/call_response.php";
// $parm="$parm automatic_response_url=http://www.maboutique.fr/cgi-bin/call_autoresponse.php";
// $parm="$parm language=fr";
// $parm="$parm payment_means=CB,2,VISA,2,MASTERCARD,2";
// $parm="$parm header_flag=no";
// $parm="$parm capture_day=";
// $parm="$parm capture_mode=";
// $parm="$parm bgcolor=";
// $parm="$parm block_align=";
// $parm="$parm block_order=";
// $parm="$parm textcolor=";
// $parm="$parm receipt_complement=";
// $parm="$parm caddie=mon_caddie";
// $parm="$parm customer_id=";
// $parm="$parm customer_email=";
// $parm="$parm customer_ip_address=";
// $parm="$parm data=";
// $parm="$parm return_context=";
// $parm="$parm target=";
// $parm="$parm order_id=";
// Les valeurs suivantes ne sont utilisables qu'en pré-production
// Elles nécessitent l'installation de vos fichiers sur le serveur de paiement
//
// $parm="$parm normal_return_logo=";
// $parm="$parm cancel_return_logo=";
// $parm="$parm submit_logo=";
// $parm="$parm logo_id=";
// $parm="$parm logo_id2=";
// $parm="$parm advert=";
// $parm="$parm background_id=";
// $parm="$parm templatefile=";
// insertion de la commande en base de données (optionnel)
// A développer en fonction de votre système d'information
// Initialisation du chemin de l'executable request (à modifier)
// ex :
// -> Windows : $path_bin = "c:/repertoire/bin/request";
// -> Unix : $path_bin = "/home/repertoire/bin/request";
//
$path_bin = XOOPS_ROOT_PATH.'/tray_code/payment_gateways/sips/bin/static/request';
// Appel du binaire request
// La fonction escapeshellcmd() est incompatible avec certaines options avancées
// comme le paiement en plusieurs fois qui nécessite des caractères spéciaux
// dans le paramètre data de la requête de paiement.
// Dans ce cas particulier, il est préférable d.exécuter la fonction escapeshellcmd()
// sur chacun des paramètres que l.on veut passer à l.exécutable sauf sur le paramètre data.
$parm = escapeshellcmd($parm);
$result=exec("$path_bin $parm");
// sortie de la fonction : $result=!code!error!buffer!
// - code=0 : la fonction génère une page html contenue dans la variable buffer
// - code=-1 : La fonction retourne un message d'erreur dans la variable error
//On separe les differents champs et on les met dans une variable tableau
$tableau = explode ("!", "$result");
// récupération des paramètres
$code = $tableau[1];
$error = $tableau[2];
$message = $tableau[3];
// analyse du code retour
if (( $code == "" ) && ( $error == "" ) )
{
print ("<BR><CENTER>erreur appel request</CENTER><BR>");
print ("executable request non trouve $path_bin");
}
// Erreur, affiche le message d'erreur
else if ($code != 0){
print ("<center><b><h2>Erreur appel API de paiement.</h2></center></b>");
print ("<br><br><br>");
print (" message erreur : $error <br>");
}
// OK, affiche le formulaire HTML
else {
print ("<br><br>");
# OK, affichage du mode DEBUG si activé
print (" $error <br>");
print (" $message <br>");
}
print ("</BODY></HTML>");