Bon ce qui suit fonctionne comme je le desire :
On a une page avec un formulaire comprenant un username et un password :
<form id="form1" name="form" method="post" action="log.php">
<br />
<br />
<br />
<table width="400" border="0" align="center" cellpadding="0" cellspacing="5">
<tr>
<td align="right"><span class="Style1">Login : </span></td>
<td><input name="username" type="text" id="username" size="20" value="<?=$_REQUEST['username']?>"/></td>
</tr>
<tr>
<td align="right" class="Style1">Mot de passe : </td>
<td><input name="password" type="text" id="password" size="20" /></td>
</tr>
<tr>
<td colspan="2" align="center" class="Style1"><input type="submit" name="Submit" value="Envoyer" /></td>
</tr>
</table>
</form>
Le fichier log.php, appelé lors de la validation se compose de la maniere suivante :
<?php
require("connections/db.php");
require("utils/fonctions.php");
mysql_select_db($database_db, $db);
$log = sprintf("SELECT * FROM modx_web_users WHERE username = %s AND password = %s",
GetSQLValueString($_REQUEST['username'], "text"),
GetSQLValueString(md5($_REQUEST['password']), "text"));
$logok = mysql_query($log, $db) or die(mysql_error());
$row_log = mysql_fetch_assoc($logok);
$totalRows_log = mysql_num_rows($logok);
if ($totalRows_log != 0) {
$id_user=$row_log['id'];
setcookie ('login',$id_user);
$groupe = "SELECT * FROM modx_web_groups WHERE webuser='".$id_user."'";
$groupeok = mysql_query($groupe, $db) or die(mysql_error());
$row_groupe = mysql_fetch_assoc($groupeok);
setcookie ('groupe',$row_groupe['webgroup']);
?>
<meta http-equiv="refresh" content="0;URL=test_log.php" />
<?}else {?>
<meta http-equiv="refresh" content="0;URL=index.php?id=4" />
<?}?>
Et le fichier test_log.php, appelé que si le login et le mot de passe sont correcte :
<?php
require("connections/db.php");
require("utils/fonctions.php");
mysql_select_db($database_db, $db);
$_REQUEST['id']='185';
if (isset($_COOKIE['login'])) {
$doc ="SELECT * FROM `modx_document_groups` WHERE document='".$_REQUEST['id']."'";
$docok = mysql_query($doc, $db) or die(mysql_error());
$row_doc_group = mysql_fetch_assoc($docok);
if($row_doc_group['document_group']==$_COOKIE['groupe']){
?>
YES PAPA TA REUSSIT !
<?php
}else{
?>
Désolé, cette page n'est pas accessible pour vous.
<?}
}else{?>
<meta http-equiv="refresh" content="0;URL=index.php?id=4" />
<?}
?>
Je simmule un id à 185 pour qu’il a verfier dans la base de donnée, comme si j’avai index.php?id=185. J’obtient alors à l’écran : YES PAPA TA REUSSIT !
Lorsque je veux le passer sur modx, je fait 2 snippets :
[!log_ok!]
<?php
require("connections/db.php");
require("utils/fonctions.php");
mysql_select_db($database_db, $db);
if (isset($_COOKIE['login'])) {
$doc ="SELECT * FROM `modx_document_groups` WHERE document='".$_REQUEST['id']."'";
$docok = mysql_query($doc, $db) or die(mysql_error());
$row_doc_group = mysql_fetch_assoc($docok);
if($row_doc_group['document_group']==$_COOKIE['groupe']){
?>
et [!log_ok_fin!]
<?php
}else{
?>
Désolé, cette page n'est pas accessible pour vous.
<?}
}else{?>
<meta http-equiv="refresh" content="0;URL=index.php?id=4" />
<?}
?>
Dans mon template j’ai mis [!logo_ok!][*col_c*][!log_ok_fin!] où [*col_c*] est un TV pour le contenu de la page.
Sur modx ça ne fonctionne pas, il me renvoie toujours vers la page par défaut, comme si il n’arrivait pas a identifier que l’utilisateur fait partit du bon groupe...
Je ne sais pas si j’ai été assez clair :s mais si quelqu’un pouvait m’eclairer, merci beaucoup !