Erreur mini reseau social

Fermé
irin1 Messages postés 35 Date d'inscription samedi 22 novembre 2014 Statut Membre Dernière intervention 8 mars 2023 - 8 déc. 2014 à 13:15
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 26 févr. 2015 à 09:13
Salut les amis
je veux votre aide; j'ai essayé de faire un mini reseau social mais voici l'erreur que j'ai:



Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\rs\index.php:1) in C:\wamp\www\rs\functions\connect.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\rs\index.php:1) in C:\wamp\www\rs\functions\connect.php on line 2

Warning: include(functions/.func.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\rs\index.php on line 8

Warning: include() [function.include]: Failed opening 'functions/.func.php' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\rs\index.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\rs\index.php:1) in C:\wamp\www\rs\index.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\rs\index.php:1) in C:\wamp\www\rs\index.php on line 26

Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\rs\index.php on line 37

voici le code pour ma page connection.php :

<?php
session_start();
//connexion é la base des données
mysql_connect('localhost','root','') or die(error);
mysql_select_db('rs') or die('Bdd introuvable');
mysql_query('SET NAMES utf8');
?>

Pour l'index.php :

<?php


include('functions/connect.php');

$page=htmlentities($_GET['page']);

include('functions/'.$page.'.func.php');

$pages=scandir('pages');


if(!empty($page)&& in_array($_GET['page'].".php",$pages))
{
$content='pages/'.$_GET['page'].".php";


}else{
header("Location:index.php?page=login");
}
if(!isset($_SESSION['pseudo']) && $page !='membre' && $page!= 'update' && $page != 'update_avatar')

{
header("Location:index.php?page=membre");
}
?>
<!DOCTYPE html>
<html>
<head>
<link rel='stylesheet' href='css/style.css'>
</head>
<body>
<div id='content'>
<?php
include($content);
?>
</div>
</body>
</html>

merci pour votre aide
A voir également:

2 réponses

kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 2
13 févr. 2015 à 10:35
plusieurs erreurs:
1) Impossible d'ouvrir une session si elle existe déjà dans ce cas :
if(!is_set($_SESSION)) session_start();


2) Impossible de modifier le header si il est déjà en modification par une autre page. Dans ce cas, ne pas modifier le header dans plusieurs pages tout simplement.

3) tes includes sont vides, donc impossible de les inclure ;) $_GET['page'] n'est pas renseigné dans l'URL. Donc impossible de trouver 'pages/'.$_GET['page'].".php" ou 'functions/'.$page.'.func.php'.

Bon courage ;)
0
irin1 Messages postés 35 Date d'inscription samedi 22 novembre 2014 Statut Membre Dernière intervention 8 mars 2023
16 févr. 2015 à 01:57
kangourouxxx est ce que vous pouvez m'aider en écrivant ce que je devais écrire? je t'en pris
0
kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 2
16 févr. 2015 à 07:58
Dans un premier temps, dans tous tes fichiers tu remplace la ligne
session_start();

Par :
if(!is_set($_SESSION)) session_start();


Cette condition permet simplement de vérifier que la session n'existe pas avant de la créer.
0
kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 2
16 févr. 2015 à 08:06
Pour le point n°3, dans ton code tu as
$_GET['page']


Cela signifie que dans l'url de ta page tu lui passe un paramètre "page" comme ci-dessous :
http://monsite.fr/monCode.php?page=test


Dans l'URL exemple au dessus, le paramètre "page" est égal à "test" et dans ce cas dans ton code il cherchera à inclure la page "test.php" qui se trouve dans le dossier pages de ton site :
$content='pages/'.$_GET['page'].".php"
...
include($content);
...


Il va également inclure la page "test.func.php" qui est dans le dossier "functions" de ton site web :
include('functions/'.$page.'.func.php');
0
kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 2
16 févr. 2015 à 08:06
corrige déjà tout ça et on reparlera après de ton problème de header ;)
0
irin1 Messages postés 35 Date d'inscription samedi 22 novembre 2014 Statut Membre Dernière intervention 8 mars 2023
26 févr. 2015 à 04:45
kangourouxxx je ne parviens pas toujours! prend un peu tous les codes, essaie de les revoir et renvois les

INDEX.PHP
<?php
include('functions/connect.php');

$page=htmlentities($_GET['page']);
include('functions/login.func.php');
include('functions/membre.func.php');
include('functions/register.func.php');


$pages=scandir('pages');


if(!empty($page)&& in_array($_GET['page'].".php",$pages))
{

$content='pages/'.$_GET['page'].".php";

}else{
header("Location:index.php?page=login");
}

?>
<!DOCTYPE html>
<html>
<head>
<link rel='stylesheet' href='css/style.css'>
</head>
<body>
<div id='content'>
<?php
include($content);
?>
</div>
</body>
</html>

STYLE.CSS

*
{
padding:0;
margin:0;
}
body
{
background-color:#000;
font-family:Times New Roman;
}
#content
{width:960px;
background-color:#FFF;
margin:50px auto;
text-align:center;
border-radius:10px;
-webkit-border-radius:10px;
-moz-border-radius:10px;
position:relative;
}

#content h1
{
text-decoration:underline;
padding-bottem:20px;
}
#content form label
{
display:block;
float:left;
width:200px;
position:absolute;
left:100px
}
#content form input,texarea
{
border:1px solid #000;
border-radius:10px;
-webkit-border-radius:5px;
-moz-border-radius:5px;
width:200px;
margin:5px;
}
#content form input[type=submit]
{
width:100px;
background-color:#000;
color:#FFF;
cursor:pointer;
}
#content .error
{
color:red;
border-radius:10px;
-webkit-border-radius;5px;
-moz-border-radius;5px;
margin:2px auto;
width:300px;
background-color:#CCC;
}

CONNECT.PHP

<?php
session_start();
//connexion à la base des données
mysql_connect('localhost','root','') or die(error);
mysql_select_db('rs') or die('Bdd introuvable');
mysql_query('SET NAMES ANSI');
?>

REGISTER.FUNC.PHP

<?php
//function qui va charger d'inscrire l'utilisateur
function inscrire_utilisateur($pseudo,$password,$email,$sexe,$situation,$apropos)
{
$password = sha1($password);
mysql_query("INSERT INTO utilisateurs(id,pseudo,password,email,sexe,situation,apropos)
VALUES('','$pseudo','$password','$email','$sexe','$situation','$apropos')

")or die(mysql_error());
}
//la fonction qui va verifier si l'emeil existe

function pseudo_existe($pseudo)
{
$query=mysql_query("SELECT COUNT(id)FROM utilisateurs WHERE pseudo='$pseudo'");
return mysql_result($query,0);
}
//la fonction qui va verifier si l'emeil existe

function email_existe($email)
{
$query=mysql_query("SELECT COUNT(id)FROM utilisateurs WHERE email='$email'");
return mysql_result($query,0);
}
?>

MEMBRE.FUNC.PHP

<?php
//utilisateur connecté
function infos_membre_connecte()
{
$infos=array();
$pseudo=$_SESSION['pseudo'];
$query=mysql_query("SELECT * FROM utilisateurs WHERE pseudo='$pseudo'");
while($row = mysql_fetch_assoc($query))
{
$infos[] = $row;
}
return $infos;
}
?>

LOGIN.FUNC.PHP

<?php
//combinaison password et pseudo
function verifier_combinaison_pseudo_password($pseudo,$password)
{
$pseudo=mysql_real_escape_string(htmlentities($_POST['pseudo']));
$password=mysql_real_escape_string(htmlentities($_POST['password']));
$password=sha1($password);
$query=mysql_query("SELECT pseudo,password FROM utilisateurs

WHERE pseudo='$pseudo' AND password='$password'
");

$rows = mysql_num_rows($query);
return $rows;
}
?>

REGISTER.PHP

<?php
if(isset($_POST['submit']))
{
$sexe = mysql_real_escape_string(trim(htmlentities($_POST['sexe'])));
$pseudo = mysql_real_escape_string(trim(htmlentities($_POST['pseudo'])));
$password = mysql_real_escape_string(trim(htmlentities($_POST['password'])));
$repeatpassword = mysql_real_escape_string(trim(htmlentities($_POST['repeatpassword'])));
$email = mysql_real_escape_string(trim(htmlentities($_POST['email'])));
$apropos = mysql_real_escape_string(trim(htmlentities($_POST['apropos'])));
$situation = mysql_real_escape_string(trim(htmlentities($_POST['situation'])));

if(empty($pseudo))
{

$errors[]="veuillez saisir un pseudo";

}
if(empty($password))
{
$errors[]="Veuillez saisir un password";
}
if($password !=$repeatpassword)
{
$errors[] ="Vos deux password doivent étre identiques";
}
if(!filter_var($email,FILTER_VALIDATE_EMAIL))
{
$errors[] ="Votre adresse email n'est pas correcte";
}
if(empty($apropos))
{
$errors[] ="Veuillez vous décrire en quelques lignes";
}
if(pseudo_existe($pseudo)==1)
{
$errors[]="Ce pseudo n'est pas disponible";
}
if(email_existe($email)==1)
{
$errors[]="Cette adresse email existe deja <br> avez vous oublié votre <a href='#'>mot de passe</a>?";
}


if(!empty($errors))
{
foreach($errors as $error)
{
echo "<div class='error'>".$error."</div>";
}
}else{
inscrire_utilisateur($pseudo,$password,$email,$sexe,$situation,$apropos);
header("Location:index.php?page=login");
}
}

?>





<form method='POST' action=''>

<label for='sexe'>Sexe</label>
<select name="sexe">
<?php echo isset($sexe)?'<option value='.$sexe.'>'.$sexe.'</option>':'';?>
<?php echo $sexe !='Homme'?'<option value="Homme">Homme</option>':'';?>
<?php echo $sexe != 'Femme'?'<option value="Femme">Femme</option>':'';?>
</select><br/><br/>

<label for='situation'>Situation</label>
<select name="situation">
<?php echo isset($situation)?'<option value='.$situation.'>'.$situation.'</option>':'';?>

<?php echo $situation != 'Célibataire'?'<option value="Célibataire">Célibataire</option>':'';?>
<?php echo $situation != 'En couple'?'<option value="En couple">En couple</option>':'';?>
<?php echo $situation != 'Divorcé(e)'?'<option value="Divorcé(e)">Divorcé(e)</option>':'';?>
<?php echo $situation != 'veuf(ve)'?'<option value="Veuf(ve)">Veuf(ve)</option>':'';?>
</select><br/><br/>

<label for="pseudo">Votre pseudo : </label>
<input type="text" name="pseudo"value='<?php echo isset($pseudo)? $pseudo:'';?>'><br/>

<label for="password">Votre password : </label>
<input type="password" name="password"><br/>

<label for="repeatpassword">Repetez Votre password : </label>
<input type="password" name="repeatpassword"><br/>

<label for="email">Veuillez saisir votre email : </label>
<input type="text" name="email"value='<?php echo isset($email)? $email:'';?>'><br/>

<label for="apropos">A propos de vous </label>
<textarea rows="6" cols="30" name="apropos"><?php echo isset($apropos)? $apropos:'';?></textarea><br/><br/>


<input type="submit" value="S'inscrire" name="submit">
</form>

<a href='index.php?page=login'>Page de connexion</a>


MEMBRE.PHP

<div class='header'>
<?php

$infos=infos_membre_connecte();

foreach($infos as $info)

{
echo"Bienvenue ".$info['pseudo'];

}


?>
<p><a href='index.php?page=logout'>Se déconnecter</a></p>
</div>

LOGIN.PHP

<?php
if(isset($_POST['submit']))
{
if(empty($_POST['pseudo']))
{
$errors[]="Veuillez saisir votre pseudo";
}
if(empty($_POST['password']))
{
$errors[]="Veuillez saisir votre password";
}
if(!empty($errors))
{
foreach($errors as $error)
{
echo"<div class='error'>".$error."</div>";
}
}else{
if(verifier_combinaison_pseudo_password($pseudo,$password)==0)
{
echo"<div class='error'>Pseudo ou password incorrect</div>";
}else{
$_SESSION['pseudo']=$_POST['pseudo'];

header("Location:index.php?page=membre");
}
}
}
?>
<form method="POST" action="">
<label for="pseudo">Votre pseudo :</label>
<input type="text" name="pseudo"><br/>
<label for="password">Votre password :</label>
<input type="password" name="password"><br/><br/>
<input type="submit"value="Se connecter"name="submit">

</form>

<a href='index.php?page=register'>Pas encore membre</a>

NB: Toute les funtions et connect.php dans un meme dossier "FUNCTIONS"; index à la racine, style.css dans le dossier "CSS" et les autres dans le dossier PAGE.
pardon aide moi
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
26 févr. 2015 à 09:13
Bonjour,

Dans votre source:

$page=htmlentities($_GET['page']);


c'est un risque d'injection de code...

Voici comment sécuriser parfaitement:

    if (isset($_GET['page']])) {
        $page = $_GET['page'];
        $template = 'templates/'.$page.'.phtml';
        if (file_exists($template)) {
            include $template;
        } else {
            include 'templates/accueil.phtml';
        }
    }


A+
0