[php][formulaire]

Fermé
spirou - 19 août 2005 à 16:04
 spirou - 21 août 2005 à 13:18
Bonjour à tous,

Ne connaissant strictement rien au php, et avant de commencer à apprendre, je m'amuse à tester différents scripts afin de voir exactement ce que l'on peut vraiment faire avec et surtout pour ne pas utiliser de javascript que je ne connais d'ailleurs pas non plus.

Ce script provient du magazine Linux Pratique, mais l'ayant recopier à la lettre en ayant juste rajouté des identifiant pour le css, il s'avère qu'il ne fonctionne pas.
[code]<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);
}
?>
[/code]
Je vois qu'il y a une erreur après le <p>, puisque sur ma page s'affiche \n"); fclose($fp); } ?>

Messages

Ou se situe réellement l'erreur ?

10 réponses

Merci Babylontiti,

C'est en fait en remplaçant :
<form action="<?echo $PHP_SELF;?>" method="post">

par :
<form action="<?echo $_SERVER["PHP_SELF"];?>" method="post">


Et en réinstallant plusieurs fois EasyPhp que mon code à fonctionné..

Par contre, j'ai télécharger la dernière version de EasyPhp, la 1-8 donc, et je me demande si elle n'est pas buguée, car je n'arrive pas à faire les deux mises à jour, et comme je l'ai précédemment dit, dès l'instant où je modifie un paramètre d'admin, je n'y ai plus accès.....

En ce qui concerne la ligne :
<!--//--><script>PrxRST();</script>

Ce n'est rien, c'est juste un logiciel faisant office de proxy qui me renvoi ça dans ma page, j'avais retiré les premières lignes mais oublié d'enlevé celle-là.

En tout cas merci à vous Killia et Babylonti, j'ai enfin réussi à faire fonctionné ce code et les serveurs Apache et MySQL.

Nb: Je me demande si je ne vais pas installé la version 1-7 pour voir si elle bogue moins.

@+
1
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
19 août 2005 à 16:12
Tu l'utilises comment cette page?
Tu l'ouvres chez toi sans passer par un site?
0
Oui je l'utilise de chez moi, vu que je n'ai encore rien mis en ligne.

J'ai installé easy php sur mon ordinateur et mis le dossier contenant mes pages dedans, et lorsque je cliques sur le bouton envoyer, il m'affiche une page d'erreur.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
19 août 2005 à 18:28
Et tu l'ouvres bien en tapant http://localhost ou http://127.0.0.1 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Oui, j'ouvres les pages en cliquant sur easy php et en allant dans web local.
0
Bon je résume :

Il me met comme erreur :

Forbidden
You don't have permission to access /mon_répertoire/< on this server.

Apache/1.3.33 Server at 127.0.0.1 Port 80

Je n'ai défini aucun droit sur mon_répertoire et suis administrateur, alors ???

J'ai essayé avec 4 navigateurs différents, et c'est pareil.
J'ai aussi essayé de voir dans les options avancés de PhpMyAdmin, et je crois avoir fais une connerie, puisque je n'arrive plus à avoir accès à phpMyAdmin, il me met "Le h�te 'localhost' n'est pas authoris� � se connecter � ce serveur MySQL ", zut !!!

Je remets mon code, au cas où quelqu'un verrait un truc qui colle pas.

<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>
    
    <?PHP
    IF (!EMPTY($_POST['message'])) {
    $fp = FOPEN("contact.txt", "a");
    FWRITE($fp, n12br($_POST['message'])."<p>\n>");
    FCLOSE($fp);
    }
    ?>
    
    <p>Historiques :</p>
   
    <?
  
    readFile("contact.txt")
  
    ?>

Quand j'enlève la balise <p>, \n>"); FCLOSE($fp); } ?>ne s'affiche plus sur ma page, mais toujours une erreur lorsque je valide avec le bouton.

Ca commence bien, à peine commencé, de suite un problème....
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
19 août 2005 à 21:32
Argh, tiens c'est bizzare.
Tu as un fichier qui s'appele .htaccess dans tes repertoires?

Et pour mysql tu es sûr qu'il est démarré? Sinon essaie de remplacer l'hôte par 127.0.0.1
Et tu avait installé easyphp en admin aussi?
0
Oui, j'ai trouvé un fichier .htaccess et il contient ceci:

Order deny,allow
allow from 127.0.0.1
deny from all

Je l'avais installé en tant qu'administrateur.
J'ai aussi essayé en localhost et en 127.0.0.1, mais sans résultat.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
20 août 2005 à 00:35
Je connais pas trop les htaccess.
Essaie toujours de renommer ce fichier en ce que tu veux.
Sans ce fichier, tu devrais avoir moins de soucis. Par contre après ça, l'accés à ton site local sera accessible par tous si ton firewall ne bloque pas l'accés.

Mais essaie toujours pour voir...
Ca fonctionnait bien avant?
0
Babylontiti Messages postés 59 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 8 février 2007 28
20 août 2005 à 06:18
Salut,

Quelques suggestions:
Remplacer:
<form action="<?echo$PHP_SELF?>" method="post">
(Il manque la fin d'instruction ';')
par:
<form action="<?echo $PHP_SELF;?>" method="post">

Ensuite remplacer:
 fwrite($fp, n12br($_POST['message'])."<p>\n");
(Fonction: NL2BR() --> Petite erreur de recopiage... ;-))
par:
 fwrite($fp, "nl2br($_POST[\'message\'])<p>\r\n");

Et voilà, déjà un début.
PS:Le fichier ".htaccess" semble correct.
Bye @+
0
Babylontiti Messages postés 59 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 8 février 2007 28
20 août 2005 à 06:33
ah, un oublie, c'est la fatigue... :-)
Et ceci aussi:
readfile("contact.txt");
$fp = fopen("contact.txt", "ab"); 
('b' comme 'binaire' pour la compatibilité avec Windows)
fin d'instruction ; (dans ce cas pas obligatoire, mais on sait jamais!)
@+
0
Bonjour,

Excusez moi, j'avais fais une bourde grossière, j'avais omis de changer l'extension de mon fichier en .php
Et donc, déjà un plus, le code ne s'affiche plus sur ma page, quel idiot je fait.....

En ce qui concerne le code en lui même, j'avais bien fait une erreur, j'avais confondu le "1" et le "l".

J'ai donc suivi ce que tu m'a dit Babylontiti, et j'ai modifié mon code, cela ne fonctionne toujours pas...
J'ai aussi supprimé le fichier .htaccess, idem : erreur.

Le problème qui je pense venait de EasyPhp, j'ai donc fait le grand ménage, désinstallation complète, et effacement dans le registre de tout ce qui concernait apache , mysql et EasyPhp.

De plus dans la liste des services(services.msc), il y en avait un nommé apache, mais qui était arrêté et que je ne pouvait démarré, car il m'affichait une erreur, décidément..... :-(
Je l'ai donc viré aussi.

Après la réinstalle de EasyPhp, de suite un nouveau problème, les 2 mises à jour refusent de se charger, erreur, qu'est-ce que je lui ai fait pour qu'il me fasse autant ch....

Donc le code fonctionnerait a-priori, mais lorsque j'essai de le faire fonctionner en validant sur le bouton: Echec.

Il y a une chose qui m'intrigue, c'est que lorsque je regarde le code source de ma page, celle-ci n'est pas le même que dans mon fichier, je vous montre :
Original :
<!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", "ab");
  fwrite($fp, nl2br($_POST['message'])."<p>\n");
  fclose($fp);
  }
  ?>
  
  <p>Historique</p>
  
  <?
  
  readFile("contact.txt");
  
  ?>
  
  </body>
</html>

Et celui 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>

<!--//--><script>PrxRST();</script>


La ligne 12 est celle-ci :
<form action="<?echo $PHP_SELF;?>" method="post">

Qu'en pensez vous ?

Et puis, je n'ose plus toucher aux paramètres d'administration, à chaque fois que je change quelque-chose, je n'y ai plus accès, je ne sais vraiment plus quoi faire.....
0
Babylontiti Messages postés 59 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 8 février 2007 28
21 août 2005 à 02:00
Salut,
Quel version de EasyPHP utilises-tu ?
Pour la ligne 12, la variable $PHP_SELF n'est disponible que jusqu'à la version 4.1.2 de PHP, donc obsolète pour les suivantes.
Mais
$_SERVER['PHP_SELF'];
doit fonctionner sous EasyPHP 1.7.
Pour la version 1.8(EasyPHP)
La variable actuelle est
$SCRIPT_NAME
ou
$_SERVER['SCRIPT_NAME'];

Voilà, essayes déjà ça !
PS: et ça, ça vient d'où?--> <!--//--><script>PrxRST();</script>
@+
0