Problème au niveau de php

Résolu/Fermé
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 18 juin 2016 à 15:25
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 19 juin 2016 à 20:15
Bonjour,

Je regarde pour me perfectionner sur le php, alors j'ai fait quelque changement mais la j'ai une erreur qui apparait alors que si je supprime le php il n'y pas d'erreur.
Donc cela doit être dans le php.

Si vous pouvez m'aider merci d'avance.

<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=site', 'root', '');

if(isset($_POST['forminscription']))
{
	if(!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['age']) AND !empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
	{
		$nom = htmlspecialchars($_POST['nom']);
		$prenom = htmlspecialchars($_POST['prenom']);
		$age = htmlspecialchars($_POST['age']);
		$pseudo = htmlspecialchars($_POST['pseudo']);
		$mail = htmlspecialchars($_POST['mail']);
		$mail2 = htmlspecialchars($_POST['mail2']);
		$mdp = sha1($_POST['mdp']);
		$mdp2 = sha1($_POST['mdp2']);
		$pseudolength = strlen($pseudo);
		
		if($age == 0)
		{
			if($pseudolength <= 15)
			{
				if($mail == $mail2)
				{	
					if(filter_var($mail, FILTER_VALIDATE_EMAIL))
					{	
						$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
						$reqmail->execute(array($mail));
						$mailexist = $reqmail->rowCount();
						if($mailexist == 0)
						{
							if($mdp == $mdp2)
							{
								$insertmbr = $bdd->prepare("INSERT INTO membres(nom, prenom, age, pseudo, mail, motdepasse) VALUES(?, ?, ?)");
								$insertmbr->execute(array($nom, $prenom, $age, $pseudo, $mail, $mdp));
								$erreur = "Votre compte a bien été crée ! <a href=\"connexion.php\">Me connecter<a/> ";
						
							}
							else
							{
								$erreur = "Vos mot de passes ne correspondent pas !";
							}
						}
						else
						{
							$erreur = "Adresse mail déjà utilisée !";
						}
					}
					else
					{
						$erreur = "Votre adresse mail n'est pas valide";
					}
				}
				else
				{
					$erreur = "Vos adresse mail ne correspondent pas !";
				}	
			}
			else
			{
				$erreur = "Votre pseudo ne doit pas dépasser 15 caractères !";
			}
			
		}
		else
		{
			$erreur = "Vous devez entré votre age";
		}
?>


<html>
	<head>
		<title>Site One</title>
		<meta charset="utf-8">
	</head>
	<body>
		<div align="center">
			<h1>Inscription</h1>
			<br /> <br /> 
			<form method="POST" action="">
				<table>
					<tr>
						<td align="right">
							<label for="nom">Nom :</label>
						</td>
						<td align="right">
							<input type="text" placeholder="Votre Nom" id="nom" name="nom" />
						</td>
					</tr>
					<tr>
					<tr>
						<td align="right">
							<label for="prenom">Prénom :</label>
						</td>
						<td align="right">
							<input type="text" placeholder="Votre prénom" id="prenom" name="prenom" />
						</td>
					</tr>
					<tr>
					<tr>
						<td align="right">
							<label for="age">Age :</label>
						</td>
						<td align="right">
							<input type="number" step="1" value="0" min="12" max="99" placeholder="Votre age" id="age" name="age" />
						</td>
					</tr>
					<tr>
					<tr>
						<td align="right">
							<label for="pseudo">Pseudo :</label>
						</td>
						<td align="right">
							<input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" />
						</td>
					</tr>
					<tr>
						<td align="right">
							<label for="mail">E-mail :</label>
						</td>
						<td align="right">
							<input type="email" placeholder="Votre mail" id="mail" name="mail" />
						</td>
					</tr>
					<tr>
						<td align="right">
							<label for="mail2">Confirmez votre mail :</label>
						</td>
						<td align="right">
							<input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" />
						</td>
					</tr>
					<tr>
						<td align="right">
							<label for="mdp">Mot de passe :</label>
						</td>
						<td align="right">
							<input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
						</td>
					</tr>
					<tr>
						<td align="right">
							<label for="mdp2">Confirmez votre mot de passe :</label>
						</td>
						<td align="right">
							<input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
						</td>
					</tr>
					<tr>
						<td></td>
						<td align="center">
							<br />
							<input type="submit" name="forminscription" value="Je m'inscris" />
						</td>
					</tr>
				</table>
			</form>
			<?php
			if(isset($erreur))
			{
				echo '<font color="red">'.$erreur."</font>";
			}
			?>
		</div>
	</body>
</html>




3 réponses

Utilisateur anonyme
18 juin 2016 à 20:00
Bonsoir

Au moins une erreur ici :
prepare("INSERT INTO membres(nom, prenom, age, pseudo, mail, motdepasse) VALUES(?, ?, ?)");

Trois valeurs (points d'interrogation) pour six champs, ce n'est pas assez.
1
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
19 juin 2016 à 13:06
Oui merci j'ai trouvé ça hier et tous remarche merci beaucoup :)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
18 juin 2016 à 19:05
Bonjour
tu dis avoir une erreur. .... laquelle ??
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
19 juin 2016 à 00:12
Bonsoir,

Je suis vraiment vraiment navré de ne pas répondre à cette question mais en voyant ce code je ne peux m'empêcher d'émettre un commentaire.

Le langage Javascript n'a pas été fait pour les chiens. Il a été fait pour vérifier les formulaires avant soumission. Si vous validez un formulaire contenant des erreurs, erreurs qui seront contrôlées par PHP, PHP va renvoyer au client un message d'erreur (ex: "Vos mots de passe ne correspondent pas !"). Cela peut induire :
- un trafic réseau inutile,
- une perte de temps (le temps de multiples allées et venues),
- une surcharge du serveur

C'est pour éviter ces inconvénients que Javascript a été créé : il permet la vérification de la saisie AVANT envoi et ne laisse partir le formulaire QUE s'il est conforme à ce qui est attendu (données obligatoires saisies ; format des données: caractères autorisés, longueurs mini et maxi, etc... ; éléments de listes déroulantes sélectionnées ; boutons radios ou cases à cocher cochées ou non, etc...). De ce fait, dans le PHP, beaucoup de tests ne sont plus nécessaires. Cela soulage le serveur, diminue le code et facilite le debuggage.

Je suis d'accord que certains tests ne peuvent se faire que coté serveur : la présence du pseudo dans la base de données, vérifié par javascript quant à sa présence, quant aux caractères autorisés et aux longueurs, ne pourra se faire qu'avec PHP mais les tests restant à effectuer seront beaucoup moins nombreux et donc l'exécution plus rapide.

Une chose à retenir:
- côté client : javascript pour saisies obligatoires, et conformes (caractères autorisés, longueurs mini et maxi, formats attendus, etc...
- côté serveur : PHP pour tous les tests que javascript ne peut pas effectuer et d'autres éventuellement.

Dès qu'il y a un formulaire, à mon avis on devrait trouver quelque chose du genre :

...
<script language="javascript" type="text/javascript">
// autres fonctions JS...
function verif() {

	// tests du formulaire

	return true; // Tout est bon, ça peut partir. On envoie.
}
</script>
</head>

<body>
<form name="inscr"
      method="POST"
      enctype="multipart/form-data" <!-- si nécessaire -->
      action="..."
      onsubmit=return verif();>
...
</form>
...


Encore une fois, je suis désolé de n'avoir pas fourni la réponse attendue mais il me semble que le développement ne peut vraiment pas s'affranchir de ces fondements là.
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
19 juin 2016 à 13:09
Bonjour, désoler mais je ne connais pas ce langage j’apprends doucement, donc je consolide vraiment déjà ces langages de base tel que html, php, css et SQL après je verrais bien.
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137 > flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021
19 juin 2016 à 20:15
Il n'y a pas à être désolée. Le développement de sites devient tellement complexe qu'il est difficile de tout savoir. Les sociétés qui développent ont souvent des personnels spécialisés chacun dans leur domaine mais le particulier qui fait son site est obligé la plupart du temps de jouer les hommes-orchestre.

HTML est apparu bien avant le PHP et Javascript aussi mais lui, après le HTML. Si on suit la chronologie d'apparition des langages pour déterminer les priorités dans la connaissance de ceux-ci, ce serait : HTML, Javascript, CSS, PHP, MySQL

De toute façon, chacun suit son propre cheminement et, comme on dit, l'expérience n'éclaire que le chemin de celui qui l'a parcouru. Mais on peut effectuer quelques petits changements d'itinéraires, des petits crochets, pour essayer de suivre une certaine logique, une certaine cohérence. Bon courage...
0