Plusieurs erreur que je ne vois pas

Résolu/Fermé
MrAkiroKun Messages postés 29 Date d'inscription vendredi 8 août 2014 Statut Membre Dernière intervention 22 janvier 2016 - 9 sept. 2014 à 23:13
 Utilisateur anonyme - 13 sept. 2014 à 14:03
Bonjour,

il y a dans mon script surement quelques erreurs, et je voudrais que vous m'aidiez à les trouver, le voici :


<?php
include('../includes/config.php');
if(isset($_SESSION['pseudo'])){
header('Location:../Projet_Octopus/index.php');
}
if(isset($_POST['envoyer'])){
if(isset($_POST['pseudo']) AND !empty($_POST['pseudo']) AND isset($_POST['email']) AND !empty($_POST['email']) AND isset($_POST['password']) AND !empty($_POST['password']) AND isset($_POST['password2']) AND !empty($_POST['password2']))
{
//Tous les champs ont été remplis
$pseudo = $_POST['pseudo'];
$email = strtolower($_POST['email']);
$link_img = "http://www.gravatar.com/avatar/" . md5($email);
$password = md5($_POST['password']);
$password2 = md5($_POST['password2']);
$longueur_pseudo = strlen($pseudo);

if($longueur_pseudo<=30)
{
//Le pseudo respecte le format
if($password == $password2)
{
//Les mots de passe sont identique
$query = $DB->prepare('INSERT INTO membres(pseudo, email, password, link_img) VALUES (:pseudo, :email, :password, :link_img)');
$query->execute(array(
'pseudo' => $pseudo,
'email' => $email,
'password' => $password,
'link_img' => $link_img
));
$sucess = "Vous êtes désormais inscrit ! Vous pouvez vous connecter <a href='/'>ici</a> !";
$dir = strtolower("../users/".$pseudo);
$content = "<p>Page personnel</p>";
if($pseudo)
{
mkdir($dir);
$open = fopen($dir."/index.php", "w"); // tu as plusieurs mode d'ouverture regarde sur internet (W write, R read)

fwrite($open, $content);
fclose($open);
}
else
{
header('location:index.php');
}
header('location:index.php');
}
else
{
$erreur = "Les mots de passe ne correspondent pas !";
}
}
else
{
$erreur = "Le pseudo ne doit contenir que 30 caractère maximum !";
}
}
}
else
{
$erreur = "Tous les champs sont obligatoire !";
}
?>
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="../ico/favicon.ico">
<title>Projet Octopus | HOME</title>
<!-- Bootstrap core CSS -->
<link href="../css/carousel.css" rel="stylesheet">
<link href="../css/bootstrap.min.css" rel="stylesheet">
<!-- JS Scripts -->
<script src="../js/ie-emulation-modes-warning.js"></script>
<script src="../js/ie10-viewport-bug-workaround.js"></script>
<link href="../css/carousel.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href=""><i class="glyphicon glyphicon-tower"></i> Projet Octopus</a>
</div>
</div>
</nav>
<div class="container">
<br />
<br />
<br />
<br />
<div class="col-md-6"><img src="../img/screen_index.jpg" alt="Octopus Social Network" /></div>
<div class="col-md-6">
<h1>Inscription</h1>
<form action="index.php" method="post">
<div class="form-group">
<input type="text" name="pseudo" class="form-control" placeholder="pseudo" value="<?php if(isset($_POST['pseudo'])){ echo $_POST['pseudo'];} ?>"><br/>
<input type="email" name="email" class="form-control" placeholder="Email (Exemple: xyz@exemple.com)"><br/>
<input type="password" name="password" class="form-control" placeholder="Mot de passe"><br/>
<input type="password" name="password2" class="form-control" placeholder="Mot de passe (Confirmation)">
</div>
<button type="submit" name="envoyer" class="btn btn-success">S'inscrire</button><br/>
<a href="../">Vous avez déja un compte ?</a>
</form>
</div>
<?php if(isset($sucess)){ echo "<div class='alert alert-success alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert'><span aria-hidden='true'>×</span><span class='sr-only'>Close</span></button>".$sucess."</div>";} ?>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/docs.min.js"></script>
</body>
</html>

Merci à toutes à tous !

5 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 10/09/2014 à 11:35
Salut,

Pas d'erreur de syntaxe dans ton code, quelques petites remarques en vrac :

- ajoute l'instruction exit(); après chaque redirection php (header('location...) : puisqu'on change de page, pas besoin d'exécuter le reste du code

- la fonction empty, qui permet de savoir si une variable est vide, vérifie aussi l'existence d'une variable. Il est donc inutile d'utiliser isset avant empty.

- préfère l'utilisation des opérateurs logique && et || à la place de AND et OR en php (cf. https://www.php.net/manual/fr/language.operators.logical.php :
if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password2'])) {


- le md5 pour crypter les mots de passe n'est pas recommandé. Se tourner vers la nouvelle API de hashage de php (password_hash, password_verify...) ou vers la fonction crypt().

- pour gérer les pages perso de tes membres, tu crées un dossier pour chacun. Si tu veux utiliser le coté dynamique de php, tu pourrais créer une seule page user.php qui afficherais la page perso de l'utilisateur connecté (en fonction des variables de session par exemple).

Bonne journée
1
MrAkiroKun Messages postés 29 Date d'inscription vendredi 8 août 2014 Statut Membre Dernière intervention 22 janvier 2016
11 sept. 2014 à 21:50
Merci pour toutes ces remarques, je vais modifier mon script grace à ton aide, mais la question initial était "Pourquoi ma requète SQL ne fonctionne pas ? :/"
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
12 sept. 2014 à 14:16
Si tu ne pose pas ta question initiale on ne pourra pas la deviner ;)

Ta requête semble syntaxiquement correct. Commence par gérer les erreurs PDO pour récupérer le message d'erreur SQL : https://www.php.net/manual/fr/pdo.error-handling.php
0
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
12 sept. 2014 à 20:44
Salut,

De mémoire la syntaxe ne serait pas :

INSERT INTO ta-table (champ1, champ2) VALUES ('valeur1', 'valeur2')

????

Fab.
0

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

Posez votre question
MrAkiroKun Messages postés 29 Date d'inscription vendredi 8 août 2014 Statut Membre Dernière intervention 22 janvier 2016
13 sept. 2014 à 10:33
Finalement c'est bon j'ai réussit à corriger l'erreur tout seul, merci quand même pour tout, je met en résolu ^^
0
Utilisateur anonyme
13 sept. 2014 à 14:03
tu pourrais faire profiter l'ensemble de la communauté en nous expliquant la solution que tu as trouvé ^^
0