Script phpdebutant espace 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 : Script phpdebutant espace membre

Re: Script phpdebutant espace membre

par zeus » 14 nov. 2011, 12:51

Modération :
Merci d'utiliser les balises [php], [html] ou [code] en fonction du langage utilisé, pour la clareté du message

Re: Script phpdebutant espace membre

par ol59000vier » 10 nov. 2011, 23:51

ok j'arrive a atteindre mon espace membre

entre les pages de mon espace membre je met des lien absolu type http://wwww. .com/
faut il mieux mettre lien relatif ?
car j'ai l'impression que quand clique sur lien absolu ca me deconnecte

merci

Re: Script phpdebutant espace membre

par ol59000vier » 10 nov. 2011, 21:26

Merci
bien que je comprend pas tout merci pour votre interet
j'ai essayé tant bien que mal mais ca marche pas

je vais reessayer

Re: Script phpdebutant espace membre

par moogli » 10 nov. 2011, 16:47

salut,

première chose

isset($_POST) c'est totalement inutile cette variable est toujours déclarée même s'il n'y a pas eu de formulaire sur la précédente :)

voici ce que je viens de tester
<?php
session_start();
?>
<form action="" method="post">
<table align="center" border="0">
 <tr>
 <td>Login :</td>
 <td><input type="text" name="pseudo" maxlength="250"></td>
 </tr>
 <tr>
 <td>Password</td>
 <td><input type="password" name="pass" maxlength="10"></td>
 </tr>
 <tr>
 <td colspan="2" align="center"><input type="submit" value="log in"></td>
 </tr>
</table>
</form>

<?php
$serveur='localhost'; //
$user='root'; 
$mdp=''; 
$base='test'; 

$nom_du_site='monsite'; 
$votre_email='contactmonsite.com'; 
$localite=''; 

$connect=mysql_connect($serveur, $user, $mdp) or die ('Erreur : '.mysql_error());
mysql_select_db($base) or die ('Erreur : '.mysql_error());

function formulaires($valeur)
 {
	$valeur=trim(htmlspecialchars(addslashes($valeur)));
	return $valeur;
 }
//récupération des variables
if( !empty($_POST['pseudo']) && !empty($_POST['pass'])) {
	$pseudo = formulaires($_POST['pseudo']);
	$pass = formulaires($_POST['pass']);
	 // on recupère le password de la table qui correspond au login du visiteur
	 $sql = "select passe from membres where pseudo='".mysql_real_escape_string($pseudo)."'";
	 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

	 $data = mysql_fetch_assoc($req);
	 mysql_free_result($req);
	 if($data['passe'] != $pass) {
		 echo '<p>Mauvais login / password. Merci de recommencer</p>';
		 //include('index2.htm'); // On inclut le formulaire d'identification
		 //exit;
	 }
	 else {
		$_SESSION['pseudo'] = $pseudo;
		echo 'Vous etes bien logué';
		// ici vous pouvez afficher un lien pour renvoyer
		// vers la page d'accueil de votre espace membres 
	 } 
}
else {
	echo '<p>Vous avez oublié de remplir un champ.</p>';
	//include('index2.htm'); // On inclut le formulaire d'identification
	//exit;
}
?>
le code est fonctionnel.

j'ai mis les includes en commentaire parce que je n'ai pas les fichiers qui vont avec ;)

si j'ai enlever la cible du formulaire c'est parce que je n'ai pas le même fichier mais ce n'est pas gênant

dans ton code a toi :
- Vire les @ devant les fonctions dans le code de connexion il faut avoir les messages d'erreurs lorsque l'on créer un script :)
- vire le isset($_POST) && qui est inutile
- déplace le $pseudo = formulaires($_POST['pseudo']);
$pass = formulaires($_POST['pass']);
DANS le if et vire le extract (c'est le mal incarné :mrgreen: ). cette fonction sert à auto déclarer tout ce qu'il y a dans un tableau en variable mais cela peux engendrer des problèmes (écrasement d'autre variable etc etc).

le mysql_real_escape_string()(/url] sert a protéger la donnée que l'on passe à la requête (demande à google injection SQL).

le [url=http://www.php.net/mysql_free_result]mysql_free_result()
sert à "libérer" la ressource utiliser afin de ne pas encombrer la mémoire et parfois php ce mélange les pinceaux et peux mettre le brin entre deux requêtes (bon c'est rare mais il est préférable de la faire)

essai ainsi, si besoin utilise var_dump() ou print_r() pour afficher le contenu des variables afin de savoir ce qu'elles contiennent et pourquoi ton code refuse de fonctionner ;)


@+

Script phpdebutant espace membre

par ol59000vier » 10 nov. 2011, 16:26

Bonjour à tous

voilà mon probleme apres avoir tant bien que mal telecharger plein de script espace membre pour toujours avoir des problemes , le dernier etant rvj
j'ai decidé d'essayer de le faire moi meme via le site php debutant mais je ny'arrive pas

Ma table
CREATE TABLE `membres` (
  `id` mediumint(9) NOT NULL auto_increment,
  `session` text NOT NULL,
  `pseudo` text NOT NULL,
  `passe` text NOT NULL,
  `email` text NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Mon formulaire (index2.htm)
<form action="login.php" method='post'>
<table align="center" border="0">
  <tr>
    <td>Login :</td>
    <td><input type="text" name="pseudo" maxlength="250"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input type="password" name="pass" maxlength="10"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="log in"></td>
  </tr>
</table>
</form>
login.php
<?php

session_start();
require_once('config.php');
//récupération des variables
$pseudo = formulaires($_POST['pseudo']);
$pass = formulaires($_POST['pass']);

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['pass'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select passe from membres where pseudo='".$pseudo."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);
 
  if($data['passe'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('index2.htm'); // On inclut le formulaire d'identification
    exit;
  }
  else {
    session_start();
    $_SESSION['pseudo'] = $pseudo;
    
    echo 'Vous etes bien logué';
    // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres 
  }    
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('index2.htm'); // On inclut le formulaire d'identification
   exit;
}

?>

config.php
<?php

$serveur='sql6';	//
$user='monuser';	
$mdp='monmotdepasse';	
$base='nom de ma base';	

$nom_du_site='monsite';		
$votre_email='[email protected]';	
$localite='';	


@$connect=mysql_connect($serveur, $user, $mdp) or die ('Erreur : '.mysql_error());
@mysql_select_db($base) or die ('Erreur : '.mysql_error());
require_once('fonctions.php');
?>
fonctions.php
<?php

function formulaires($valeur)
	{
	$valeur=trim(htmlspecialchars(addslashes($valeur)));
	return $valeur;
	}


?>

Quand je veux me logger il me dit : " Mauvais login / password. Merci de recommencer "

Merci d'avance
Olivier qui galere bien mechant :)