[RESOLU] [Espace Membres]Problème de redirection

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] [Espace Membres]Problème de redirection

Re: [Espace Membres]Problème de redirection

par jeanmaki » 21 mai 2013, 19:24

C'est bon... c'était bien la fonction connexionbdd() il y avait des variables entre les parenthèses et ça ne marchait pas...

Merci

Re: [Espace Membres]Problème de redirection

par jeanmaki » 21 mai 2013, 12:44

Salut moogli,
Alors le message d'erreur exact est "Erreur SQL : No database selected Ligne : 24."
Peut importe quel chemin je choisis pour la redirection après la connexion c'est toujours sur la ligne 24..
Quand je supprime les cookies j'ai de nouveau accès à la page cependant je doit me reconnecter avec mon pseudo et mon mot de passe en l'occurence ici "Albator34"
J'ai le message suivant qui s'affiche " vous etes désormais connecter avec le pseudo Albator34. Redirection en cours..." ---> ""Erreur SQL : No database selected Ligne : 24."

J'ai enlever comme tu me le disais , les deux lignes :
 "mysql_connect("localhost", "root", ""); //connection mysql
mysql_select_db("test"); //selection de la base 
qui étaient présents dans la fonction connexionbdd() mais rien ne change...

Re: [Espace Membres]Problème de redirection

par moogli » 19 mai 2013, 23:11

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.


Essai aussi d'utiliser les balise bbcode approprié (php ici) ;)


Quel est le message d'erreur complet ? (avec le nom de fichier)
Celui que tu indique met en avant el fait que tu n'a pas de connexion mysql ouverte.

Quand au reste sur ce que j'ai vue (j'ai pas tout lu)
- tu utilise la fonction connexionbdd() et ensuite un mysql_connect / mysql_select_db or c'ets le role de la fonction connexionbdd().
- Tu utilise l'extension mysql qui est déprécié (et donc vouée a disparaître), tu peux la remplacer, facilement, par l'extension mysqli
- Tu peux virer les ?>
<?php
qui sont inutile et n'allège pas la lecture du code
- Tu peux indenter correctement code il sera plus lisible (fonction base d'un IDE il fera la chose à ta place).

@+

[Espace Membres]Problème de redirection

par jeanmaki » 19 mai 2013, 20:58

Bonjour, j'ai suivi le tutoriel pour créer son propre espace membres et apres la connexion, il apparait "vous êtes connectés avec le pseudo "" redirection en cours..

Je suis ensuite redirigé vers l'index WAMP et puis après je reclick sur Test et j'ai le message d'erreur " Erreur Sql : no database selected ligne 24 "

voici mon code

connexion.php :
<?php
/*
Neoterranos & LkY
Page connexion.php
Permet de se connecter au site.
Quelques indications : (Utiliser l'outil de recherche et
rechercher les mentions données)
Liste des fonctions :
--------------------------
Aucune fonction
--------------------------
Liste des informations/erreurs :
--------------------------
Membre qui essaie de se connecter alors qu'il l'est déjà
Vous êtes bien connecté
Erreur de mot de passe
Erreur de pseudo doublon (normalement impossible)
Pseudo inconnu
--------------------------
*/
session_start();
header('Content-type: text/html; charset=utf-8');
include('../includes/config.php');
/********Actualisation de la session...**********/
include('../includes/fonctions.php');
connexionbdd();
actualiser_session();
mysql_connect("localhost", "root", ""); //connection mysql
mysql_select_db("test"); //selection de la base
/********Fin actualisation de session...**********/
if(isset($_SESSION['membre_id']))
{
$informations = Array(/*Membre qui essaie de se connecter alors qu'il l'est déjà*/
true,
'Vous êtes déjà connecté',
'Vous êtes déjà connecté avec le pseudo <span
class="pseudo">'.htmlspecialchars($_SESSION['membre_pseudo'],
ENT_QUOTES).'</span>.',
' - <a href="'.ROOTPATH.'/membres/deconnexion.php">Se
déconnecter</a>',
ROOTPATH.'/index.php',
5
);
require_once('../information.php');
exit();
}
if(isset($_POST['validate'])!= 'ok')
{
/********Entête et titre de page*********/
$titre = 'Connexion';
include('../includes/haut.php'); //contient le doctype, et head.
/**********Fin entête et titre***********/
?>
<div id="colonne_gauche">
<?php
include('../includes/colg.php');
?>
</div>
<div id="contenu">
<div id="map">
<a href="../index.php">Accueil</a> => <a
href="connexion.php">Connexion</a>
</div>
<h1>Formulaire de connexion</h1>
<p>Pour vous connecter, indiquez votre pseudo et votre mot de
passe.<br/>
Vous pouvez aussi cocher l'option "Me connecter automatiquement
à mon
prochain passage." pour laisser une trace sur votre ordinateur
pour être
connecté automatiquement.<br/>
Ce système de trace est basé sur les cookies, ce sont des
petits fichiers
contenant votre numéro d'identification ainsi qu'une version
cryptée de votre
mot de passe. Ces fichiers ne peuvent en aucun cas endommager
votre ordinateur,
ni l'affecter d'aucune façons, vous pourrez les supprimer à
tout moment dans
les options de votre navigateur.</p>
<form name="connexion" id="connexion" method="post"
action="connexion.php">
<fieldset><legend>Connexion</legend>
<label for="pseudo" class="float">Pseudo :</label> <input
type="text" name="pseudo" id="pseudo" value="<?php
if(isset($_SESSION['connexion_pseudo'])) echo
$_SESSION['connexion_pseudo']; ?>"/><br/>
<label for="mdp" class="float">Passe :</label> <input
type="password" name="mdp" id="mdp"/><br/>
<input type="hidden" name="validate" id="validate"
value="ok"/>
<input type="checkbox" name="cookie" id="cookie"/> <label
for="cookie">Me connecter automatiquement à mon prochain
passage.</label><br/>
<div class="center"><input type="submit" value="Connexion"
/></div>
</fieldset>
</form>
<h1>Options</h1>
<p><a href="inscription.php">Je ne suis pas inscrit !</a><br/>
<a href="moncompte.php?action=reset">J'ai oublié mon mot de
passe !</a>
</p>
<?php
}
else
{
$result = sqlquery("SELECT COUNT(membre_id) AS nbr, membre_id,
membre_pseudo, membre_mdp FROM membres WHERE
membre_pseudo = '".mysql_real_escape_string($_POST['pseudo'])."'
GROUP BY membre_id", 1);
if($result['nbr'] == 1)
{
if(md5($_POST['mdp']) == $result['membre_mdp'])
{
$_SESSION['membre_id'] = $result['membre_id'];
$_SESSION['membre_pseudo'] = $result['membre_pseudo'];
$_SESSION['membre_mdp'] = $result['membre_mdp'];
unset($_SESSION['connexion_pseudo']);
if(isset($_POST['cookie']) && $_POST['cookie'] == 'on')
{
setcookie('membre_id', $result['membre_id'],
time()+365*24*3600);
setcookie('membre_mdp', $result['membre_mdp'],
time()+365*24*3600);
}
$informations = Array(/*Vous êtes bien connecté*/
false,
'Connexion réussie',
'Vous êtes désormais connecté avec le pseudo <span
class="pseudo">'.htmlspecialchars($_SESSION['membre_pseudo'],
ENT_QUOTES).'</span>.',
'',
ROOTPATH.'/Test/index.php',
3
);
require_once('../information.php');
exit();
}
else
{
$_SESSION['connexion_pseudo'] = $_POST['pseudo'];
$informations = Array(/*Erreur de mot de passe*/
true,
'Mauvais mot de passe',
'Vous avez fourni un mot de passe incorrect.',
' - <a href="'.ROOTPATH.'/index.php">Index</a>',
ROOTPATH.'/Test/membres/connexion.php',
3
);
require_once('../information.php');
exit();
}
}
else if($result['nbr'] > 1)
{
$informations = Array(/*Erreur de pseudo doublon
(normalement impossible)*/
true,
'Doublon',
'Deux membres ou plus ont le même pseudo, contactez un
administrateur pour régler le problème.',
' - <a href="'.ROOTPATH.'/index.php">Index</a>',
ROOTPATH.'/contact.php',
3
);
require_once('../information.php');
exit();
}
else
{
$informations = Array(/*Pseudo inconnu*/
true,
'Pseudo inconnu',
'Le pseudo <span
class="pseudo">'.htmlspecialchars($_POST['pseudo'],
ENT_QUOTES).'</span> n\'existe pas dans notre base de données.
Vous avez probablement fait une erreur.',
' - <a href="'.ROOTPATH.'/index.php">Index</a>',
ROOTPATH.'/Test/membres/connexion.php',
5
);
require_once('../information.php');
exit();
}
}
?>
</div>
<?php
include('../includes/bas.php');
mysql_close();
?>
/Test/index.php
<?php
/*
Neoterranos & LkY
Page index.php
Index du site.
Quelques indications : (utiliser l'outil de recherche et rechercher
les mentions données)
Liste des fonctions :
--------------------------
Aucune fonction
--------------------------
Liste des informations/erreurs :
--------------------------
Aucune information/erreur
--------------------------
*/
session_start();
header('Content-type: text/html; charset=utf-8');
include('includes/config.php');
/********Actualisation de la session...**********/
include('includes/fonctions.php');
connexionbdd();
actualiser_session();
mysql_connect("localhost", "root", ""); //connection mysql
mysql_select_db("test"); //selection de la base
/********Fin actualisation de session...**********/
/********Entête et titre de page*********/
/**********Fin entête et titre***********/
?>
<a href="membres/inscription.php">Inscription</a> <a href="membres/connexion.php">Connexion</a>
<div id="colonne_gauche">
<?php
include('includes/colg.php');
?>
</div>
<div id="contenu">
<div id="map">
<a href="index.php">Accueil</a>
</div>
<h1>Bienvenue sur mon super site !</h1>
<p>Ce site parlera de ... et est ouvert à tous.
Cependant, faut payer pour <a
href="membres/inscription.php">s'inscrire</a> mouhahaha !
Le Webmaster
</p>
</div>
<?php
include('includes/bas.php');
mysql_close();
?>
fonctions.php
<?php
/*
Neoterranos & LkY
Page fonctions.php
Contient quelques fonctions globales.
Quelques indications : (utiliser l'outil de recherche et rechercher
les mentions données)
Liste des fonctions :
--------------------------
sqlquery($requete,$number)
connexionbdd()
actualiser_session()
vider_cookie()
--------------------------
Liste des informations/erreurs :
--------------------------
Mot de passe de session incorrect
Mot de passe de cookie incorrect
L'id de cookie est incorrect
--------------------------
*/
function sqlquery($requete, $number)
{
$query = mysql_query($requete) or exit('Erreur SQL : '.mysql_error().' Ligne : '. __LINE__ .'.'); //requête
queries();
/*
Deux cas possibles ici :
Soit on sait qu'on a qu'une seule entrée qui sera
retournée par SQL, donc on met $number à 1
Soit on ne sait pas combien seront retournées,
on met alors $number à 2.
*/
if($number == 1)
{
$query1 = mysql_fetch_assoc($query);
mysql_free_result($query);
/*mysql_free_result($query) libère le contenu de $query, je
le fais par principe, mais c'est pas indispensable.*/
return $query1;
}
else if($number == 2)
{
while($query1 = mysql_fetch_assoc($query))
{
$query2[] = $query1;
/*On met $query1 qui est un array dans $query2 qui
est un array. Ca fait un array d'arrays :o*/
}
mysql_free_result($query);
return $query2;
}
else //Erreur
{
exit('Argument de sqlquery non renseigné ou incorrect.');
}
}
?>
<?php
function queries($num = 1)
{
global $queries;
$queries = $queries + intval($num);
}
?>
<?php
function connexionbdd()
{
//Définition des variables de connexion à la base de données
$bd_nom_serveur='localhost';
$bd_login='root';
$bd_mot_de_passe='';
$bd_nom_bd='espace_membre';
//Connexion à la base de données
mysql_connect($bd_nom_serveur, $bd_login, $bd_mot_de_passe);
mysql_select_db($bd_nom_bd);
mysql_query("set names 'utf8'");
}
?>
<?php
function actualiser_session()
{
if(isset($_SESSION['membre_id']) && intval($_SESSION['membre_id'])
!= 0) //Vérification id
{
//utilisation de la fonction sqlquery, on sait qu'on aura qu'un résultat car l'id d'un membre est unique.
$retour = sqlquery("SELECT membre_id, membre_pseudo, membre_mdp
FROM membres WHERE membre_id = ".intval($_SESSION['membre_id']), 1);
//Si la requête a un résultat (c'est-à-dire si l'id existe dans la table membres)
if(isset($retour['membre_pseudo']) && $retour['membre_pseudo'] !=
'')
{
if($_SESSION['membre_mdp'] != $retour['membre_mdp'])
{
//Dehors vilain pas beau !
$informations = Array(/*Mot de passe de session incorrect*/
true,
'Session invalide',
'Le mot de passe de votre session est incorrect, vous devez vous reconnecter.',
'',
'membres/connexion.php',
3
);
require_once('../information.php');
vider_cookie();
session_destroy();
exit();
}
else
{
//Validation de la session.
$_SESSION['membre_id'] = $retour['membre_id'];
$_SESSION['membre_pseudo'] = $retour['membre_pseudo'];
$_SESSION['membre_mdp'] = $retour['membre_mdp'];
}
}
}
else //On vérifie les cookies et sinon pas de session
{
if(isset($_COOKIE['membre_id']) && isset($_COOKIE['membre_mdp']))
//S'il en manque un, pas de session.
{
if(intval($_COOKIE['membre_id']) != 0)
{
//idem qu'avec les $_SESSION
$retour = sqlquery("SELECT membre_id, membre_pseudo, membre_mdp
FROM membres WHERE membre_id = ".intval($_COOKIE['membre_id']), 1);
if(isset($retour['membre_pseudo']) && $retour['membre_pseudo']
!= '')
{
if($_COOKIE['membre_mdp'] != $retour['membre_mdp'])
{
//Dehors vilain tout moche !
$informations = Array(/*Mot de passe de cookie incorrect*/
true,
'Mot de passe cookie erroné',
'Le mot de passe conservé sur votre cookie est incorrect vous devez vous reconnecter.',
'',
'membres/connexion.php',
3
);
require_once('../information.php');
vider_cookie();
session_destroy();
exit();
}
else
{
//Bienvenue :D
$_SESSION['membre_id'] = $retour['membre_id'];
$_SESSION['membre_pseudo'] = $retour['membre_pseudo'];
$_SESSION['membre_mdp'] = $retour['membre_mdp'];
}
}
}
else //cookie invalide, erreur plus suppression des cookies.
{
$informations = Array(/*L'id de cookie est incorrect*/
true,
'Cookie invalide',
'Le cookie conservant votre id est corrompu, il va donc être détruit vous devez vous reconnecter.',
'',
'membres/connexion.php',
3
);
require_once('../information.php');
vider_cookie();
session_destroy();
exit();
}
}
else
{
//Fonction de suppression de toutes les variables de cookie.
if(isset($_SESSION['membre_id'])) unset($_SESSION['membre_id']);
vider_cookie();
}
}
}
function vider_cookie()
{
foreach($_COOKIE as $cle => $element)
{
setcookie($cle, '', time()-3600);
}
}
?>
<?php
function checkpseudo($pseudo)
{
if($pseudo == '') return 'empty';
else if(strlen($pseudo) < 3) return 'tooshort';
else if(strlen($pseudo) > 32) return 'toolong';
else
{
$result = sqlquery("SELECT COUNT(*) AS nbr FROM membres WHERE
membre_pseudo = '".mysql_real_escape_string($pseudo)."'", 1);
global $queries;
$queries++;
if($result['nbr'] > 0) return 'exists';
else return 'ok';
}
}
?>
<?php
function checkmdp($mdp)
{
if($mdp == '') return 'empty';
else if(strlen($mdp) < 4) return 'tooshort';
else if(strlen($mdp) > 50) return 'toolong';
else
{
if(!preg_match('#[0-9]{1,}#', $mdp)) return 'nofigure';
else if(!preg_match('#[A-Z]{1,}#', $mdp)) return 'noupcap';
else return 'ok';
}
}
?>
<?php
function checkmdpS($mdp, $mdp2)
{
if($mdp != $mdp2 && $mdp != '' && $mdp2 != '') return
'different';
else return checkmdp($mdp);
}
?>
<?php
function checkmail($email)
{
if($email == '') return 'empty';
else if(!preg_match('#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#', $email)) return 'isnt';
else
{
$result = sqlquery("SELECT COUNT(*) AS nbr FROM membres WHERE
membre_mail = '".mysql_real_escape_string($email)."'", 1);
global $queries;
$queries++;
if($result['nbr'] > 0) return 'exists';
else return 'ok';
}
}
?>
<?php
function checkmailS($email, $email2)
{
if($email != $email2 && $email != '' && $email2 != '') return
'different';
else return 'ok';
}
?>
<?php
function birthdate($date)
{
if($date == '') return 'empty';
else if(substr_count($date, '/') != 2) return 'format';
else
{
$DATE = explode('/', $date);
if(date('Y') - $DATE[2] <= 4) return 'tooyoung';
else if(date('Y') - $DATE[2] >= 135) return 'tooold';
else if($DATE[2]%4 == 0)
{
$maxdays = Array('31', '29', '31', '30', '31', '30', '31',
'31', '30', '31', '30', '31');
if($DATE[0] > $maxdays[$DATE[1]-1]) return 'invalid';
else return 'ok';
}
else
{
$maxdays = Array('31', '28', '31', '30', '31', '30', '31',
'31', '30', '31', '30', '31');
if($DATE[0] > $maxdays[$DATE[1]-1]) return 'invalid';
else return 'ok';
}
}
}
?>
<?php
function vidersession()
{
foreach($_SESSION as $cle => $element)
{
unset($_SESSION[$cle]);
}
}
?>

Merci de m'éclairer