Encore un probleme session_start() php

Fermé
mathrules4 - 29 nov. 2010 à 22:56
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 1 déc. 2010 à 08:27
Bonjour, jai un probleme avec la sessions_start() en php et voici le code qui fait tout buguer:

<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$base = mysql_connect ('localhost', 'root', 'ascent');
mysql_select_db ('sitedb', $base);

// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

mysql_free_result($req);
mysql_close();

// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>


Si quelqun pourais m'empècher cette erreur:

Warning: session_start() [function.session-start]: open(..\Server\tmp\sess_119b1f8b06c223556e90c6679741ce02, O_RDWR) failed: No such file or directory (2) in C:\Trinitycore1\Server\htdocs\espace membre\index.php on line 19

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Trinitycore1\Server\htdocs\espace membre\index.php:19) in C:\Trinitycore1\Server\htdocs\espace membre\index.php on line 19

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Trinitycore1\Server\htdocs\espace membre\index.php:19) in C:\Trinitycore1\Server\htdocs\espace membre\index.php on line 19


A voir également:

9 réponses

Lord Zero Messages postés 459 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 15 juin 2018 115
29 nov. 2010 à 23:53
a tester :
ouvre ta page avec notepad++
Encodage ==> Convertir en UTF-8 (sans BOM)
Enregistre

sinon un rappel :
Pour utiliser des sessions basées sur les cookies, session_start() doit être appelée avant d'afficher quoi que ce soit dans le navigateur.
0
je dois mettre sa ou ?
0
Lord Zero Messages postés 459 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 15 juin 2018 115
30 nov. 2010 à 00:11
dans notepad++ dans le menu Encodage tu fais Convertir en UTF-8 (sans BOM) et tu enregistre
0
okay jai trouver mais sa ne marche pas plus
et jai mit mon session_start() dans un IF donc il y a du code en haut de session_start() car je ne veux pas que les utilisateur sois capable de rentrer dans la session si le mot de pass et account est faut aidez moi svp.
0

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

Posez votre question
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
30 nov. 2010 à 05:41
Met le session_start() au tout début de ton code.
<?php
session_start();
...

Il ne dois strictement rien y avoir avant qui soit affiché par le navigateur.
0
Lord Zero Messages postés 459 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 15 juin 2018 115
30 nov. 2010 à 10:55
correction : il peut y avoir du code avant session_start mais aucune balise html, texte ou echo
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
30 nov. 2010 à 13:50
D'où mon "rien y avoir avant qui soit affiché par le navigateur."
Un code de traitement PHP n'est pas affiché par le navigateur tant qu'il n'y a ni echo ni print.
Un simple espace avant le <?php peu suffire à faire planté le code.
0
pouvez vous me faire un exemple s'il vous plait ??? je vais tester l'exemple pour voir si il marche pour prendre exemple ensuite donc svp faite le bien : )
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
1 déc. 2010 à 08:27
Bonjour,

SI ca peu aider.. un exemple de code de session :

http://www.jjsteing.com/Webmastering.html

session.php
0