Page 1 sur 2

[EasyPhp]débutant

Posté : 19 août 2005, 23:33
par spirou
Bonsoir à tous,

Ayant débuter il y a quelque temps à faire des mises en pages en html/css, je me suis donc aujourd'hui décidé à installer EasyPhp et à essayer un petit script trouvé dans un magazine.

Tout aurait pu bien commencé, mais non....

J'ai deux problèmes majeurs, le premier concerne le petit script en question :

Le voici
<h1>CONTACT</h1>
  
  <form action="<?echo $PHP_SELF?>" method="post">
  <textarea id="saisie" name="message" wrap=virtual></textarea>
  <input id="bouton" type="submit" value="Envoyer">
  </form>
  
  <?
  if (!empty($_POST['message'])) {
  $fp = fopen("contact.txt", "a");
  fwrite($fp, n12br($_POST['message'])."<p>\n");
  fclose($fp);
  }
  ?>
  
  <p>Historique</p>
  
  <?
  
  readFile("contact.txt")
  
  ?>
J'ai juste ajouté des identifiant afin de le positionner dans ma page html.
Il y a un problème à partir de <p> car lorsque j'ouvre ma page html, il y a \n"); fclose($fp); } ?>qui s'affiche.
J'ai bien créé comme il est dit dans les pages de ce mag un fichier texte, je l'ai nommé contact.

Le deuxième problème qui je pense est lié au premier, est que lorsque j'appuie sur le bouton en question pour valider, cela me renvoi sur une page d'erreur :
You don't have permission to access /WebMod1/< on this server.

Apache/1.3.33 Server at 127.0.0.1 Port 80

Mais je suis l'administrateur de ma machine et n'ai défini aucun droit sur le répertoire et les fichiers en question, je ne comprends pas.... :?

Que pensez vous de EasyPhp, est-ce bien pour un gros débutant comme je le suis ?

Merci de vos réponses. :merci:

Posté : 19 août 2005, 23:39
par Cyrano
Déjà essaye en corigeant l'attribut action de ton formulaire :
<h1>CONTACT</h1>
  <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
  <textarea id="saisie" name="message" wrap=virtual></textarea>
  <input id="bouton" type="submit" value="Envoyer">
  </form>
<?
if (!empty($_POST['message']))
{
    $fp = fopen("contact.txt", "a");
    fwrite($fp, n12br($_POST['message'])."<p>\n");
    fclose($fp);
}
?>
  <p>Historique</p>
<?
readFile("contact.txt")
?>

Posté : 19 août 2005, 23:52
par spirou
Merci, mais ça ne fonctionne toujours pas :(
J'ai toujours ce \n"); fclose($fp); } ?> qui s'affiche.

J'ai essayé avec 4 navigateurs, firefox, ie, netscape, et opéra, tous me mettent un message d'erreur.

C'est bizarre, non ?
Je ne sais vraiment que faire :?

Posté : 19 août 2005, 23:55
par Xenon_54
Bonjour,

J'ai pas tout saisi. Pourrais-tu réafficher le code exact que tu utilises ainsi que le contenu de ton fichier contact.txt?

Posté : 19 août 2005, 23:59
par Cyrano
Non, je crois que c'est plus simple que ça : Apache n'est pas lancé.
En bas à droite, dans la barre de tâche, tu dois avoir un icône en forme de E : fais un clic droit dessus et vérifie si ton serveur est démarré.

Posté : 20 août 2005, 00:04
par Xenon_54
Bonjour,

Bien vu cyrano. J'étais complètement perplexe face à ce problème étrange.
Donc qu'il affiche la source afin de voir que PHP n'est pas interprété.

Posté : 20 août 2005, 00:13
par spirou
Si mon serveur est bien lancé, avec apache et Mysql avec les feux verts.
Et le carré clignote bien dans ma barre des taches.

Mon fichier contact.txt est vide, il est destiné à recevoir les données qui seront entrées à l'aide ce script que j'ai trouvé sur le magazine LinuxPratique.

Je le remets :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 //EN"
  "http://www.w3.org/TR/html4/strict.dtd"> 
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  <link href="contact.css" rel="stylesheet" type="text/css">
  <title>Contact</title>
  </head>
  <body>
  <h1>CONTACT</h1>
  
  <form action="<?echo $PHP_SELF?>" method="post">
  <textarea id="saisie" name="message" wrap=virtual></textarea>
  <input id="bouton" type="submit" value="Envoyer">
  </form>
  
  <?
  if (!empty($_POST['message'])) {
  $fp = fopen("contact.txt", "a");
  fwrite($fp, n12br($_POST['message'])."<p>\n");
  fclose($fp);
  }
  ?>
  
  <p>Messages</p>
  
  <?
  
  readFile("contact.txt")
  
  ?>
  
  </body>
</html>

Pourtant, je l'ai vérifié X fois, et il y a aucune erreur, enfin du moins par rapport au code de cette revue.

Le problème est que ce morceau de code \n"); fclose($fp); } ?> s'affiche directement sur ma page, il ne doit pas être pris en compte.

A mon avis, c'est la balise <p> qui doit en être la cause.
Et lorsque je clique sur le bouton Envoyer, cela m'envoi vers une page d'erreur.

Posté : 20 août 2005, 00:47
par spirou
Serait ce possible qu'il y est une option dans windows que j'aurais désactivée et qui pourrait en être la cause ?
Voici ce que cela affiche.

Y'a t-il une alternative à EasyPhp, qui je pense est la cause.
En plus j'ai des problèmes avec lui, cela fait la deuxième fois que je l'installe et ça fait deux fois que je ne peut plus accéder aux paramètres avancés de l'administrateur, il me met :

Bienvenue à phpMyAdmin 2.6.1

phpMyAdmin a tenté de se connecter au serveur MySQL, et le serveur a rejeté la connexion. Veuillez vérifier les valeurs de "host", "username" et "password" dans config.inc.php et vous assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur MySQL.
Erreur

MySQL a répondu:Documentation
#1045 - Acc�s refus� pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON)

Je suis pourtant bel et bien l'administrateur de ma bécanne.
:cry:

Posté : 20 août 2005, 00:55
par Xenon_54
Bonjour,

As-tu bien mis l'extension .php à ton fichier?
Je viens de tester à l'instant ton script et j'ai le même résultat si je désactive PHP. Donc soit que ton serveur ne roule pas (donc redémarre-le) ou alors que tu ne l'as pas mis dans ton dossier /www de EasyPHP.

Posté : 20 août 2005, 02:49
par aphp

Code : Tout sélectionner

<h1>CONTACT</h1> <form action="<?echo $PHP_SELF?>" method="post"> <textarea id="saisie" name="message" wrap=virtual></textarea> <input id="bouton" type="submit" value="Envoyer"> </form> <? if (!empty($_POST['message'])) { $fp = fopen("contact.txt", "a"); fwrite($fp,($_POST['message'])."<p>\n"); fclose($fp); } ?> <p>Historique</p> <? readFile("contact.txt") ?>
Moi sa fonctionne sans le "n12br", je me demande ce que c'est?

Posté : 20 août 2005, 03:10
par Xenon_54
Bonjour,

Le problème vient d'EasyPHP. Il ne l'a pas démarré ou alors n'a pas placé son fichier dans le répertoire www. Alors le problème ne vient pas de nl2br().

Pour information, nl2br() permet de remplacer tous les sauts de lignes en <br />
http://www.php.net/manual/fr/function.nl2br.php

Posté : 20 août 2005, 12:09
par @rthur
Alors le problème ne vient pas de nl2br().

Pour information, nl2br() permet de remplacer tous les sauts de lignes en <br />
http://www.php.net/manual/fr/function.nl2br.php
Je vote pour une faute de frappe ;-)
La fonction est bien NL2BR() comme le dit PHP mais la fonction utilisée par Spirou est N12BR() (j'ai tapée les deux noms de fonctions en majuscules afin de bien faire apparaitre le problème).
Y'a t-il une alternative à EasyPhp
Wamp est très pratique et moins buguée à mon sens:
http://www.wampserver.com
Attention à bien lire la page "Comment utiliser MySQL 4.1.*" si tu souhaites utiliser les fonctions mysql* et pas mysqli*

Posté : 20 août 2005, 14:21
par spirou
Merci à tous,

Je vais essayer de résumé en tachant d'être clair.
En premier, je suis désolé, mais j'avais fais une grossière erreur, j'ai omis de changer l'extension de mon fichier en .php :boire4:
Ce qui a résolu le problème d'affichage du code sur ma page, merci PHP.

Mon répertoire contenant mes fichiers HTML, CSS et PHP sont bien dans le répertoire WWW de EasyPhp.
Les serveurs Apache et MySQL sont démarrés, j'accède au répertoire en passant par localhost ou 127.0.0.1

Mais ayant regardé dans les services windows(services.msc), j'ai constaté qu'il y en avait un dénommé Apache, mais qui était arrêté, j'ai donc voulu le démarrer: échec.

Alors après en avoir eu assez, j'ai donc désinstallé EasyPhp, viré tous les fichiers et clefs de registres de mon pc (Apache, MySQL et EasyPhp).
Un nettoyage en profondeur...

Je le réinstalle donc et là d'emblée un problème, il refuse d'installer les deux mises à jour, mais qu'est-ce que je lui ai fait 8-[
Le service Apache ne s'est pas réinscrit dans la liste des services, c'est normal ?

Merci @rthur, en effet j'avais fait une bourde en confondant le "1" et le "l".
J'ai transformé mon code suivant le conseil d'un forumeur, mais cela ne fonctionne toujours pas lorsque je valide en appuyant sur le bouton "Envoyer", il m'affiche une page d'erreur.

J'ai constaté aussi une chose, c'est que le code source de ma page ne correspond pas au code de mon fichier php, je vous montre :
Original :
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  <link href="contact.css" rel="stylesheet" type="text/css">
  <title>Contact</title>
  </head>
  <body>
  <h1>CONTACT</h1>
  
  <form action="<?echo $PHP_SELF;?>" method="post">
  <textarea id="saisie" name="message" wrap=virtual></textarea>
  <input id="bouton" type="submit" value="Envoyer">
  </form>
  
  <?
  if (!empty($_POST['message'])) {
  $fp = fopen("contact.txt", "ab");
  fwrite($fp, nl2br($_POST['message'])."<p>\n");
  fclose($fp);
  }
  ?>
  
  <p>Historique</p>
  
  <?
  
  readFile("contact.txt");
  
  ?>
  
  </body>
</html>
Code regardé via le navigateur :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 //EN"
  "http://www.w3.org/TR/html4/strict.dtd"> 

<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  <link href="contact.css" rel="stylesheet" type="text/css">
  <title>Contact</title>

  </head>
  <body>
  <h1>CONTACT</h1>
  
  <form action="<br />
<b>Notice</b>:  Undefined variable:  PHP_SELF in <b>c:\logiciels\easyphp1-8\www\webmod1\contact.php</b> on line <b>12</b><br />
" method="post">
  <textarea wrap=soft id="saisie" name="message" wrap=virtual></textarea>
  <input id="bouton" type="submit" value="Envoyer">
  </form>
  
    
  <p>Historique</p>

  </body>
</html>
Qu'en pensez vous ?
C'est bizarre non ?

Merci @rthur pour l'alternative à EasyPhp, mais je voudrais savoir avant de l'installer si la configuration des serveurs se fait automatiquement comme avec Easy, car je n'y connais strictement rien en ce domaine.

J'ai d'autres questions :

- Un service spécifique de windows est-il nécessaire au fonctionnement des serveurs ?
- Y'aurait-il une options de windows que j'aurais désactivée par souci de sécurité et qui pourrait être la cause du problème ?
- Mon firewall peut-il faire obstruction (ZA) ?
- Le firewall intégré de la livebox peut-il en être la cause ?

J'ai aussi un autre souci, lorsque je modifie une option d'aministration, et que je veux y retourner, je n'y ai plus accès....

Mon cas à l'air insolvable, je ne sais vraiment plus quoi faire.....

Posté : 20 août 2005, 17:59
par @rthur
Remplace $PHP_SELF par:
$_SERVER["PHP_SELF"]
Merci @rthur pour l'alternative à EasyPhp, mais je voudrais savoir avant de l'installer si la configuration des serveurs se fait automatiquement comme avec Easy, car je n'y connais strictement rien en ce domaine.
Oui, tout se fait automatiquement.
J'ai d'autres questions :
- Un service spécifique de windows est-il nécessaire au fonctionnement des serveurs ?
A priori, je pense que non...
- Y'aurait-il une options de windows que j'aurais désactivée par souci de sécurité et qui pourrait être la cause du problème ?
Normalement, non.
- Mon firewall peut-il faire obstruction (ZA) ?
Oui, mais normalment ça ne génère pas le type de pb que tu rencontres...
- Le firewall intégré de la livebox peut-il en être la cause ?
Non en aucun cas vu que tu travail en local sur ton poste

Posté : 20 août 2005, 18:23
par iclo
pour la différence de code entre le fichier php et le code envoyé au browser, c'est tout à fait normal, le code php est executé par le serveur et seul le résultat html est envoyé vers le browser le code php est donc fort heureusement masqué pour le visiteur.