PHP probleme
Résolu/Fermé
Utilisateur anonyme
-
Modifié par irongege le 1/08/2013 à 18:24
Utilisateur anonyme - 4 août 2013 à 13:54
Utilisateur anonyme - 4 août 2013 à 13:54
A voir également:
- PHP probleme
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Br php ✓ - Forum PHP
- Expert php - Télécharger - Langages
- Php echo image ✓ - Forum PHP
3 réponses
RobinZS
Messages postés
5
Date d'inscription
samedi 3 août 2013
Statut
Membre
Dernière intervention
3 août 2013
Modifié par RobinZS le 3/08/2013 à 11:59
Modifié par RobinZS le 3/08/2013 à 11:59
Salut,
Ya pas mal d'erreurs...
Déjà le plus flagrant dans ta requête c'est la concaténation des variables qui est mauvaise.
Voilà un exemple avec la variable $prenom, dans un echo double quotes
echo "Bonjour" .$prenom. " tu vas bien ?";
De plus, mysql_ est obsolète comme interface d'accès à un bdd depuis php, tourne toi vers PDO
Ya pas mal d'erreurs...
Déjà le plus flagrant dans ta requête c'est la concaténation des variables qui est mauvaise.
Voilà un exemple avec la variable $prenom, dans un echo double quotes
echo "Bonjour" .$prenom. " tu vas bien ?";
De plus, mysql_ est obsolète comme interface d'accès à un bdd depuis php, tourne toi vers PDO
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
3 août 2013 à 16:34
3 août 2013 à 16:34
Salut,
ici mysql_num_rows se plaint de recevoir un booléen alors qu'il veut une ressource.
La doc de mysql_query précise que le seul moment où mysql_query renvoie un booléen, c'est FALSE et ça veut dire qu'il y a eu un problème.
Problème -> on intercepte:
À coté de ça, RobinZS a raison: les fonctions mysql_* sont obsolètes, vaut mieux utiliser PDO. Le hic, c'est que certains hébergeurs (free.fr je te regarde) ne fournissent pas PDO.
ici mysql_num_rows se plaint de recevoir un booléen alors qu'il veut une ressource.
La doc de mysql_query précise que le seul moment où mysql_query renvoie un booléen, c'est FALSE et ça veut dire qu'il y a eu un problème.
Problème -> on intercepte:
$login = mysql_query("..."); if (!$login) { die('Requête invalide : ' . mysql_error()); }mysql_error() renvoie une description de l'erreur, et die() stoppe l'exécution de la page et affiche le message qu'on lui donne.
À coté de ça, RobinZS a raison: les fonctions mysql_* sont obsolètes, vaut mieux utiliser PDO. Le hic, c'est que certains hébergeurs (free.fr je te regarde) ne fournissent pas PDO.
le probleme c'est que je suis heberger sous one.com est il y a que phpmyadmin :-(
donc je ppensait a une idée un peu folle mais qui pourrait peut etre marcher :
au lieu d'utiliser phpmyadmin pourquoi pas ecrire tout dans un fichier texte a la racine du serveur ou alors comment metre pdo ?
PS: désoler de ne pas vous avoir répondue plus tôt car j'ai eu peur que personne ne me réponde
;-)
donc je ppensait a une idée un peu folle mais qui pourrait peut etre marcher :
au lieu d'utiliser phpmyadmin pourquoi pas ecrire tout dans un fichier texte a la racine du serveur ou alors comment metre pdo ?
PS: désoler de ne pas vous avoir répondue plus tôt car j'ai eu peur que personne ne me réponde
;-)
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
4 août 2013 à 13:43
4 août 2013 à 13:43
PDO est une extension de PHP, pas une application comme phpMyAdmin. Pour voir les extensions, créé une page avec comme contenu:
Correction: en fait free.fr fournit PDO, mais seulement si l'on active PHP5.
<?php phpinfo(); ?>Puis va sur cette page avec ton navigateur; un Ctrl+F te permettra de chercher du texte, ici "PDO".
Correction: en fait free.fr fournit PDO, mais seulement si l'on active PHP5.
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 4/08/2013 à 13:48
Modifié par gravgun le 4/08/2013 à 13:48
Le phpinfo() renverra les infos de PHP sur le serveur sur lequel il tourne. Ton installation wamp ne reflète pas forcément (dans 99.999% des cas d'ailleurs) la configuation de ton hébergeur.
Page donc à consulter sur ton site en ligne.
Page donc à consulter sur ton site en ligne.
4 août 2013 à 13:05
Modifié par kevindu82 le 4/08/2013 à 13:21
<meta charset="utf-8">
<?php
if(isset($_POST['submit']))
{
$username = htmlspecialchars(trim($_POST['username']));
$password = htmlspecialchars(trim($_POST['password']));
$repeatpassword = htmlspecialchars(trim($_POST['repeatpassword']));
if($username&&$password&&$repeatpassword)
{
if(strlen($username)>=4)
{
if(strlen($password)>=6)
{
if($password==$repeatpassword)
{
$password = md5($password);
mysql_connect("monsteur-tuto.fr.mysql", "monster_tuto_fr", "");
mysql_select_db("monster_tuto_fr", $db);;
$query = mysql_query("
INSERT INTO users VALUES ('','$username','$password')
");
die('Inscription terminée, vous pouvez vous <a href="login.php">connecter</a>');
}else echo "Les mots de passe ne sont pas identiques !";
}else echo "Le mot de passe est trop court !";
}else echo "Le nom d'utilisateur est trop court !";
}else echo "Veuillez sasir tous les champs !";
}
?>
<title>Inscription</title>
<h1>Inscription</h1>
<form method="post" action="register.php">
<p>Votre nom d'utilisateur</p>
<input type="text" name="username">
<p>Votre Mot de passe</p>
<input type="password" name="password">
<p>Répetez votre mot de passe</p>
<input type="password" name="repeatpassword"><br><br>
<input type="submit" name="submit" value="Valider">
</form>
<a href="login.php">Je possède déjà un compte</a>
login.php ( page de conexion )
<?php
session_start();
if(isset($_POST['submit']))
{
$pseudo = htmlspecialchars(trim($_POST['pseudo']));
$password = htmlspecialchars(trim($_POST['password']));
if(empty($pseudo))
{
echo "Veuillez sasir votre pseudo<br/>";
}else if(empty($password))
{
echo "Veuillez sasir votre pseudo";
}else{
$db=mysql_connect("vmonsteur-tuto.fr.mysql", "monster-tuto.fr", "mot de passe");
mysql_select_db("monster_tuto_fr", $db);
$password = md5($password);
$login = mysql_query("SELECT * FROM users WHERE username='$pseudo' AND password='$password'");
$rows = mysql_num_rows($login);
if($rows == 1)
{
$_SESSION['pseudo'] = $pseudo;
header ('Location:membre.php');
}else echo "Nom d'utilisateur ou mot de passe incorrect";
}
}
?>
<h1>Conexion</h1>
<form method="post" action="">
<p>Votre pseudo</p>
<input type="text" name="pseudo" /><br/>
<p>Votre mot de passe</p>
<input type="password" name="password" /><br/><br/>
<input type="submit" name="submit" value="Se connecter" />
</form>
<a href="register.php">Pas encore membre</a>
( deconexion redirection vers login )
<?php
session_start();
session_destroy();
header('Location:login.php');
?>
membre.php ( espace membre )
<?php
session_start();
if(isset($_SESSION['pseudo']))
{
echo "Bonjour ".$_SESSION['pseudo'];
?>
<meta charset="utf-8">
<br/><br/><a href="logout.php">Me déconnecter</a>
<?php
}else{
header('Location:login.php');
}
?>