Fatal error

Résolu/Fermé
LePtitCodeur Messages postés 6 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 25 février 2018 - 22 févr. 2018 à 21:55
LePtitCodeur Messages postés 6 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 25 février 2018 - 25 févr. 2018 à 01:22
Bonjour mon code php ne fonctionne pas le problème vient de la ligne 12, dans le vrai code j'ai remplacer l'user et le mdp par les vrai identifiants.

Voici le code
<?php

if(isset($_POST['submit']))
{
	$username = htmlentities(trim($_POST['username']));
	$password = htmlentities(trim($_POST['password']));
	$repeatpassword = htmlentities(trim($_POST['repeatpassword']));
		if($username&&$password&&$repeatpassword)
		{
			if($password==$repeatpassword)
			{
				$connect = mysql_connect('http://mysql-leptitcodeur.alwaysdata.net','user','mdp') or die('Error');
					mysql_select_db('leptitcodeur_connect');

					$query = mysql_query("INSERT INTO users VALUES('','$username','$password')");

					die("Inscription terminée<a href='login.php'> connectez vous</a>");
			}else echo"Les deux mots de passes doivent êtres identiques !";
		}else echo"Veuillez saisir tout les champs !";
}

?>

<!DOCTYPE [/html/htmlintro.php3 html]>
<html>
<head>
	<title>Register | LePtitCodeur</title>
	<meta charset="utf-8" />
</head>
<body>

	<form method="POST" action="register.php">
		<p>Votre Pseudo :</p>
		<input type="text" name="username" placeholder="Pseudo" />
		<p>Votre Mot De Passe :</p>
		<input type="password" name="password" placeholder="Mot De Passe" />
		<p>Répétez votre Mot De Passe</p>
		<input type="password" name="repeatpassword" placeholder="Mot De Passe"><br /><br />
		<input type="submit" value="S'inscrire" name="submit" />
	</form>

</body>
</html>


mon hôte de base de données : mysql-leptitcodeur.alwaysdata.net
J'ai essayer de remplacer dans le code le http:// par le vide, mais sa fait la même choses.

Voila merci de me répondre si vous avez la réponse ;)

Signé
leptitcodeur

3 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
22 févr. 2018 à 22:14
1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
22 févr. 2018 à 22:53
Bonjour,

Pour commencer ... l'extension mysql est OBSOLETE.
Tu dois passer à PDO ou Mysqli !
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Ensuite, bien entendu que le HOSTNAME de ta BDD c'est sans le http
Sur la doc de alwaysdata on peut lire :

Hôte : mysql-[moncompte].alwaysdata.net
Port : 3306
Interface d'administration : https://phpmyadmin.alwaysdata.com/


Donc si tu as une erreur... c'est que tu as un pb d'identifiant ou que tu essayes d'accéder à ta bdd depuis ailleurs que l'hébergement lui même.

Enfin bon... passe à PDO ou mysqli .. et regarde ce que ça donne.



1
LePtitCodeur Messages postés 6 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 25 février 2018
22 févr. 2018 à 23:06
Merci, de ta réponses. Je vous dis si sa marche :)
0
LePtitCodeur Messages postés 6 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 25 février 2018
24 févr. 2018 à 00:13
Bon j'ai essayer et voila ce qui ce passe. Je suis aller en localhost, mais sa fonctionne pas voici les codes et quelques images

Code PhP et HTML : signin.php
<!DOCTYPE html>
<html lang="fr">
	<head>

		<title>Inscription</title>
		<meta charset="utf-8" />

<!--			CSS				-->
	<style type="text/css">

			.h1-one{
				width: 80%;
				border-bottom: 2px solid black;
				position: absolute;
				left: 5%;
			}

			.h1-one h1 {
				font-family: 'Montserrat Alternates', sans-serif;
			}

			.styl {
				font-family: 'Montserrat', sans-serif;
				width: 250px;
			}

			.erreur {
				color: red;
			}
	</style>


	</head>
	<header>
		


	</header>
	<body>
	
		<div class="h1-one">
			<h1>Inscription</h1>
		</div>
		<br /><br /><br /><br /><br /><br />
		<form method="POST" action="traitement-signin.php">
			<table>
				<tr>
					<td>
						<label for="id" class="styl">Choisissez votre identifiant : </label>
					</td>
					<td>
						<input type="text" name="id" id="id" placeholder="Pseudo" class="styl" />
					</td>
				</tr>
				<tr>
					<td>
						<label for="em" class="styl">Renseignez votre email : </label>
					</td>
					<td>
						<input type="email" name="email" id="em" placeholder="Email" class="styl" />
					</td>
				</tr>
				<tr>
					<td>
						<label for="em2" class="styl">Confirmez votre email : </label>
					</td>
					<td>
						<input type="email" name="email2" id="em2" placeholder="Confirmez votre email" class="styl" />
					</td>
				</tr>
				<tr>
					<td>
						<label for="md" class="styl">Choisissez votre mot de passe : </label>
					</td>
					<td>
						<input type="password" name="password" id="md" placeholder="Votre Mot De Passe" class="styl" />
					</td>
				</tr>
				<tr>
					<td>
						<label for="md2" class="styl">Retapez votre mot de passe : </label>
					</td>
					<td>
						<input type="password" name="password2" id="md2" placeholder="Retapez votre Mot De Passe" class="styl" />
					</td>
				</tr>
				<tr>
					<td>
					</td>
					<td>
					</td>
				</tr>
				<tr>
					<td>
					</td>
					<td>
						<input type="submit" name="submit" value="S'inscrire" class="styl" />
					</td>
				</tr>
			</table>
		</form>
		<div class="erreur">
			<?php if(isset($_GET['error'])) {echo $_GET['error'];} ?>
		</div>
	</body>
	<footer>
		


	</footer>
</html>


Le code de traitement : traitement-signin.php

<?php

$connect = new PDO("mysql:host=localhost;dbname=tutoriels;charset=utf-8","root","");

if(isset($_POST['submit'])) {
	if(isset($_POST['id'],$_POST['email'], $_POST['email2'], $_POST['password'], $_POST['password2'])) {
		if(!empty($_POST['id']) AND !empty($_POST['email']) AND !empty($_POST['email2']) AND !empty($_POST['password']) AND !empty($_POST['password2'])) {
				$pseudo = htmlspecialchars($_POST['id']);
				$email = htmlspecialchars($_POST['email']);
				$email2 = htmlspecialchars($_POST['email2']);
				$password = htmlspecialchars($_POST['password']);
				$password2 = htmlspecialchars($_POST['password2']);
				if(strlen($pseudo) < 255) {
					if(strlen($pseudo) >= 3 ) {
						if($email == $email2) {
							if($password == $password2) {
								if(strlen($password) >= 8) {
									if(strlen($password) < 255) {
										$insert = $connect->prepare("INSERT INTO users (pseudo,email,password)VALUES (?,?,?)");
										$insert->execute(array($pseudo,$email,$password));
									}else {
										header('location:signin.php?error=Votre mot de passe doit contenir moins de 255 caractère !');
									}
								}else {
								header('location:signin.php?error=Votre mot de passe doit contenir plus de 8 caractère !');
								}
							}else {header('location:signin.php?error=Vos mot de passes sont différents !');
							}
						}else {
							header('location:signin.php?error=Vos email doivent êtres identiques !');
						}
					}else {
						header('location:signin.php?error=Le speudo doit être superieur ou égale à 3 caractères !');
					}
				} else {
					header('location:signin.php?error=Le speudo doit être inférieur à 255 caractères !');
				}

		} else {
			header('location:signin.php?error=Veuillez remplir tout les champs !');
		}
	}
}




?>


Voici l'erreur :


Et voici ma page phpmyadmin mysql





Merci de vos réponses.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
24 févr. 2018 à 09:33
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
24 févr. 2018 à 09:35
Et sinon tu peux essayer
$dbh = new PDO("mysql:$connstr",  $user, $password);
$dbh->exec("set names utf8");


PS: Tu es sous quelle version de PHP ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
24 févr. 2018 à 09:49
Et au passage, ton code pourrait être légèrement amélioré :

//connexion à la bdd
require_once "tonFichierDeConnexionATaBdd.php";

//fonction de redirection
function redirect($errorMsg){
  header('location:signin.php?error='.$errorMsg);
  exit(); //toujours mettre un exit apres une redirection
}

//récupération propre des variables AVANT de les utiliser
$pseudo = !empty($_POST['id']) ? $_POST['id'] : NULL;
$email = !empty($_POST['email']) ? $_POST['email'] : NULL;
$email2 = !empty($_POST['email2']) ? $_POST['email2'] : NULL;
$password = !empty($_POST['password']) ? $_POST['password'] : NULL;
$password2 = !empty($_POST['password2']) ? $_POST['password2'] : NULL;

if(isset($_POST['submit'])) {

  if($id && $email  && $email2 && $password && $password2){
  
    if(strlen($pseudo) >= 255) redirect('Le speudo doit être inférieur à 255 caractères !');
    if(strlen($pseudo) <3 ) redirect('Le speudo doit être superieur ou égale à 3 caractères !');
    if($email != $email2) redirect('Vos email doivent êtres identiques !');
    if($password != $password2) redirect('Vos mot de passes sont différents !');
    if(strlen($password) < 8) redirect('Votre mot de passe doit contenir plus de 8 caractère !';
    if(strlen($password) > 255 ) redirect('Votre mot de passe doit contenir moins de 255 caractère !';
  
  
    $sql = "INSERT INTO users (pseudo,email,password)VALUES (?,?,?)";
    $datas = array($pseudo,$email,$password);
    try{
      $insert = $connect->prepare($sql);
			 $insert->execute($datas);
    }catch(Exception $e){
       echo "Erreur dans la requête ! " .$e->getMessage();
       die();
    }   
  }else{
    redirect("Veuillez remplir tout les champs !");
  }
	
}


Par contre, tu n'utilises pas la bonne méthode pour stocker les password....
Maintenant on utilise la fonction password_verify pour authentifier un utilisateur.

https://www.php.net/manual/fr/function.password-verify.php et donc, pour encoder le password : http://php.net/manual/fr/function.password-hash.php

Et donc je t'invite à regarde ce code :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
0
LePtitCodeur Messages postés 6 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 25 février 2018
25 févr. 2018 à 01:16
Je suis sous php 7.0 je crois
0
LePtitCodeur Messages postés 6 Date d'inscription dimanche 18 février 2018 Statut Membre Dernière intervention 25 février 2018
25 févr. 2018 à 01:22
Merci beaucoup je vais essayer ton code avec le code de la connexion a la base de donné
0