[RESOLU] Affichage Captcha dans formulaire suite passage PHP 4.4.9 à PHP 5.6

Petit nouveau ! | 7 Messages

27 déc. 2015, 15:38

Bonjour,

Tout d'abord je tiens à préciser que je suis novice en PHP.
Je suis chez OVH et j'ai un formulaire qui fonctionne parfaitement en PHP 4.4.9.
Après un passage en PHP 5.6, l'image code.php ligne 248 (Captcha) ne s'affiche plus.

Un grand merci par avance à tous ceux qui voudraient bien m'aider.

Voici le code du formulaire qui fonctionne bien en PHP 4.4.9.

Le Formulaire

Code : Tout sélectionner

<?php // start session session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Document sans nom</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <html> <body> <?php // fichier de conf. (form_config.php) if(file_exists('form_config.php')) { include('form_config.php'); } else { die('<div id="boite">Fichier de configuration non trouvé.</div>'); } $nom = stripslashes(htmlspecialchars($_POST['nom'], ENT_NOQUOTES)); $email = htmlspecialchars($_POST['email']); $objet = stripslashes(htmlspecialchars($_POST['objet'], ENT_NOQUOTES)); $message = stripslashes(htmlspecialchars($_POST['message'], ENT_NOQUOTES)); $dest ='Nemo <[email protected]>'."\n"; $auto_mail = htmlspecialchars($_POST['auto_mail']); $code = htmlspecialchars($_POST['code']); $envoyer = htmlspecialchars($_POST['envoyer']); function boite($message) { echo "<div id=\"boite\">".$message."</div>"; } if($envoyer) { $message_erreur = ""; if (empty($nom) || empty($email) || empty($message) || empty($code)) { if (empty($nom)) $message_erreur .= "Vous devez remplir le champ Nom.\\n"; if (empty($email)) $message_erreur .= "Vous devez remplir le champ Email.\\n"; if (empty($message)) $message_erreur .= "Vous devez remplir le champ Message.\\n"; if (empty($code)) $message_erreur .= "Vous devez remplir le champ Code.\\n"; boite("<script language='JavaScript'>alert('".$message_erreur."');</script>"); } else { $minimum_long = 2; $long_nom = strlen($nom); if($long_nom < $minimum_long) $message_erreur .= "La saisie du nom est trop courte.\\n"; $message_long_min = 2; $long_msg = strlen($message); if($long_msg < $message_long_min) $message_erreur .= "Le message est trop court.\\n"; if(!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$#", $email)) $message_erreur .= "L\'adresse e-mail saisie est incorrecte.\\n"; list($partie1, $domaine) = split('@', $email, 2); if(!checkdnsrr($domaine, 'MX')) $message_erreur .= "Le domaine de votre adresse e-mail n\'existe pas.\\n"; if($_SESSION['image'] != $code) $message_erreur .= "Le code de vérification est incorrect.\\n"; if(strlen($message_erreur) > 0) boite("<script language='JavaScript'>alert('".$message_erreur."');</script>"); else { mail($monmail, $objet, $message, "De ".$email." (".$nom.") | A : ".$dest." | Objet : ".$objet.""); if ($act_aut_mail == 'oui' && $auto_mail) mail($email, $objet, $message, "De ".$email." (".$nom.") | A : ".$dest." | Objet : ".$objet.""); boite("<p class=\"error\">xxxx vous remercie ! <br> Votre e-mail a été envoyé avec succès ! <a href=\"http://www.xxxxxx.com/index.php\">page d'accueil</a> dans 7 ... secondes !</p>"); echo "<meta http-equiv='refresh' content='7; url=http://www.xxxxxxx.com/index.php'>"; session_unset(); session_destroy(); } } } ?> <form action="<?php echo $PHP_SELF; ?>" method="post"> <table width="450" border="0" align="center" cellpadding=0 cellspacing=0> <tr> <td width="450" rowspan="2" valign="top" bgcolor="#ffffff"><p></p> <table width="450" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#CD9E80"> <tr> <td colspan="2">&nbsp;</td> </tr> <tr> <td width="68" align="right"><span class="Etoile">*</span><strong></strong><span class="textegris"> Nom : </span><span class="txt-titre">&nbsp; </span></td> <td width="358" height="30" colspan="2"><input type="texte" name="nom" value="<?php echo $nom; ?>" size="35" maxlength="75" style="background:#Ffffff;color:#000000"></td> </tr> <tr> <td align="right"><span class="Etoile">*</span><strong><span class="textegris"> Email : </span><span class="txt-courant2-b">&nbsp;</span></strong> </td> <td height="30" colspan="2"><input type="texte" name="email" value="<?php echo $email; ?>" size="35" maxlength=75 style="background:#ffffff;color:#000000"></td> </tr> <tr> <td align="right"><span class="Etoile">*</span><strong><span class="textegris"> Objet : </span><span class="txt-courant2-b">&nbsp;</span></strong> </td> <td><input type="texte" name="objet" value="<?php echo $objet; ?>" size="35" maxlength="75" style="background:#Ffffff;color:#000000"></td> </tr> <tr align="center"> <td colspan="3"><span class="Style11"><br/> <br/> <b> <p><span class="textegris"><span class="etoile">*</span> Message :</span><br /> <textarea name="message" cols="50" rows="8" maxlength="9000" wrap="physical" style="background:#ffffff;color:#000000;"><?php echo $message; ?></textarea> </p> </b> </span></td> </tr> <tr> <td>&nbsp;</td> <td><span class="etoile">*</span> <span class="textegris">Merci de remplir les champs</span>. &nbsp; <?php if($act_aut_mail == 'oui') { echo '<input type="checkbox" name="auto_mail"><span class="texte12grisg"> S\'envoyer une copie<br /></span><br />'; // echo "<span class=\"bold\">$name</span>"; echo '<span class="red">$ma_variable_a_afficher_en_rouge</span>'; } ?></td> </tr> <tr> <td>&nbsp;</td> <td><div align="left"><img src="code.php" /> </div></td> </tr> <tr> <td>&nbsp;</td> <td><div align="left"><span class="textegris"><span class="etoile">*</span> Entrez le code :</span> <input type="text" name="code" size="5" maxlength=5 style="background:#342f2c;color:#cfc6a7;" /> </div></td> </tr> <tr> <td>&nbsp;</td> <td><p align="center"><br /> <input type="submit" name="envoyer" class="boutonpost" style="color:#ffffff" value="Envoyer" /> &nbsp; <input type="reset" name="annuler" class="boutonpost" style="color:#ffffff" value="Annuler" /> </p> <p></p> </table> </table> </form> <p></p> <p>&nbsp;</p> </body> </html>
Captcha

Code : Tout sélectionner

<?php // start session session_start(); // ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnpqrstwxyz123456789 $liste = 'abcdefghkmnpqrstwxyz23456789'; $code_now = ''; // =5 while(strlen($code_now) != 5) { $code_now .= $liste[rand(0, 63)]; } $_SESSION['image'] = $code_now; header('Content-type: image/jpeg'); header('Cache-Control: no-store, no-cache, must-revalidate'); // 40, 15 $img = imageCreate(50, 20); $bc = imageColorAllocate($img, 51, 51, 51); $texte = imageColorAllocate($img, 254, 255, 240); // 2, 5, 1.875, imageString($img, '4', 5, 2.875, $code_now, $texte); // 30 imagejpeg($img, '', 30); imageDestroy($img); ?>
Config

Code : Tout sélectionner

<?php // adresse e-mail $monmail = '[email protected]'; // oui pour activer l'option de s'envoyer une copie du mail $act_aut_mail = 'oui'; // oui pour activer le lien de retour au site $act_retoursite = 'oui'; // URL du site $site_url = 'http://[email protected]/'; ?>

Eléphant du PHP | 385 Messages

27 déc. 2015, 16:35

Bonjour, tu as une erreur? as tu vérifié que la bibliothèque est toujours active?

Petit nouveau ! | 7 Messages

27 déc. 2015, 20:25

Merci pour ta réponse ... :)

La bibliothèque ?
Excuse mon ignorance, mais je ne comprends pas ?

Voila le problème en photo, si ça peut aider.

PHP 4.4.9.
Image

PHP 5.6
Image

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 déc. 2015, 00:15

Bonjour,

Fais un clic droit sur ton image cassée, et demande à afficher l'image dans un nouvel onglet.
Si tu as un message comme quoi l'image n'a pas pu être affichée à cause d'une erreur, met en commentaire la ligne :
header('Content-type: image/jpeg');
Là tu devrais désormais voir le ou les messages d'erreurs PHP pour que tu puisses debuguer ton script.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

28 déc. 2015, 01:23

Dans ma page, je n'ai que ça ...
<img src="code.php" />

Et quand je fais un clic droit, il me dit simplement que je ne peux pas afficher l'image dans une page noire ....
Aucun message d'erreur.

J'ai mis en commentaire : // header('Content-type: image/jpeg'); dans code.php
Mais je n'ai pas de message d'erreur , juste une page blanche, alors qu'avant j'avais une page noire avec un texte comme quoi l'image ne peut être ouverte.

Il y a forcément un changement de syntaxe entre PHP4 et PHP 5.6, mais lequel ?

La page contact de mon site en PHP 4.
http://www.nemodus.com/fz1000/contact/c ... fz1000.php

Merci !!!! Une autre piste ?
Modifié en dernier par pkdev le 28 déc. 2015, 01:45, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 déc. 2015, 01:31

Page blanche => C'est probablement que tu as une erreur PHP mais qu'elle est masquée par la configuration de ton serveur.
Voila ce qu'il faut faire pour voir le problème : faq-tutoriels/page-blanche-script-php-c ... 73178.html
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

28 déc. 2015, 02:25

Merci !!!

J'ai fait un htaccess avec les lignes ... (Je suis en mutualisé chez OVH)

php_flag display_errors on
php_value error_reporting E_ALL

En PHP 5.6, le site n'est plus accessible et pas seulement la page contact avec le message ...

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.


En ajoutant : error_reporting(E_ALL); sur le formulaire et code au début avant session_start();
J'ai un problème avec les accents ...

http://www.nemodus.com/fz1000/contact/c ... fz1000.php


Encore Merci !!!!
Modifié en dernier par pkdev le 28 déc. 2015, 13:01, modifié 1 fois.

Eléphant du PHP | 243 Messages

28 déc. 2015, 02:58

Salut,

Je ne sais pas comment ça se passe chez OVH mais possèdes-tu un fichier nommé log ou server dans ton FTP ?
Sinon, jette un œil sur ton espace client.
C'est ce fichier qui contiendra précisément les erreurs et permettra donc de retrouver la source du problème.

Pour le problème avec les accents, sans doutes un problème d'encodage.

Belle soirée.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 déc. 2015, 10:50

Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

28 déc. 2015, 12:56

Bonjour,

J'ai été voir dans mon espace client, il y a bien des log "error" ...
Mais Il n'y a rien dans les log ....

Voila ce que j'ai pour le 27/12 ... 1 ligne ...
[Sun Dec 27 17:26:37 2015] [error] [client 93.186.202.253] [host http://www.xxxx.com] script not found or unable to stat: /homez.41/xxxxx/www/xxxxxxxxxxx.php
J'ai supprimé un bout de code javascript dont je ne me sers plus.
Ça ne concerne pas la page contact et il n'y a rien sur les erreurs PHP.

Merci encore ... je continue à chercher, en attendant je reste en PHP4.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 déc. 2015, 13:00

Ça c'est les logs Apache, il faut que tu regarde les logs d'erreur PHP
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

28 déc. 2015, 13:10

Sur la page d'OVH, il n'y a rien sur les logs PHP ...
https://www.ovh.com/fr/g1344.statistiqu ... logs_bruts

Je viens de trouver ... :)
https://www.ovh.com/fr/g1207.configurer-php-web
Il faut que je mette .ovhconfig en mode développement et pas en production pour avoir les logs.

Je vais regarder, un peu plus tard.

MERCI again !!!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 déc. 2015, 13:42

Sur la page d'OVH, il n'y a rien sur les logs PHP ...
https://www.ovh.com/fr/g1344.statistiqu ... logs_bruts
Je n'ai pas de compte OVH donc je ne peux pas t'aider davantage mais à priori ce qu'ils appellent Logs web, correspond aux logs Apache (log d'accès), et je suppose que "Logs erreur" correspond aux logs PHP.

Mais ta 2nde piste de mettre le site en mode dev, devrait permettre de visualiser les erreurs directement, c'est encore + simple.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

29 déc. 2015, 18:40

Problème résolu !

Merci à tous pour votre aide.