OVH Community, votre nouvel espace communautaire.

help login vers forum sur mutu


ptiteuf
10/08/2008, 20h57
ok merci

Michel74
10/08/2008, 19h29
Citation Envoyé par ptiteuf
alors maintenant aidez moi a le travailler ce petit fichier car je pige rien.
Commence d'abord par travailler ces tutoriels : http://www.siteduzero.com/tuto-3-4-0...-avec-php.html

ptiteuf
10/08/2008, 17h53
bon comme c'est pas evident j'ai ete voir la communaute vbulletin vu que mon blem est en fonction de lui.

j'ai trouver dedans une aide a mon blem du moin je pense car je suis nul en anglais.

voila le fichier d'aide recu

Simple vB User login and access control on non vB pages
By Bill@Billspaintball.com
Version 2.00 - March 21st, 2008
For vB 3.7.x

This document consists of 3 sections.
Installation, which is installation instructions,
Usage which is basic usage commands,
Troubleshooting which is common problems and their fixes

---------------
COPYRIGHT STUFF
---------------
You are free to use and modify this script in anyway you like.
However,
- Do not remove copyright notice
- Dont pass it off as your own work.

This script is provided free of charges, however If you use this on a commercial venture
a small paypal donation to cwp@cwp.id.au would be apprecieated. :-)


This document consists of 3 sections.
Installation, which is installation instructions,
Usage which is basic usage commands,
Troubleshooting which is common problems and their fixes


------------
INSTALLATION
------------

This Hack consists of 2 parts.

Part 1.
Add the following 6 lines right at the top of every page that you want to have access control on your website.
***It is ESSENTIAL that there is NO spaces or anything else before these lines.***
Note that they must be .php pages, not .html
Note that you will have to modify the path in lines 4 and 5 to suit your site before you upload.




$curdir = getcwd ();
chdir('/path/to/your/forums');
require_once('/path/to/your/forums/global.php');
chdir ($curdir);
?>




After this you have your
and tags and the rest of your web page.


Where you want to have your login box place this block of code.



require_once('/path/to/your/login_inc2.php');
?>




Part 2.
You will need to edit the file
login_inc.php

You need to edit line 3
$forumpath = "http://www.yoursite.com/forums/";
Change this address to suit your site.

Upload this file to your website, and ensure that the path you entered in part 1 points to it.

-----
USAGE
-----

This hack is pretty useless without some usage instructions so here they are.
We can use conditionals to hide or display depending on a number of things such as
Logged in or out status,
or restrict to members of a specific usergroup.

We do this by using conditionals in php tags where the normal content of a webpage would go.


* If you want something only accessable to a certain usergroup, use this code in your webpage. This example is only visible to members of usergroup 6.

if ($vbulletin->userinfo['usergroupid'] == '6' )
{
echo "This is only visible to people in usergroup 6";}
?>



* You can use a simple variation of this to restrict entire pages to a certain usergroup.
For example,

if ($vbulletin->userinfo['usergroupid'] == '6' )
{
echo "Have stuff for here";
} else {
echo "You do not have permission for this page"; }
?>



* Another use is to display different content to users depending on if they are logged in or not. For example

If ($vbulletin->userinfo['userid']!=0)
{
echo "Your logged in so we can display this";
} else {
echo "Your not logged in so we display this";
}
?>



* Another use is to restrict advertising to people who are not logged in. For example

if ($vbulletin->userinfo['userid'] <1) { echo"add code stuff goes here"; }
?>


Of course you can play around with conditionals to do a whole range of things, these are just brief example snippets

---------------
TROUBLESHOOTING
---------------

If your reading this far chances are you are having problems.

Here are some common causes and fixes.

1. If you get a message saying headers already sent or cookies already sent, chances are that there is something, even just a space before the 4 lines of code in part 1. Edit this and ensure that there are no spaces before it.



2. Path problems are the next biggest problem. Your paths must be exact else it will not work. Double check that all paths are correct.
If you are unsure what the path is place the following code in a page all by itself.


echo getcwd();
?>


Name this file something like path.php then upload it to your website, browse to it and it will show you the exact path.



3. Appears to login ok, but wont show you as logged in
Often caused by the vB cookie path setting.
To fix log into you vB admin area;

AdminCP -> vBulletin Options -> Cookies and HTTP Header Options -> Path to Save Cookies
change 'Suggested Settings' dropdown from '/forums/' to '/' or 'yourdomain.com'



4. Subdomains and cross site logins
This is a known issue with many scripts (not just this one), sometimes fixable sometimes not. Its caused by vB, PHP and your hosts security measures.

Open your /forum/login.php file and look for this code:

error_reporting(E_ALL & ~E_NOTICE);

Below that add

define('SKIP_REFERRER_CHECK', true);

Now save this and overwrite the file on the server with this one.

A further reported work around is to make a copy of the required Forum Forum files on your secound Server. Then you must set in the config.php on the second server to use the ip of the server won which the VB-Database is running.



5. Still got problems?
It may be a conflict with somthing already in your site.
To check this we can just make a simple page.
Call it test.php and use just this code in it.
(Make sure there is no whitespace before the 1st line)


$curdir = getcwd ();
chdir('/path/to/your/forums');
require_once('/path/to/your/forums/global.php');
chdir ($curdir);
?>


This is a heading

This is some more stuff

And another line

You get the idea

Just place stuff as you normally would with HTML

I use CSS to style and position on my site fwiw



How about we put the login box right under here?



require_once('/path/to/your/login_inc.php');
?>




Naturally, change paths to fit your forums, then upload it.
Browse to it and run it.



Maintenant voila le fichier que je dois mettre sur mon site a la racine


// Version 2.00
// Released March 21st, 2008
// For vB 3.7.x
// Edit the line below to show path to your forums
$forumpath = "http://forum.domaine.com/";


// You dont have to edit anything underneath here,
// but you can if you wish to style the login box
// to match the style of your site.

// ---------------
// COPYRIGHT STUFF
// ---------------
// You are free to use and modify this script in anyway you like.
// However,
// - Do not remove copyright notice
// - Dont pass it off as your own work.
//
// This script is provided free of charges, however If you use this on a commercial
// venture a small paypal donation to cwp@cwp.id.au would be apprecieated.


// We check if user is logged in
if ($vbulletin->userinfo['userid']!=0) {

// If Logged in display welcome back message
echo "Welcome Back, ";
echo $vbulletin->userinfo['username'];
echo " !

";

// If logged in display logout link
echo " echo $vbulletin->userinfo['logouthash'];
echo "\">";
echo "Log Out

";

} else { // If user is not logged in, we do this stuff

// Display text and link to register.
echo "
You have to target=\"_parent\">register before you can post on our forums or use our advanced features.
";

// Display login boxes + button
// You can style this with html or CSS as normal if desired.
echo"


User Name:




Password:
















";

}
?>


alors maintenant aidez moi a le travailler ce petit fichier car je pige rien.

ptiteuf
10/08/2008, 15h37
Ok merci quand meme pour ton aide

Michel74
10/08/2008, 15h35
C'est normal que tu ais une erreur $pass_sql et $pass sont différents. En plus $_SESSION['name'] est vide.

Je ne peux pas t'aider plus. Regarde tes algorithmes.

ptiteuf
10/08/2008, 15h28
apres avoir mis ta modif j'ai eue ceci

Erreur SQL =
$pass_sql=58b4a72098b36bf77d2a9af95052b4af - $pass=d41d8cd98f00b204e9800998ecf8427e - $_SESSION['name']=
Votre nom ou votre mot de passe est incorrect

Michel74
10/08/2008, 15h20
Insère provisoirement des echo pour voir les contenus réels de tes variables.
Exemple :
Code PHP:
//on teste si le mot de passe correspond à la base de donnée
echo "\$pass_sql=$pass_sql - \$pass=$pass - \$_SESSION['name']=".$_SESSION['name'].
"
;
if (
$pass_sql == $pass){
//l'utilisateur est valide
//on crée la variable de session avec son nom
$_SESSION['name'] = $name

ptiteuf
10/08/2008, 15h09
ok je vais aller voir via phpmyadmin cela et je vais coriger cela. bon dans ma table c'est password donc j'ai mis ceci dans mon fichier session.php


//initialisation de la session
session_start();
//si les champs ont été remplis
if (!$_POST['name']=="" && !$_POST['pass']==""){
//on récupère les valeurs des champs
$name = $_POST['name'];
$pass = md5($_POST['password']);

//connexion à la base de donnée
$connect = mysql_connect('serveur', 'user', 'pass');
mysql_select_db('base', $connect);
$sql = mysql_query("SELECT password FROM user WHERE username='$name'");
echo "Erreur SQL = ".mysql_error()."
\n";
$row = mysql_fetch_array($sql);
$pass_sql = $row['password'];

//on teste si le mot de passe correspond à la base de donnée
if ($pass_sql == $pass){
//l'utilisateur est valide
//on crée la variable de session avec son nom
$_SESSION['name'] = $name;
$msg = 'Vous êtes correctement indentifié';}
else{
//sinon on avertit l'utilisateur
$msg = 'Votre nom ou votre mot de passe est incorrect
';
$msg .= 'Retour';}

//fermeture de la connexion
mysql_close();}
else{
//un des champs n'est pas rempli
$msg = 'Votre nom et/ou votre mot de passe n\'est pas renseigné
';
$msg .= 'Retour';}

//on affiche le resultat
echo $msg;
?>


maintenant j'ai ceci comme message

Erreur SQL =
Votre nom ou votre mot de passe est incorrect
Retour

Michel74
10/08/2008, 15h01
Citation Envoyé par ptiteuf
Erreur SQL = Unknown column 'pass' in 'field list'
C'est là ton problème : ta colonne pass n'existe pas dans la table user.
Citation Envoyé par ptiteuf
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.34/*****/www/session.php on line 15
Votre nom ou votre mot de passe est incorrect
Ne pas en tenir compte.
Citation Envoyé par ptiteuf
ce serais pas car je ne dis pas a quel table regarder mes acces?
Il faut que tu connaisses parfaitement les structures de toutes tables.
Attention aussi aux majuscules/minuscules.

ptiteuf
10/08/2008, 14h46
Erreur SQL = Unknown column 'pass' in 'field list'

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.34/*****/www/session.php on line 15
Votre nom ou votre mot de passe est incorrect

ce serais pas car je ne dis pas a quel table regarder mes acces?

Michel74
10/08/2008, 14h41
Insère "echo Erreur SQL = ".mysql_error()."
\n";
dans :

$connect = mysql_connect('serveur', 'nom dutilisateur', 'mdp');
mysql_select_db('nombdd', $connect);
$sql = mysql_query("SELECT pass FROM user WHERE username='$name'");
echo "Erreur SQL = ".mysql_error()."
\n";

$row = mysql_fetch_array($sql);
$pass_sql = $row['pass'];

ptiteuf
10/08/2008, 14h26
mais je sais pas ou est mon erreur la pour cela que je venais ici pour qu'on m'aide a la trouver.

Michel74
10/08/2008, 14h21
Great!

Maintenant que tu es sûr de tes codes d'accès SQL, tu vas pouvoir corriger ton script en conséquence.

ptiteuf
10/08/2008, 14h18
bon je viens de retravailler via le blog note et j'ai ceci comme resultat


mysql_connect =

mysql_select_db =
$sql_query=DROP TABLE IF EXISTS `Tab_test_DB` - $result_query=1
Supression de la table Tab_test_DB =

$sql_query=CREATE TABLE `Tab_test_DB` ( `Id` int(11) NOT NULL auto_increment, `NOM` varchar(32) NOT NULL default '', `PRENOM` varchar(32) NOT NULL default '', PRIMARY KEY (`Id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 - $result_query=1
Création de la table Tab_test_DB

$sql_query=INSERT INTO `Tab_test_DB` values ('','DURANDAL','Michel') - $result_query=1
Ajout d'un enregistrement

$sql_query=SELECT Id, NOM, PRENOM FROM `Tab_test_DB` WHERE NOM='DURANDAL' - $result_query=Resource id #2
SELECT dans la table Tab_test_DB

Nombre d'enregistrements trouvés = 1

Michel74
10/08/2008, 14h09
Il semble que tu as une cochonnerie dans ton texte.
Regarde le script test.php avec un éditeur de texte ASCII pur.

ptiteuf
10/08/2008, 13h17
je vais cela de suite et te donne la reponse sur le chan.

voila j'ai modivier les info pour aller sur ma table dans ton fichier et lorsque je tape le site avec le nom du fichier j'ai ceci comme erreur

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home.10.34/****/www/test.php on line 2

Parse error: syntax error, unexpected T_STRING in /home.10.34/*****/www/test.php on line 2




pour information je suis en php5 sur la racine du site

Michel74
10/08/2008, 12h03
Bonjour Ptiteuf,

Puis-je te suggérer de faire un tout petit script en PHP test_SQL.php, dans lequel tu vas :
- Ouvrir une connexion à ta base,
- Faire une requête dans une table,
- Fermer ta connexion.

Ce script te permettra, indépendamment de tous tes autres scripts, de voir si ta base de données est accessible ou non.

test_SQL.php

Code PHP:

   error_reporting
(E_ALL);   // Activer le rapport d'erreurs PHP


// ******  Exemples de configuration selon les hébergements mutualisés ******

//   demo1g
//   ------
//      $DBhost  = "mysql.demo1g.ovh.org";
//      $DBowner = "";  // Ton login ftp
//      $DBName  = $DBowner;

//   60gp
//   ------
//      $DBhost  = "mysql5-6";
//      $DBowner = "";  // Ton login ftp
//      $DBName  = $DBowner;

//   Start 1g, 5g, 10g
//   -----------------
//      $DBhost  = "mysql5-6";
//      $DBowner = "";  // Ton login ftp
//      $DBName  = $DBowner;

//   90plan
//   ------
//      $DBhost  = "mysql5-6";
//      $DBowner = "";  // Ton login ftp suivi de quelques caractères (voir dans Manager v3)
//      $DBName  = $DBowner;




// ******  Fin des exemples de configuration


// ******  Configuration - Debut ******
   
$DBhost  "mysql5-6";   // Par exemple
   
$DBowner "";  // ton login ftp
   
$DBpw    "";  // ton password SQL
   
$DBName  $DBowner;
// ******  Configuration - Fin ******
    
      
$fh_db mysql_connect($DBhost$DBowner$DBpw);
      
$Erreur mysql_error();
      echo 
" mysql_connect = $Erreur " 
 
\n"
;
      if (
strlen($Erreur) > 0)   exit;

      
$sel mysql_select_db($DBName$fh_db);
      
$Erreur mysql_error();
      echo 
" mysql_select_db = $Erreur " 
 \n";

      
//  Supression de la table Tab_test_DB

      
$sql_query="DROP TABLE IF EXISTS `Tab_test_DB` ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"\$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      echo 
" Supression de la table Tab_test_DB  = $Erreur " 
 
\n";
      if (
strlen($Erreur) > 0)   exit;

      
//  Création de la table Tab_test_DB

      
$sql_query="CREATE TABLE `Tab_test_DB` (  `Id` int(11) NOT NULL auto_increment,  `NOM` varchar(32) NOT NULL default '',  `PRENOM` varchar(32) NOT NULL default '', PRIMARY KEY  (`Id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"\$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      echo 
" Création de la table Tab_test_DB  $Erreur " 
 
\n";
      if (
strlen($Erreur) > 0)   exit;

      
//  Ajout d'un enregistrement

      
$sql_query="INSERT INTO `Tab_test_DB`  values ('','DURANDAL','Michel')  ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"\$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      echo 
" Ajout d'un enregistrement  $Erreur " 
 
\n";
      if (
strlen($Erreur) > 0)   exit;

      
//  SELECT dans la table Tab_test_DB

      
$sql_query="SELECT Id, NOM, PRENOM FROM `Tab_test_DB` WHERE NOM='DURANDAL' ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"\$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      echo 
" SELECT dans la table Tab_test_DB  $Erreur " 
 
\n";
      if (
strlen($Erreur) > 0)   exit;

      
$result_count_row_get mysql_num_rows($result_query);  
      
$Erreur mysql_error();
      echo 
" Nombre d'enregistrements trouvés = $result_count_row_get 
 \n";
      if (
strlen($Erreur) > 0)   exit;


      
// Fermeture de la connexion    
      
mysql_close($fh_db);                                 

?>

ptiteuf
09/08/2008, 21h44
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.10.34/***/www/session.php on line 14
Votre nom ou votre mot de passe est incorrect

et pourtant je suis sur de mon login et de mon pass

Michel74
09/08/2008, 20h44
Quelle erreur ?

ptiteuf
09/08/2008, 20h05
Bonjour a tous,

Voila je suis nouveau ici et j'ai un hebergement mutualiser, j'ai installer un forum "vbulletin sur mon site et qui fonctioonne sous php5. Voila je voudrais sur ma page index.php avoir un blog login, vous allez me dire simple il y a plein de script pour cela mais voila je voudrais qu'il soit relier a mon forum"vbulletin" donc les inscrit du forum puisse aussi ce connecter par l'index du site sans cree un nouveau compte.

voila ou j'en suis arriver a cette heure

page index.php


Name

Password




page auth.php

//on vérifie que l'utilisateur est identifé
if (!isset($_SESSION['name'])){
//si la variable de session n'existe pas
//on redirige l'utilisateur vers le formulaire d'identification
header('Location: ./index.php');
//on arrête l'exécution
exit();}
?>

page session.php

//initialisation de la session
session_start();
//si les champs ont été remplis
if (!$_POST['name']=="" && !$_POST['pass']==""){
//on récupère les valeurs des champs
$name = $_POST['name'];
$pass = md5($_POST['pass']);

//connexion à la base de donnée
$connect = mysql_connect('serveur', 'nom dutilisateur', 'mdp');
mysql_select_db('nombdd', $connect);
$sql = mysql_query("SELECT pass FROM user WHERE username='$name'");
$row = mysql_fetch_array($sql);
$pass_sql = $row['pass'];

//on teste si le mot de passe correspond à la base de donnée
if ($pass_sql == $pass){
//l'utilisateur est valide
//on crée la variable de session avec son nom
$_SESSION['name'] = $name;
$msg = 'Vous êtes correctement indentifié';}
else{
//sinon on avertit l'utilisateur
$msg = 'Votre nom ou votre mot de passe est incorrect
';
$msg .= 'Retour';}

//fermeture de la connexion
mysql_close();}
else{
//un des champs n'est pas rempli
$msg = 'Votre nom et/ou votre mot de passe n\'est pas renseigné
';
$msg .= 'Retour';}

//on affiche le resultat
echo $msg;
?>


Lorsque je teste sur mon site qui a le php 5 d'installer et un forum tout neuf donc 1 seul inscrit moi donc. je met mon login et pass et j'ai la gentil erreur erreur a la ligne 14 du fichier session.php donc ceci $row = mysql_fetch_array($sql);

Merci de m'aider a trouver la solution