Bouton envoyer de mon formulaire

Maya27
Invité n'ayant pas de compte PHPfrance

30 déc. 2009, 09:43

Bonjour,

Je suis toute nouvelle et débutante en php.

Je dois créer un livre d'or. Pour cela, j'ai déjà créee ma page config.php avec comme USER= root, HOST=localhost et le nom de ma base de données et password =""
J'ai aussi créee un formulaire.html.
Dans ce formulaire, j'ai donc le bouton envoyer (et annuler). Je dois créer (je pense) une page envoyer.php qui enverra le tout sur ma bdd (sur phpmyadmin).
Le pb c'est que là je cale, je ne sais pas comment du tout faire vu que je débute..

Auriez-vous des idées, des cours ou autre qui pourraient m'aider?

merci bien.

Ah encore une chose, je dois faire en sorte que les visiteurs de mon livre d'or puissent écrire mais pas voir les messages des autres visiteurs.. j'ai vu un truc avec hidden est-ça?

merci.

Maya

Mammouth du PHP | 672 Messages

30 déc. 2009, 10:17

Bonjour et bienvenue dans le monde merveilleux de la programmation PHP !

Un truc que tu ne dis pas : tu as de l'expérience en programmation ?

Avant tout, va voir du côté des tutoriels. Si tu débutes complétement, tu peux commencer par ici.

Si tu ne veux pas t'embêter, je te conseille de passer par une solution "prêt à porter" : CMS ou script récupéré sur le net.

maya27
Invité n'ayant pas de compte PHPfrance

30 déc. 2009, 10:29

Bonjour

Merci pour ta réponse.
En effet je débute!! Je n'y connais pas grande chose.. j'ai appris quelques trucs via les cours sur le net ;)
ça m'a beucoup aidé en effet mais là je bloque ..

je vais aller voir les tutos :)
merci.

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 10:57

Bonjour Maya27,

Bienvenue dans le monde du PHP, tu vas voir c'est pas très compliqué...
Tout d'abord, attaquer (cela s'appelle comme cela) une base avec les login/mot de passe root/"" c'est pas super super. Si tu reste en local sur easpyphp ou winamp server, pas de (trop) gros problème. Si tu mets cela en ligne, pas bien du tout.
Comme tu utilises phpmyadmin, tu as la possibilités de changer le mot de passe root assez facilement. Exerces toi sur ta base local et si tu te plantes, tu pourras tout réinstaller.
Dans PHPmyAdmin, va dans "privilèges" (j'espère qu'il est en français) puis sélectionne root, clique sur la petite icone avec le stylo puis en bas tu peux changer de mot de passe.
Le mieux est de créer carrément un autre user avec les accès dites "données". De ce fait, si tu te fais hacke le system de ton site, il n'auront le droit qu'à "SELECT, INSERT, UPDATE, DELETE, FILE" mais même cela tu peux le restreindre.
Si tu changes le mot de passe root, penses que PHPmyadmin doit aussi être changer. Si tu passes par le mode coockies, tu auras surement l'erreur #1045 - Accés refusé pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON). Il faudra changer un des paramètres dans les fichiers de configurations de phpMyadmin et tu remplaces la ligne dans le fichier config.inc.php :$cfgServers[1]['password'] = 'tonnouveaumotdepasse' (bien sûr si tu es en local, sinon tu ne peux pas)

Concernant ton formulaire,
tu dois avoir :
<form method="post" action="envoyer.php">
<input type="text" name="ma_variable" value="ma_value" />
...ton formulaire
</form>
La première ligne t'indique que tu es en méthode POST et que tu pointes vers envoyer.php.
Dans cette page envoyer.php (qui doit se trouver dans la même racine que la page où se situe le formulaire sinon => erreur), tu interrogeras les variables de ton formulaire via $_POST["ma_variable"] = "ma value".

Pour continuer, il nous faut le formulaire que tu as créé puis envoyer.php pour le traitement. Avances de ce côté là et dès que tu bloques, reviens nous voir, nous serons ravi de te filer un coup de main.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

maya27
Invité n'ayant pas de compte PHPfrance

30 déc. 2009, 11:06

Merci vraiment pour les réponses!
Car ça fait 3 jours que je bloque et je commence à perdre patience!

voici mon formulaire :
(bon désolée comme j'ai dis, je débute donc je ne connais ps grand chose )
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                       "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<h1> <center> Formulaire </center> </h1>

<br>

</head>
<body>
<table>
<br>
<tr><td><b>Votre Pseudo: </b></td><td><input name='pseudo' type='text' size='50'></td></tr>
<tr><td><b>Votre mail: </b></td><td><input name='mail' type='text' size='50'></td></tr>

<tr><td><b>Votre message : </b></td><td><textarea name='texte' cols='50' rows='20'></textarea></td></tr>

<FORM method="POST" action="envoyer.php">
<tr><center><td><input name='annuler' type='reset' value='Annuler'></td></center>
<p align ="right" ><td><input name='soumettre' type='submit' value='Envoyer'></td></tr></p>

</table>
</form>
</body>
</html>
 


ensuite pour le envoyer.php et bien justement je bloque ..

j'ai commencé à faire ceci mais perso je n'y comprends pas grand chose .. bon je sais que c'est faux :oops: j'essqye de m'y mettre..mais je n'ai jamais été très bonne en programmation...

 <html>
	<head>
		<title> Envoyer </title>
	</head>
	<body>
	<?php
		$pseudo=$_POST['pseudo'];
		$mail=$_POST['mail'];
		$message=$_POST['message'];
		echo "valeurs" : $pseudo $mail $message;
		?>
	</body>
</html>




<?php

require "config.php";
mysql_connect(DBHOST,DBUSER,DBPASSWD);
mysql_select_db(DBNAME);


$livredor="message";
$nom=""; if(!empty($_POST["pseudo"]))
   $nom=addslashes($_POST["pseudo"]);
$email=""; if(!empty($_POST["mail"]))
   $email=$_POST["mail"];
   $email=""; if(!empty($_POST["mail"]))
   $email=$_POST["mail"];

$query = "INSERT INTO $livredor(pseudo,mail,message)";
$query .= " VALUES('$pseudo','$mail','$message')"; 

$result = mysql_query($query);
 mysql_close(); 

?>


merci

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:09

Ton formualire doit être entouré de <form>... </form> sinon cela ne marchera pas :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<h1> <center> Formulaire </center> </h1>

<br>

</head>
<body>
<FORM method="POST" action="envoyer.php">
<table>
<br>
<tr><td><b>Votre Pseudo: </b></td><td><input name='pseudo' type='text' size='50'></td></tr>
<tr><td><b>Votre mail: </b></td><td><input name='mail' type='text' size='50'></td></tr>

<tr><td><b>Votre message : </b></td><td><textarea name='texte' cols='50' rows='20'></textarea></td></tr>


<tr><center><td><input name='annuler' type='reset' value='Annuler'></td></center>
<p align ="right" ><td><input name='soumettre' type='submit' value='Envoyer'></td></tr></p>

</table>
</form>
</body>
</html>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

maya27
Invité n'ayant pas de compte PHPfrance

30 déc. 2009, 11:12

<FORM method="POST" action="envoyer.php">
</form>


ça n'est pas ça??
merci

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:19

Au passage nous allons mettre cela conforme aux standards du Web (comme tu débutes, tu iras voir les CSS dans pas longtemps). De plus tu as quelques erreur HTML (comme dans tes balises head et dasn ton tableau ; j'ai tout corrigé dessous. essayes de voir ce que j'ai corrigé
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1 style="text-align : center;"> Formulaire</h1>
<FORM method="POST" action="envoyer.php">
<table>
  <tr>
    <td>
      <strong>Votre Pseudo: </strong>
    </td>
    <td>
      <input name='pseudo' type='text' size='50'>
    </td>
  </tr>
  <tr>
    <td>
      <strong>Votre mail: </strong>
    </td>
    <td>
      <input name='mail' type='text' size='50'>
    </td>
  </tr>
  <tr>
    <td>
      <strong>Votre message : </strong>
    </td>
    <td>
      <textarea name='texte' cols='50' rows='20'>
      </textarea>
    </td>
  </tr>
  <tr>
    <td>
      <input name='annuler' type='reset' value='Annuler'>
    </td>
    <td>
      <input name='soumettre' type='submit' value='Envoyer'>
    </td>
  </tr>
</table>
</form>
</body>
</html>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

maya27
Invité n'ayant pas de compte PHPfrance

30 déc. 2009, 11:21

Je te remercie.
Je vais reprendre tout le code afin de voir ce qui n'allais pas.
Merci :)

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:21

<FORM method="POST" action="envoyer.php">
</form>


ça n'est pas ça??
merci
Si mais tu ne l'as pas mis au bon endroit. Regardes où je l'ai mis.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:24

Sinon côté PHP... pas de problème (tu vois çà vient) mais je te conseille (comme tu vas travailler avec mysql) de protéger tes retours de formulaire avec une fonction spéciale :
 <html>
        <head>
                <title> Envoyer </title>
        </head>
        <body>
        <?php
                $pseudo=addslashes($_POST['pseudo']);
                $mail=addslashes($_POST['mail']);
                $message=addslashes($_POST['message']);
                echo "valeurs" : $pseudo $mail $message;
                ?>
        </body>
</html>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

maya27
Invité n'ayant pas de compte PHPfrance

30 déc. 2009, 11:28

<FORM method="POST" action="envoyer.php">
</form>


ça n'est pas ça??
merci
Si mais tu ne l'as pas mis au bon endroit. Regardes où je l'ai mis.

ah oui d'accord je n'avais pas compris

pour le code php merci :) ça commence à venir alors..

merci

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:32

Concernant les protection de retour formulaire tu dois savoir trois fonctions :

htmlspecialchars() (permet d'éviter qu'on t'injectes des balises HTML dans ton livre d'or) : http://php.net/manual/fr/function.htmlspecialchars.php
mysql_escape_string (permet d'éviter les injections SQL (et de te faire pirater ta base)) : http://www.manuelphp.com/php/function.m ... string.php
et son équivalent addslahes (elles font la même chose) : http://php.net/manual/fr/function.addslashes.php

Utilises mysql_escape_string ou addslahes, pas les deux en même temps ce qui te donnera (on va utiliser un fonction pour cela (histoire d'apprendre)) :
<?php 
function protection ($valeur)
{
  return htmlspecialchars(addslahes($valeur));
}
?>
 <html>
        <head>
                <title> Envoyer </title>
        </head>
        <body>
        <?php
                $pseudo=protection($_POST['pseudo']);
                $mail=protection($_POST['mail']);
                $message=protection($_POST['message']);
                echo "valeurs" : $pseudo $mail $message;
                ?>
        </body>
</html>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

maya27
Invité n'ayant pas de compte PHPfrance

30 déc. 2009, 11:37

merci, alors je reste sur addslahes..
merci car je ne connaissais pas cette fonction.

En tout cas merci de prendre le temps de m'expliquer.. tout devient plus clair ;)

Petit nouveau ! | 5 Messages

30 déc. 2009, 11:52

donc alors si j'ai bien compris.
Je dois avoir
- une page config.php avec les paramètre de connexion à la BDD
- une page html contenant le formulaire
- une page envoi.php qui lorsque l'on clique sur envoyer dans le formulaire arrive dans la bdd
pour cela je dois donc me connecter à laide de
mysql_connect(DBHOST,DBUSER,DBPASSWD);
mysql_select_db(DBNAME);
puis envoyer les infos dans la bdd.. à l'aide de POST ou GET
est-ce bien cela?

merci