Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 16h26   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 112
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 112
Points : 12
Points : 12
Par défaut création d'un formulaire d'inscription en PHP pour devenir membre

Bonjour,


Pourriez-vous me dire où est le fameux bug (entendre l'erreur...) sur ce code qui ne marche pas!! Il s'agit de créer un formulaire PHP où on peut créer un compte : simple, avec les étapes :
- remplissage du formulaire
- insérer dans une BDD SQL (php My ADmin) donc, remplissage du tableau
...or, il n'y a aucune nouvelle inscription dans le tableau!!!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?PHP
 
//include("variables.inc.php"); --> ce fichier est rendu en commentaire, donc, inactif dans le code. Dans le code, je réutilise directement les variables qui sont localhost, root, "". Si le code marche, je remettrai le .inc.php actif
 
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$login = $_POST['login'];
$email = $_POST['email'];
$mdp = $_POST['mdp'];
 
//Connexion  au SGBD MYSQL
$connection = mysql_connect("localhost", "root", "");
 
//Selection de la bd  de travail
if($select = mysql_select_db("evaluation", $connection)) //evaluation = c'est la BDD
{
	//Opération SQL/ TABLES : insertion dans la table membres
	$sql= "INSERT INTO membres (nom, prenom, login, email, mdp) VALUES ('$nom', '$prenom', '$login', '$email', '$mdp')";
	mysql_query($sql);
}
else
{
	echo "Problème de selection de BD";
}
 
//Fermeture de la connexion au SGBD
mysql_close($connection);
?>
 
 
<html>
		<head>
			<title>Inscription</title>
			<link href="style.css" rel="stylesheet" type="text/css" />
		</head>
<body>
 
<h3>Inscription</h3>
 
 
<p>Pour vous inscrire, veuillez remplir les champs suivants :</p>
 
<FORM ACTION="" METHOD="POST">
Nom	<INPUT TYPE="TEXT" SIZE="40" NAME="nom"><br>
Prenom	<INPUT TYPE="TEXT" SIZE="40" NAME="prenom"><br>
Login : choisir un surnom	<INPUT TYPE="TEXT" SIZE="40" NAME="login"><br>
Adresse e-mail	<INPUT TYPE="TEXT" SIZE="40" NAME="email"><br>
Confirmer adresse e-mail	<INPUT TYPE="TEXT" SIZE="40" NAME="emailverif"><br>
Entrer un mot de passe	<INPUT TYPE="TEXT" SIZE="40" NAME="mdp"><br>
Confirmer le mot de passe	<INPUT TYPE="TEXT" SIZE="40" NAME="mdpverif"><br>
<br>
<input type="submit" name="envoi" value="Valider" />
</FORM>
 
</body>
</html>
petite question sur le fichier VARIABLES.INC.PHP : j'ai vu que c'était pour clarifier le code, mais pourquoi n'y met-on pas toutes les variables que l'on crée (sauf celles qui sont à l'intérieur de la portée de la fonction, et qui n'existent donc qu'en tant que telles) ?? Dans mon cas, il y a 4 variables dans le fichier, et elles ne sont pas difficiles à écrire directement dans le code.

merci par avance!!!
logiclogic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 07h18   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
Bonjour,

1- Tu dois d'abord tester avec (if isset(...)) si les éléments de formulaire sont submiter avant de les récupérer et les mettre dans des variables pour les insérer dans la base.
2- Utilise mysql_real_escape_string pour la requête.
3- Utilise les fonctions die et mysql_error dans le cas où tu as des erreurs mysql.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 10h45   #3
Membre à l'essai
 
Christophe Bresso
Bricoleur
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Christophe Bresso

Informations professionnelles :
Activité : Bricoleur

Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 20
Points : 20
Peut-être je dis une bêtise mais il me semble que la cible de action doit être indiquée même si le formulaire s'auto-appelle. Je ne pense pas que ce soit une bonne pratique cependant.
Et attention à la sécurité. Toujours vérifier ce que l'on reçoit d'un formulaire.
CBresso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2012, 22h49   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 112
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 112
Points : 12
Points : 12
Bonjour,

Pour le début de code :

Code :
1
2
3
4
5
6
7
8
9
10
11
<?PHP
 
include("C:/Program Files (x86)/EasyPHP-5.3.8.1/www/projet/inc/variables.inc.php");
 
if isset(($_POST["nom"]) && ($_POST["prenom"]) && ($_POST["login"]) && ($_POST["login"]) && ($_POST["email"]) && ($_POST["mdp"])){
	$nom = $_POST["nom"];
	$prenom = $_POST["prenom"];
	$login = $_POST["login"];
	$email = $_POST["email"];
	$mdp = $_POST["mdp"];
}
la réponse côté navigateur est un piteux :

Code :
Parse error: syntax error, unexpected T_ISSET, expecting '(' in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\projet\frontoffice\inscription.php on line 5
?????
...merci.
logiclogic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2012, 23h29   #5
Membre du Club
 
Homme Cédric PERRIER
Ingénieur systèmes et réseaux
Inscription : juin 2010
Messages : 182
Détails du profil
Informations personnelles :
Nom : Homme Cédric PERRIER
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Service public

Informations forums :
Inscription : juin 2010
Messages : 182
Points : 44
Points : 44
Bonjour,

Je pense qu'il te manque des guillemets puisque tu utilises des espaces dans le chemin.
Essaie donc ceci :
Code :
1
2
 
include("\"C:/Program Files (x86)/EasyPHP-5.3.8.1/www/projet/inc/variables.inc.php\"");
Korben-Dallas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2012, 06h11   #6
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
Bonjour,

N'utilise pas de chemin absolu dans l'application. Utilise un chemin relatif.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2012, 16h50   #7
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 112
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 112
Points : 12
Points : 12
Bonjour,


OBligé, sinon, ça ne marche pas.
logiclogic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2012, 20h40   #8
Membre du Club
 
Homme
Webmaster
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 45
Points : 45
Essaye de faire comme ça :

Code :
1
2
3
if (isset($_POST["nom"]) && isset($_POST["prenom"])) {
 
}
Devildz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2012, 10h54   #9
Membre du Club
 
Homme Cédric PERRIER
Ingénieur systèmes et réseaux
Inscription : juin 2010
Messages : 182
Détails du profil
Informations personnelles :
Nom : Homme Cédric PERRIER
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Service public

Informations forums :
Inscription : juin 2010
Messages : 182
Points : 44
Points : 44
Dans ton if(....) ne mets pas des $_POST["..."] mais plutôt $_POST['...']

Code :
1
2
 
if isset(($_POST['nom']) && ($_POST['prenom'])..............
Korben-Dallas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 14h29   #10
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Code :
Parse error: syntax error, unexpected T_ISSET, expecting '(' in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\projet\frontoffice\inscription.php on line 5
La réponse du serveur n'est pas piteuse mais décrit bien le problème.

Il te dit que :
- il n'a pas comprit ton code (parser error)
- à la ligne 5 de ton code ( in [...]inscription.php on line 5)
- il a rencontré la fonction isset (unexpected T_ISSET)
- alors qu'il attendait une parenthèse (expecting '(')

Compliqué de faire plus simple ;-)
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 10h05   #11
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 112
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 112
Points : 12
Points : 12
Bonjour,


merci...
une autre erreur dans un autre exemple, mais de la même sorte :

le code entré :
Code :
print "<form action="post.php" method="POST">";
le résultat :
Code :
Parse error: syntax error, unexpected T_STRING in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\exercice\index.php on line 32
J'ai pensé qu'il est possible que ce soit une concordance entre la "ponctuation" et le PRINT, donc, en remplaçant par ECHO, car je sais que ce n'est pas tout à fait la même fonction :

résultat d'erreur :
Code :
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\exercice\index.php on line 32
merci
logiclogic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 10h27   #12
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 112
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 112
Points : 12
Points : 12
solution :

Citation:
echo '<form action="post.php" method="POST">';
logiclogic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 10h29   #13
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Là le souci c'est que tu dois échapper tes " comme ça :

Code :
print "<form action=\"post.php\" method=\"POST\">";
Sinon php pense que ta chaîne de caractères s'arrête après action= et tente d'interpréter post.php et là il ne comprend plus....
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 11h50   #14
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 112
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 112
Points : 12
Points : 12
en attendant de pouvoir trouver, voici une nouvelle colle :

le code : réponse de Firefox :
Citation:
Parse error: syntax error, unexpected T_ELSE in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\twit_don\index.php on line 44
c'est dans du PHP, mais bien encadré par des { et }, etc.
logiclogic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 11h51   #15
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
donne plus de code STP....
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 12h21   #16
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
@logiclogic : Combien de fois tu as eu des erreurs "Parse error: syntax error, unexpected ***" dans cette discussion et tu n'arrives toujours pas à cerner seul ce genre d'erreur
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 13h20   #17
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 112
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 112
Points : 12
Points : 12
Voici le code, même s'il me semblait que l'erreur avec le ELSE ne soit pas dépendant du reste du code...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if(isset($_SESSION['screen_name'])){
			print "Connecté en tant que ".$_SESSION['screen_name'];
			print "<br><br>";
			print '<form action="post.php" method="POST">';
				'<textarea name="tweet" cols=00 rows=0></textarea><br>';
				'<input type="submit" value="tweeter"/>';
			print "</form>";
 
			$statuses = $connection->GET(statuses/user_timeline);
 
			print "<ul>";
			foreach($statuses as $status){
				echo "<li>$status->text.,.$status->created at.</li>";
			print "</ul>";
 
		}else{
			print "non connecté";
			print "<br><br><a href="connection.php">Se connecter</a>";
		}
logiclogic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 13h26   #18
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
C'est pourtant cair, tu ne fermes pas l'accolade du foreach avant le else....

Essaie de prendre le temps de vérifier ta syntaxe avant de poster sur le forum.... On va pas debugger à chaque fois que tu fais une erreur....
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 13h27   #19
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
Celui du foreach se ferme où?

Utilise un IDE ou notepad++ pour faciliter les vérifications de ce genre. Sinon tu peux aussi compter les nombres des accolades ouvrantes et fermantes .

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 17h09   #20
Membre du Club
 
Homme Cédric PERRIER
Ingénieur systèmes et réseaux
Inscription : juin 2010
Messages : 182
Détails du profil
Informations personnelles :
Nom : Homme Cédric PERRIER
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Service public

Informations forums :
Inscription : juin 2010
Messages : 182
Points : 44
Points : 44
Si tu utilisais un Editeur avancé tu verrais toutes tes erreurs.
Voici le code en grande partie corrigée
Maintenant essaie de ton côté de debuguer ton code et si vraiemnt il y a un pb que tu ne comprends alors là tu pourras le soumettre.
Merci de ton attention.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
  if(isset($_SESSION['screen_name']))
  {
  			print "Connecté en tant que ".$_SESSION['screen_name'];
  			print "<br><br>";
  			print "<form action='post.php' method='POST'>";
  			print	"<textarea name='tweet' cols=00 rows=0></textarea><br>";
  			print	"<input type='submit' value='tweeter'/>";
  			print "</form>";
 
  			$statuses = $connection->GET(statuses/user_timeline);
 
  			print "<ul>";
  			foreach($statuses as $status)
        {
  			   echo "<li>$status->text.,.$status->created at.</li>";
  			   print "</ul>";
  			}
  }
  else
  {
  			print "non connecté";
  			print "<br><br><a href='connection.php'>Se connecter</a>";
  }
Korben-Dallas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h50.


 
 
 
 
Partenaires

Hébergement Web