[RESOLU] modification de l'espace profil membre

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] modification de l'espace profil membre

Re: modification de l'espace profil membre

par reverb » 11 juin 2013, 15:39

Re, Merci pour ta réponse Spols :),
Du coup je ne pense pas avoir bien compris la fonction de ce code...
Ce que j'aurais aimé faire est de bolquer complétement l'accès à la page voir profil, consulter ou modifier, pour les internautes non connecté.
Je pense que je vais utiliser une autre solution avec : if(empty ($_SESSION['membre_id'])) { } else { echo 'vous devez être connecté pour accèder à cette page.' }

Merci pour ton attention et ton aide Spols,
Sincèrement.

Re: modification de l'espace profil membre

par Spols » 11 juin 2013, 14:32

Tu as défini la constante ERR_IS_NOT_CO mais pas la fonction error

error() n'est pas natif en php, soit tu la défini toi même soit tu utilise echo, print, ...

Que veux tu faire avec cette fonction ?

Re: modification de l'espace profil membre

par reverb » 11 juin 2013, 13:15

Re,
J'ai essayé de définir de la manière suivante :
define('ERR_IS_NOT_CO','Vous devez être connecté pour accéder à cette page.');
        if ($id==0) error(ERR_IS_NOT_CO);
Mais ça ne fonctionne pas :/.

Re: modification de l'espace profil membre

par Spols » 11 juin 2013, 08:34

Le message est très clair, il n'y a pas de fonction "erreur" définie. Comme ce n'est pas une fonction native, c'est à toi de la définir.

Le code en arrive là car $_SESSION['membre_id'] n'est pas défini. A toi de voir pourquoi et si c'est normal

Re: modification de l'espace profil membre

par reverb » 10 juin 2013, 16:10

Re, merci pour ton intérêt à mon problème Spols :),
Lorsque je rajoute en début de code :
$action = isset($_GET['action'])?htmlspecialchars($_GET['action']):'modifier';
une erreur s'affiche dans mon code : ligne 92 ( en comptant le get rajouter sinon ligne 91 ^^' )
Fatal error: Call to undefined function erreur() in /home/croba286/public_html/voirprofil.php on line 92
correspondante à la ligne de code suivante :
if ($id==0) erreur(ERR_IS_NOT_CO);
Merci pour ton attention et ton aide,
Sincèrement.

Re: modification de l'espace profil membre

par Spols » 10 juin 2013, 14:25

as tu essayé d'aller sur voirprofil.php?action=modifier ?

avec une adresse comme celle là, tu envoie par la méthode GET la variable nommée action et contenant 'modifier'

qui est récupèré dans ton script par $_GET['action'] et qui intervient (indirectement) dans ton switch

modification de l'espace profil membre

par reverb » 10 juin 2013, 13:25

Bonjour à tous,
j'ai précédemment suivi un tutoriel en deux partie, me permettant ( 1er partie ) de voir les informations du membre connecté ( : son pseudo, ses adresses mail, sont avatar, etc... )
et ( 2eme partie ) permettant au membre connecté, de modifier ses informations par lui même.

Je bloque sur quelques petits soucis,

-Actuellement sur mon site, lorsque le membre est connecté et, qu'il se rend sur son espace profil, ( la page voirprofil.php ) les informations du membre s'affiche, mais rien d'autre.
L'option de modification du profil n'est pas présente encore présent sur la page du site ( visuellement )

J'ai essayé plusieurs fois d'arranger ça par moi même avant de faire appel à votre aide ( je suppose que le soucis vient de la valeur "modifier" ( switch case($action) "modifier" )
Le code se faisant de plus en plus long ne facilite pas beaucoup les chose :(.

voici mon code de ma page -> voirprofil.php :
<?php session_start(); ?>
<?php 
require_once("connexioninscription.inc.php");
$_GET['membre']=$_SESSION['membre_id'];
$action = isset($_GET['action'])?htmlspecialchars($_GET['action']):'consulter';
$membre = isset($_GET['membre'])?(int) $_GET['membre']:'';


?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="voir le profil." />
<meta name="keywords" content="profil" />
<title>voir le profil </title>
<link rel="shortcut icon" sizes="32x32" title="profil" type="image/png" href="mafavicon.png" />
<link href="css1.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
<div id="cadreprofil">
<?php
//On regarde la valeur de la variable $action
switch($action)
{
    //Si c'est "consulter"
    case "consulter":
       //On récupère les infos du membre
	   
       $query = $bdd->prepare('SELECT membre_pseudo, membre_mail,  membre_inscription, membre_naissance, membre_msn, membre_yahoo, membre_facebook, membre_tumblr, membre_twitter, membre_flickr, membre_fotolog, membre_pinterest, membre_localisation, membre_profession, membre_avatar, membre_biographie, membre_signature, membre_nom, membre_prenom, membre_siteweb, membre_post FROM membres WHERE membre_id=:membre');
       $query->bindValue(':membre',$membre, PDO::PARAM_INT);
       $query->execute();
	   function dateUS2FR($date)
{
  $date = explode('-', $date);
  $date = array_reverse($date);
  $date = implode('/', $date);
  return $date;
}
       $data=$query->fetch(PDO::FETCH_ASSOC);
	   
		echo'<h1 class="textesimple">Profil de '.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</h1>';
	   
		echo '<div id="infosmembre">';

		echo '<p class="textesimple">'."Votre pseudo : ".stripslashes(htmlspecialchars($data['membre_pseudo'])).'</p>';
        
		echo'<img src="./images/avatars/'.$data['membre_avatar'].'"
       alt="Votre avatar" />';
	   
		echo'<p class="textesimple">'."Votre adresse mail courante : ".'<a href="mailto:'.stripslashes($data['membre_mail']).'">'.stripslashes(htmlspecialchars($data['membre_mail'])).'</a></p>';
        
		echo'<p class="textesimple">'."Votre adresse Msn : ".'<a href="mailto:'.stripslashes($data['membre_msn']).'">'.stripslashes(htmlspecialchars($data['membre_msn'])).'</a></p>';
		
		echo'<p class="textesimple">'."Votre adresse Yahoo : ".'<a href="mailto:'.stripslashes($data['membre_yahoo']).'">'.stripslashes(htmlspecialchars($data['membre_yahoo'])).'</a></p>';
        
		echo '<p class="textesimple">'."Votre site web : ".'<a href="'.stripslashes($data['membre_siteweb']).'">'.stripslashes(htmlspecialchars($data['membre_siteweb'])).'</a></p>';
		
		echo'<p class="textesimple">'."Votre adresse Facebook : ".'<a href="'.stripslashes($data['membre_facebook']).'">'.stripslashes(htmlspecialchars($data['membre_facebook'])).'</a></p>';
		
		echo'<p class="textesimple">'."Votre adresse Tumblr : ".'<a href="'.stripslashes($data['membre_tumblr']).'">'.stripslashes(htmlspecialchars($data['membre_tumblr'])).'</a></p>';
		
		echo'<p class="textesimple">'."Votre adresse Twitter : ".'<a href="'.stripslashes($data['membre_twitter']).'">'.stripslashes(htmlspecialchars($data['membre_twitter'])).'</a></p>';
		
		echo'<p class="textesimple">'."Votre adresse Flickr : ".'<a href="'.stripslashes($data['membre_flickr']).'">'.stripslashes(htmlspecialchars($data['membre_flickr'])).'</a></p>';
		
		echo'<p class="textesimple">'."Votre adresse Fotolog : ".'<a href="'.stripslashes($data['membre_fotolog']).'">'.stripslashes(htmlspecialchars($data['membre_fotolog'])).'</a></p>';
		
		echo'<p class="textesimple">'."Votre adresse Pinterest : ".'<a href="'.stripslashes($data['membre_pinterest']).'">'.stripslashes(htmlspecialchars($data['membre_pinterest'])).'</a></p>';
  
 		echo '<p class="textesimple">'."Ce membre est inscrit depuis le ".dateUS2FR($data['membre_inscription']).'</p>';
		
		echo '<p class="textesimple">'."Vous avez posté : ".$data['membre_post']." message(s)".'</p>';
	   
		echo '<p class="textesimple">'."Localisation : ".stripslashes(htmlspecialchars($data['membre_localisation'])).'</p>';
		
		echo '</div>';
		
       $query->CloseCursor();
	   
       break;
	   
    //Si on choisit de modifier son profil
    case "modifier":
    if (empty($_POST['sent'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
    {
        //On commence par s'assurer que le membre est connecté
        if(isset ($_SESSION['membre_id'])) erreur(ERR_IS_NOT_CO);
 
        //On prend les infos du membre
        $query=$bdd->prepare('SELECT membre_pseudo, membre_mail, membre_siteweb, membre_signature, membre_msn, membre_yahoo, membre_facebook, membre_tumblr, membre_twitter, membre_fotolog, membre_pinterest, membre_googleplus, membre_flickr, membre_nom, membre_prenom, membre_localisation, membre_profession, membre_biographie,  membre_avatar FROM membres WHERE membre_id=:id');
        $query->bindValue(':id',$id,PDO::PARAM_INT);
        $query->execute();
        $data=$query->fetch();
        echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Modification du profil';
        echo '<h1>Modifier son profil</h1>';
         
        echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">
        
  
        <fieldset><legend>Identifiants</legend>
        Pseudo : <strong>'.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</strong><br />       
        <label for="password">Nouveau mot de Passe :</label>
        <input type="password" name="password" id="password" /><br />
        <label for="confirm">Confirmer le mot de passe :</label>
        <input type="password" name="confirm" id="confirm"  />
        </fieldset>
  
        <fieldset><legend>Contacts</legend>
        <label for="email">Votre adresse E_Mail :</label>
        <input type="text" name="email" id="email"
        value="'.stripslashes($data['membre_mail']).'" /><br />
  
        <label for="msn">Votre adresse MSN :</label>
        <input type="text" name="msn" id="msn"
        value="'.stripslashes($data['membre_msn']).'" /><br />
  
		<label for="yahoo">Votre adresse Yahoo :</label>
        <input type="text" name="yahoo" id="yahoo"
        value="'.stripslashes($data['membre_yahoo']).'" /><br />
		
		<label for="facebook">Votre adresse Facebook :</label>
        <input type="text" name="facebook" id="facebook"
        value="'.stripslashes($data['membre_facebook']).'" /><br />
		
		<label for="tumblr">Votre adresse Tumblr :</label>
        <input type="text" name="tumblr" id="tumblr"
        value="'.stripslashes($data['membre_tumblr']).'" /><br />
		
		<label for="twitter">Votre adresse Twitter :</label>
        <input type="text" name="twitter" id="twitter"
        value="'.stripslashes($data['membre_twitter']).'" /><br />
		
		<label for="pinterest">Votre adresse Pinterest :</label>
        <input type="text" name="pinterest" id="pinterest"
        value="'.stripslashes($data['membre_twitter']).'" /><br />
		
		<label for="fotolog">Votre adresse Fotolog :</label>
        <input type="text" name="fotolog" id="fotolog"
        value="'.stripslashes($data['membre_fotolog']).'" /><br />
		
		<label for="googleplus">Votre adresse Googleplus :</label>
        <input type="text" name="googleplus" id="googleplus"
        value="'.stripslashes($data['membre_googleplus']).'" /><br />
		
		<label for="flickr">Votre adresse Flickr :</label>
        <input type="text" name="flickr" id="flickr"
        value="'.stripslashes($data['membre_flickr']).'" /><br />
  
        <label for="website">Votre site web :</label>
        <input type="text" name="website" id="website"
        value="'.stripslashes($data['membre_siteweb']).'" /><br />
        </fieldset>
  
        <fieldset><legend>Informations supplémentaires</legend>
        <label for="localisation">Localisation :</label>
        <input type="text" name="localisation" id="localisation"
        value="'.stripslashes($data['membre_localisation']).'" /><br />
        </fieldset>
                
        <fieldset><legend>Profil sur le forum</legend>
        <label for="avatar">Changer votre avatar :</label>
        <input type="file" name="avatar" id="avatar" />
        (Taille max : 10 ko)<br /><br />
        <label><input type="checkbox" name="delete" value="Delete" />
        Supprimer l avatar</label>
        Avatar actuel :
        <img src="./images/avatars/'.$data['membre_avatar'].'"
        alt="pas d avatar" />
      
        <br /><br />
        <label for="signature">Signature :</label>
        <textarea cols="40" rows="4" name="signature" id="signature">
        '.stripslashes($data['membre_signature']).'</textarea>
		
		<br /><br />
        <label for="profession">Profession :</label>
        <textarea cols="40" rows="4" name="profession" id="profession">
        '.stripslashes($data['membre_profession']).'</textarea>
		
		<br /><br />
        <label for="biographie">Biographie :</label>
        <textarea cols="40" rows="4" name="biographie" id="biographie">
        '.stripslashes($data['membre_biographie']).'</textarea>
      
        </fieldset>
        <p>
        <input type="submit" value="Modifier son profil" />
        <input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';
        $query->CloseCursor();   
    } 
	  
    else //Cas du traitement
    {
     //On déclare les variables 
    $mdp_erreur = NULL;
    $email_erreur1 = NULL;
    $email_erreur2 = NULL;
    $msn_erreur = NULL;
    $signature_erreur = NULL;
    $avatar_erreur = NULL;
    $avatar_erreur1 = NULL;
    $avatar_erreur2 = NULL;
    $avatar_erreur3 = NULL;
 
    //Encore et toujours notre belle variable $i :p
    $i=0;
    $temps=time(); 
    $signature=$_POST['signature'];
    $email=$_POST['email'];
    $msn=$_POST['msn'];
	$yahoo=$_POST['yahoo'];
	$facebook=$_POST['facebook'];
	$tumblr=$_POST['tumblr'];
	$twitter=$_POST['twitter'];
	$pinterest=$_POST['pinterest'];
	$fotolog=$_POST['fotolog'];
	$googleplus=$_POST['googleplus'];
	$flickr=$_POST['flickr'];
    $website=$_POST['website'];
	$profession=$_POST['profession'];
	$biographie=$_POST['biographie'];
    $localisation=$_POST['localisation'];
    $pass=($_POST['password']);
    $confirm=($_POST['confirm']);

 
    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass))
    {
         $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent ou sont vides";
         $i++;
    }
 
    //Vérification de l'adresse email
    //Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)
 
    //On commence donc par récupérer le mail
    $query=$bdd->prepare('SELECT membre_mail FROM membres WHERE membre_id =:id'); 
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->execute();
    $data=$query->fetch();
    if (strtolower($data['membre_mail']) != strtolower($email))
    {
        //Il faut que l'adresse email n'ait jamais été utilisée
        $query=$bdd->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail =:mail');
        $query->bindValue(':mail',$email,PDO::PARAM_STR);
        $query->execute();
        $mail_free=($query->fetchColumn()==0)?1:0;
        $query->CloseCursor();
        if(!$mail_free)
        {
            $email_erreur1 = "Votre adresse email est déjà utilisé par un membre";
            $i++;
        }
 
        //On vérifie la forme maintenant
        if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
        {
            $email_erreur2 = "Votre nouvelle adresse E-Mail n'a pas un format valide";
            $i++;
        }
    }
    //Vérification de l'adresse MSN
    if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
    {
        $msn_erreur = "Votre nouvelle adresse MSN n'a pas un format valide";
        $i++;
    }
 
    //Vérification de la signature
    if (strlen($signature) > 200)
    {
        $signature_erreur = "Votre nouvelle signature est trop longue";
        $i++;
    }
  
  
    //Vérification de l'avatar
  
    if (!empty($_FILES['avatar']['size']))
    {
        //On définit les variables :
        $maxsize = 30072; //Poid de l'image
        $maxwidth = 100; //Largeur de l'image
        $maxheight = 100; //Longueur de l'image
        //Liste des extensions valides
        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );
  
        if ($_FILES['avatar']['error'] > 0)
        {
        $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
        }
        if ($_FILES['avatar']['size'] > $maxsize)
        {
        $i++;
        $avatar_erreur1 = "Le fichier est trop gros :
        (<strong>".$_FILES['avatar']['size']." Octets</strong>
        contre <strong>".$maxsize." Octets</strong>)";
        }
  
        $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
        {
        $i++;
        $avatar_erreur2 = "Image trop large ou trop longue :
        (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre
        <strong>".$maxwidth."x".$maxheight."</strong>)";
        }
  
        $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
        if (!in_array($extension_upload,$extensions_valides) )
        {
                $i++;
                $avatar_erreur3 = "Extension de l'avatar incorrecte";
        }
    }

    }
    break;
  
default; //Si jamais c'est aucun de ceux-là c'est qu'il y a eu un problème :o
echo'<p>Cette action est impossible</p>';
  


    echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Modification du profil';
    echo '<h1>Modification d\'un profil</h1>';
 
  
    if ($i == 0) // Si $i est vide, il n'y a pas d'erreur
    {
        if (!empty($_FILES['avatar']['size']))
        {
                $nomavatar=move_avatar($_FILES['avatar']);
                $query=$bdd->prepare('UPDATE membres SET membre_avatar = :avatar WHERE membre_id = :id');
                $query->bindValue(':avatar',$nomavatar,PDO::PARAM_STR);
                $query->bindValue(':id',$id,PDO::PARAM_INT);
                $query->execute();
                $query->CloseCursor();
        }
  
        //Une nouveauté ici : on peut choisis de supprimer l'avatar
        if (isset($_POST['delete']))
        {
                $query=$bdd->prepare('UPDATE membres SET membre_avatar=0 WHERE membre_id = :id');
                $query->bindValue(':id',$id,PDO::PARAM_INT);
                $query->execute();
                $query->CloseCursor();
        }
  
        echo'<h1>Modification terminée</h1>';
        echo'<p>Votre profil a été modifié avec succès !</p>';
        echo'<p>Cliquez <a href="./index.php">ici</a> 
        pour revenir à la page d accueil</p>';
  
        //On modifie la table
  
        $query=$bdd->prepare('UPDATE membres
        SET  membre_mdp = :mdp, membre_email=:mail, membre_msn=:msn,  membre_yahoo=:yahoo, membre_facebook=:facebook, membre_tumblr=:tumblr,  membre_twitter=:twitter, membre_pinterest=:pinterest, membre_fotolog=:fotolog, membre_googleplus=:googleplus, membre_flickr=:flickr, membre_siteweb=:website, membre_signature=:sign, membre_localisation=:loc, membre_profession=:profession, membre_biographie=:biographie, WHERE membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO::PARAM_INT);
        $query->bindValue(':mail',$email,PDO::PARAM_STR);
        $query->bindValue(':msn',$msn,PDO::PARAM_STR);
		$query->bindValue(':yahoo',$yahoo,PDO::PARAM_STR);
		$query->bindValue(':facebook',$facebook,PDO::PARAM_STR);
		$query->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
		$query->bindValue(':twitter',$twitter,PDO::PARAM_STR);
		$query->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
		$query->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
		$query->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
		$query->bindValue(':flickr',$flickr,PDO::PARAM_STR);
        $query->bindValue(':website',$website,PDO::PARAM_STR);
        $query->bindValue(':sign',$signature,PDO::PARAM_STR);
        $query->bindValue(':loc',$localisation,PDO::PARAM_STR);
		$query->bindValue(':profession',$profession,PDO::PARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO::PARAM_STR);
        $query->bindValue(':id',$id,PDO::PARAM_INT);
        $query->execute();
        $query->CloseCursor();
    }
    else
    {
        echo'<h1 class="texteerror">Modification interrompue</h1>';
        echo'<p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
        echo'<p class="texteerror">'.$i.' erreur(s)</p>';
        echo'<p class="texteerror">'.$mdp_erreur.'</p>';
        echo'<p class="texteerror">'.$email_erreur1.'</p>';
        echo'<p class="texteerror">'.$email_erreur2.'</p>';
        echo'<p class="texteerror">'.$msn_erreur.'</p>';
        echo'<p class="texteerror">'.$signature_erreur.'</p>';
        echo'<p class="texteerror">'.$avatar_erreur.'</p>';
        echo'<p class="texteerror">'.$avatar_erreur1.'</p>';
        echo'<p class="texteerror">'.$avatar_erreur2.'</p>';
        echo'<p class="texteerror">'.$avatar_erreur3.'</p>';
        echo'<p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
}
    break;

default;//Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème :o
echo'<p class="texteerror">Cette action est impossible</p>';
}//Fin du switch
?>
</div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
Merci pour votre attention et votre aide.