Conversion PHP 4 et 5

  • Créateur du sujet Créateur du sujet Jojom
  • Date de début Date de début

Jojom

Membre confirmé
26 Août 2006
55
1
Barcelone
Salut à tous !

Après plusieurs jours (et nuits !) de lutte acharnée, je viens de finir mon premier site en php !!:) :D

Tout content, je l'envoi sur mon espace, et là... c'est le drame ! Plus grand chose ne marche (en fait ya juste les include qui marchent...) :affraid: :eek:

J'ai fait mon site sous windows, avec easyPHP, et tout marchait très bien. J'ai ensuite essayé sur mon mac avec MAMP, et là ça ne marchait plus. En farfouillant, j'ai réglé MAMP sur PHP 4, et là tout remarche comme sous windows !

J'en déduit que ça veut dire que mon site est en php 4.

Donc voici ma question : c'est quoi la différence entre les versions 4 et 5, et comment je peux faire pour que mon site marche ?

PS : j'ai cherché une option chez mon hébergeur pour activer le php 4 mais je n'ai pas trouvé.
 
Salut à tous !

Après plusieurs jours (et nuits !) de lutte acharnée, je viens de finir mon premier site en php !!:) :D

Tout content, je l'envoi sur mon espace, et là... c'est le drame ! Plus grand chose ne marche (en fait ya juste les include qui marchent...) :affraid: :eek:

J'ai fait mon site sous windows, avec easyPHP, et tout marchait très bien. J'ai ensuite essayé sur mon mac avec MAMP, et là ça ne marchait plus. En farfouillant, j'ai réglé MAMP sur PHP 4, et là tout remarche comme sous windows !

J'en déduit que ça veut dire que mon site est en php 4.

Donc voici ma question : c'est quoi la différence entre les versions 4 et 5, et comment je peux faire pour que mon site marche ?

PS : j'ai cherché une option chez mon hébergeur pour activer le php 4 mais je n'ai pas trouvé.
:mouais:

C'est bizarre ce que tu raconte...
PHP 5 est compatible avec pratiquement tout PHP 4, ça ajoute juste des fonctionnalités (support étendu de la POO, fonctions simplexml, file_(get|put)_contents, et autres...).

Je me demande comment ça se fait, tu peux nous mettre un bout de ton code ici ?

Quel est ton hébergeur ?
 
Je suis chez Aztus, un hébergeur canadien. Voici l'adresse du site en question : http://www.aefq.ca/nouveau/ . Le site qui ne marche pas est donc dans le répertoire nouveau, pour l'instant le vieux tout moche est le seul visible par les visiteurs.

Je peux bien sûr mettre un bout du code ici, mais lequel ? Vu qu'il y a à peu près toutes les pages qui plantent... Est-ce qu'un bout serait plus utile en particulier ?
 
Je suis chez Aztus, un hébergeur canadien. Voici l'adresse du site en question : http://www.aefq.ca/nouveau/ . Le site qui ne marche pas est donc dans le répertoire nouveau, pour l'instant le vieux tout moche est le seul visible par les visiteurs.

Je peux bien sûr mettre un bout du code ici, mais lequel ? Vu qu'il y a à peu près toutes les pages qui plantent... Est-ce qu'un bout serait plus utile en particulier ?
Ben n'importe lequel du moment que c'est vers ce coin là que ça plante :)


@fredmac75 : PDO c'est dispo seulement à partir de PHP 5.1 et Jojom pense que son site est en PHP4 :)
 
Ben n'importe lequel du moment que c'est vers ce coin là que ça plante :)

Ok ! Alors voilà le morceau du script qui se charge d'enregistrer l'email du visiteur dans la base de données quand il demande à s'inscrire à la newsletter. Le problème arrive quand on clique sur le bouton valider du formulaire : au lieu de lancer cette page, il affiche une page blanche et ne fait rien.

<?php
mysql_connect("localhost:8889", "root", "root");
mysql_select_db("aefq");

if (isset($_POST['courriel'])) //on v&#233;rifie si le champs du formulaire a renvoy&#233; qqch
{
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['courriel'])) //on v&#233;rifie si le texte renvoy&#233; est une adresse mail
{//si c'est bien un mail, on l'enregistre dans la bdd et on donne confirmation au visiteur
$courriel = htmlentities($_POST['courriel'], ENT_QUOTES);
mysql_query("INSERT INTO newsletter VALUES('', '" . time() . "', '" . $courriel . "', '')");

echo ?>
<h3>Confirmation</h3>
<p>Votre inscription &#224; la newsletter a bien &#233;t&#233; prise en compte. Vous recevrez maintenant les courriels d'information de l'AEFQ.</p>
<p>Pour vous d&#233;sinscrire de la newsletter, utilisez le lien correspondant dans la section "Nous contacter" du site.</p>
<p><a href="index.php">Cliquez ici</a> pour retourner &#224; la page d'accueil.</p>
<?php
}

else
{//sinon on averti le visiteur que son adresse n'est pas valide, et on n'enregistre rien
echo ?>
<h3>Erreur</h3>
<p>D&#233;sol&#233;, votre inscription n'a pas pu &#234;tre finalis&#233;e. L'adresse &#233;lectronique que vous avez indiqu&#233;e n'est pas valide. Elle doit &#234;tre de la forme "a@bb.cc" o&#249; a, b et c peuvent &#234;tre des lettres SANS ACCENT NI MAJUSCULE, des chiffres, des points ou des tirets "-" et "_".</p>
<p><a href="index.php">Cliquez ici</a> pour retourner &#224; la page d'accueil et r&#233;essayer de vous inscrire.</p>
<?php
}
}

mysql_close();
?>


En fait je crois avoir remarqu&#233; que seules les pages qui utilisent des formulaires plantent. Les pages qui ne font qu'acc&#233;der &#224; la base de donn&#233;es pour afficher le contenu d'une table (comme les news) fonctionnent tr&#232;s bien.
 
Ok ! Alors voil&#224; le morceau du script qui se charge d'enregistrer l'email du visiteur dans la base de donn&#233;es quand il demande &#224; s'inscrire &#224; la newsletter. Le probl&#232;me arrive quand on clique sur le bouton valider du formulaire : au lieu de lancer cette page, il affiche une page blanche et ne fait rien.

<?php
mysql_connect("localhost:8889", "root", "root");
mysql_select_db("aefq");

if (isset($_POST['courriel'])) //on v&#233;rifie si le champs du formulaire a renvoy&#233; qqch
{
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['courriel'])) //on v&#233;rifie si le texte renvoy&#233; est une adresse mail
{//si c'est bien un mail, on l'enregistre dans la bdd et on donne confirmation au visiteur
$courriel = htmlentities($_POST['courriel'], ENT_QUOTES);
mysql_query("INSERT INTO newsletter VALUES('', '" . time() . "', '" . $courriel . "', '')");

echo ?>
<h3>Confirmation</h3>
<p>Votre inscription &#224; la newsletter a bien &#233;t&#233; prise en compte. Vous recevrez maintenant les courriels d'information de l'AEFQ.</p>
<p>Pour vous d&#233;sinscrire de la newsletter, utilisez le lien correspondant dans la section "Nous contacter" du site.</p>
<p><a href="index.php">Cliquez ici</a> pour retourner &#224; la page d'accueil.</p>
<?php
}

else
{//sinon on averti le visiteur que son adresse n'est pas valide, et on n'enregistre rien
echo ?>
<h3>Erreur</h3>
<p>D&#233;sol&#233;, votre inscription n'a pas pu &#234;tre finalis&#233;e. L'adresse &#233;lectronique que vous avez indiqu&#233;e n'est pas valide. Elle doit &#234;tre de la forme "a@bb.cc" o&#249; a, b et c peuvent &#234;tre des lettres SANS ACCENT NI MAJUSCULE, des chiffres, des points ou des tirets "-" et "_".</p>
<p><a href="index.php">Cliquez ici</a> pour retourner &#224; la page d'accueil et r&#233;essayer de vous inscrire.</p>
<?php
}
}

mysql_close();
?>


En fait je crois avoir remarqu&#233; que seules les pages qui utilisent des formulaires plantent. Les pages qui ne font qu'acc&#233;der &#224; la base de donn&#233;es pour afficher le contenu d'une table (comme les news) fonctionnent tr&#232;s bien.
:eek: HOULA !!

Ne te connecte pas a MySQL si tu n'en a pas l'utilit&#233; !

quand tu met la page chez ton h&#233;bergeur, tu adaptes les arguments de la fonction mysql_connect quand m&#234;me :mouais: ?

Sinon, c'est pas tr&#232;s propre les echo ?> ... <?php :)

Et dans tes requ&#234;tes SQL, tu devrait encadrer les noms de tables et de champs par ` :)

PS: utilise les balises
Bloc de code:
 ;)
 
Oui bien s&#251;r je remplace les arguments de connect par les "vrais" :)

Sinon pour les ' ' qu'il faudrait que j'utilise, il faudrait donc que j'&#233;crive :
Bloc de code:
mysql_connect("localhost:8889", "root", "root");
mysql_select_db("aefq");
mysql_query("INSERT INTO 'newsletter' VALUES('', '" . time() . "', '" . $courriel . "', '')");
mysql_close();

C'est &#231;a ?

C'est ce que j'ai fait, mais &#231;a ne marche toujours pas.

PS : wha trop fort les balises
Bloc de code:
, je savais pas que &#231;a existait ! merci ! :)
 
Je viens de voir que le safe mode de php &#233;tait activ&#233; chez mon h&#233;bergeur. Je sais pas trop ce que &#231;a veut dire, mais est-ce que mes probl&#232;mes pourraient venir de &#231;a ?
 
Je viens de voir que le safe mode de php &#233;tait activ&#233; chez mon h&#233;bergeur. Je sais pas trop ce que &#231;a veut dire, mais est-ce que mes probl&#232;mes pourraient venir de &#231;a ?
ce n'est pas ' mais ` (la touche &#163; puis un espace).

Sinon d'apr&#232;s ce que je lis par l&#224; je ne pense pas que le safe_mode soit en jeu...


Je ne voit vraiment pas ce qui pourrait faire &#231;a...
 
&#199;a marche !

Apr&#232;s m'&#234;tre farci un nombre incalculable de pages de la doc PHP, j'ai appris que l'affichage des erreurs pouvait &#234;tre d&#233;sactiv&#233;. Donc j'ai regard&#233; chez mon h&#233;bergeur et sur MAMP, et les deux l'avaient d&#233;sactiv&#233;.

Je l'ai activ&#233; sur MAMP, et il m'a affich&#233; ce qu'il n'aimait pas. En fait tu avais raison p4bl0, ce sont les echo ?> <? qui posaient probl&#232;me. D&#232;s que je les ai enlev&#233;s, tout a march&#233; parfaitment !! :D :up: :D

Un gros merci ! :zen:
 
&#199;a marche !

Apr&#232;s m'&#234;tre farci un nombre incalculable de pages de la doc PHP, j'ai appris que l'affichage des erreurs pouvait &#234;tre d&#233;sactiv&#233;. Donc j'ai regard&#233; chez mon h&#233;bergeur et sur MAMP, et les deux l'avaient d&#233;sactiv&#233;.

Je l'ai activ&#233; sur MAMP, et il m'a affich&#233; ce qu'il n'aimait pas. En fait tu avais raison p4bl0, ce sont les echo ?> <? qui posaient probl&#232;me. D&#232;s que je les ai enlev&#233;s, tout a march&#233; parfaitment !! :D :up: :D

Un gros merci ! :zen:
de rien ;)

Faut soit enlever le echo, soit mettre le html entre ' (ou " et \" pour les guillemets du html) ;)