LiipImagineBundle Error encodage HTML - php

I use LiipImagineBundle for re-size my image after upload. I have a error when I tried to upload some Jpeg about HTML encodage.
With jpeg form my camera that's work, but not form my phone camera.
What my browser show only js error and return blank page ?
I didn't understand what is that error.
Full message in french :
L'encodage de caractères du document HTML n'a pas été déclaré. Le document sera affiché avec des caractères incorrects pour certaines configurations de navigateur si le document contient des caractères en dehors de la plage US-ASCII. L'encodage de caractères de la page doit être
déclaré dans le document ou dans le protocole de transfert.
controller Symfony2
private function compressFile($file) {
$path = $file->getWebPath();
$absPath = $file->getAbsolutePath();
$tmpPath = $absPath."tmp";
$filter = "image";
$container = $this->container;
$dataManager = $container->get('liip_imagine.data.manager');
$filterManager = $container->get('liip_imagine.filter.manager');
try {
$image = $dataManager->find($filter, $path);
$response = $filterManager->applyFilter($image, $filter);
//$response = $filterManager->get($this->getRequest(), $filter, $image, $path);
$fileCompressed = $response->getContent();
}
catch (\Exception $e) {
return "error";
}
$f = fopen($tmpPath, 'w');
fwrite($f, $fileCompressed);
fclose($f);
unlink($absPath);
rename($tmpPath, $absPath);
return null;
}
I have found help to create my compress Function here.
I tried to catch some Exception but nothing work.
Someone have a solution ?
Sorry for my English, I am learning it...

It may be a little bit anoying but have you set default_charset to "UTF-8" in your php.ini ?
If you use Apache: Is (AddDefaultCharset UTF-8) present on your httpd.conf ?
In your view: is is présent on between your HTML Header.
Check the encoding of your editor to UTF-8 without BOM if it's not configured yet and save all file you have generated with that correct charset.
If not this may be the origin of that bad behavior.
Have a nice day.
Best Regards

Related

Reading csv file columns and writing them to a new file

I've been trying to read a csv file and extract the first two columns and save it into another csv file.
The csv file is tab separated. The code is written do show it on the webpage but when it comes to writing the csv file. It prints on a new line which I don't want. Can anyone tell me what I'm doing wrong or what should I add to get the output in one line per row?
$string = <<<CSV
"IRC_01T_00K_002" "Bonjour monsieur, je m'appelle Léon Bop j'habite au Sénégal, j'ai 28ans. J'étais religieux moine bénédictin et je viens de quitter la vie religieuse il y a 2ans. J'ai fait l'hôtellerie comme la plonge, la sécurité et équipier de cuisine, actuellement je suis commerçant, et depuis quelques temps je cherche un correspondant canadien pour venir immigrer au Canada, puisque c'est mon pays de rêve.\
Voilà mes coordonnées:\
leonbop#gmail.com\
+221775797837." "Wrong Channel" "2018-10-26 13:57:16" "DE8B33B0-C68F-11E8-8BFB-0242AC110004" "2018-10-26 13:57:16" "DE8B33B0-C68F-11E8-8BFB-0242AC110004"
"IRC_01T_00K_002" "bonjour le Canadian immigration je suis au Congo je suis un chauffeur" "Wrong Channel" "2018-10-12 15:53:29" "DE8B33B0-C68F-11E8-8BFB-0242AC110004" "2018-10-12 15:53:29" "DE8B33B0-C68F-11E8-8BFB-0242AC110004"
"IRC_031_000_008" "Thnks so much. I will apply before her status expires. You guys are so helpful \
. I am lucky that I am in canada in people like you ." "Chat Conclusion" "2018-10-24 17:41:50" "380922FF-AB0E-11E8-80D2-0242AC110004" "2018-10-24 17:41:50" "380922FF-AB0E-11E8-80D2-0242AC110004"
"IRC_031_000_008" "Ok thanks a lot" "Chat Conclusion" "2018-10-19 04:19:35" "A4D460D3-F448-1693-BA91-C6A0A40998BB" "2018-10-19 04:19:35" "A4D460D3-F448-1693-BA91-C6A0A40998BB"
CSV;
//$string = str_replace(array('\\','/','\\\\','*','"','<','>','|',"'"), '', $string);
$fp=fopen('test13.csv','w');
$handle = fopen("data://text/plain," . $string, "r");
if ($handle) {
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE)
{
//$num = count($data);
for ($c=0; $c < 2; $c++)
{
echo $data[$c] . "<br />\n";
$data[$c] = str_replace(array('\\','/','\\\\','*','"','<','>','|',"'"), '', $data[$c]);
$data[$c] = preg_replace('/^\h*\v+/m', '', $data[$c]); // remove empty lines
$data[$c] = trim($data[$c]);
fwrite($fp,$data[$c]);
fwrite($fp,"\t");
//fwrite($fp, $data[$c]);
}
fwrite($fp,"\n");
}
fclose($fp);
fclose($handle);
}
Output:
IRC_01T_00K_002 Bonjour monsieur, je mappelle Léon Bop jhabite au Sénégal, jai 28ans. Jétais religieux moine bénédictin et je viens de quitter la vie religieuse il y a 2ans. Jai fait lhôtellerie comme la plonge, la sécurité et équipier de cuisine, actuellement je suis commerçant, et depuis quelques temps je cherche un correspondant canadien pour venir immigrer au Canada, puisque cest mon pays de rêve.
Voilà mes coordonnées:
leonbop#gmail.com
221775797837.
I expect the output to be: "first column" \t "second column". The new csv file created should have two columns and the second column value should be in one single line rather than multiple lines.
You have newlines in the second column of the CSV file. You can replace them with spaces:
data[$c] = str_replace("\n", " ", $data[$c]);

email confirmation with php and wampserver [duplicate]

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

I'm using function ExportTableau() I create new PDF('L') how I change format of pdf

I have problem with format of pdf when I use $pdf=new FPDF(''); it's allowed this error
Call to undefined method FPDF::ExportTableau()
so when I use this one $pdf=new PDF('L'); the format of pdf turned what can I do? I check for solution but I didn't found anything can someone help!
this is the problem the pdf is Turned
<?php
session_start();
require('../fpdf17/fpdf.php');
class PDF extends FPDF
{
//Chargement des données
function LoadData($file)
{
//Lecture des lignes du fichier
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));
return $data;
}
//Tableau coloré
function ExportTableau($header,$data)
{
//Couleurs, épaisseur du trait et police grasse
$this->SetFillColor(150,180,255); //fond des entetes de colonnes
$this->SetTextColor(0); //couleur du texte des entetes des colonnes
$this->SetDrawColor(0); // couleur des bordures
$this->SetLineWidth(.3); //epaisseur des traits
$this->SetFont('','B');
//En-tête
$w=array(35,20,50,20,45);
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],5,$header[$i],1,0,'C',1);
$this->Ln();
//Restauration des couleurs et de la police
$this->SetFillColor(224,235,255); //couleur du fond des cases
$this->SetTextColor(0); //couleur du texte des cases
$this->SetFont('');
//Données
$fill=false;
foreach($data as $row)
{
$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
$this->Cell($w[2],6,$row[2],'LR',0,'L',$fill);
$this->Cell($w[3],6,$row[3],'LR',0,'L',$fill);
$this->Cell($w[4],6,$row[4],'LR',0,'L',$fill);
$this->Ln();
$fill=!$fill;
}
$this->Cell(array_sum($w),0,'','T');
}
}
}
}
$pdf=new PDF('L');
$pdf->AddPage();
.
.

automatic form submission with CURL php

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');

Php mysql script returns Null insead of a "long" value

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.

Categories