|
|
Problème de connexion d'un membre
message d'erreur lors de la connexion d'un membre
Bonjour,
peux tu me copier le contenu du fichier includes/functions/fonctions.php ici que je regarde le bug ?
peux tu me copier le contenu du fichier includes/functions/fonctions.php ici que je regarde le bug ?
Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
Message édité 1 fois, dernière édition par wadvise, 06 Aout 2007, 17:31
06 Aout 2007, 17:28
06 Aout 2007, 17:28 Comme convenue ci-joint le copier coller de la page fonction.php
Merci pour ton aide
Advise
PHP (Sélectionner le code)
<?php /******************************************************************************* * * [ ./includes/functions/fonctions.php (français) ] * * -------------------------------------------------------------------------- * Commencé le : 25 juillet 2004 * Copyright : Groupe Fire Soft Board * Site Web : [url=http://www.fire-soft-board.com/]http://www.fire-soft-board.com[/url] * E-mail : [mail=support@fire-soft-board.com]support@fire-soft-board.com[/mail] * -------------------------------------------------------------------------- * Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les * termes de la Licence Publique Générale GNU publiée par la Free Software Foundation * (version 2). Reportez-vous à la Licence Publique Générale GNU pour plus de détails. * Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps * que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis. * -------------------------------------------------------------------------- * * Dernière modification le 28 mai 2006 par Genova * Templates : 0 * *******************************************************************************/ /************************************ * Cette fonction ajoute à l'url donnée la variable SID * - Fonction inspirée de append_sid() de phpBB ************************************/ function ajout_sid($url, $html = TRUE) { global $membre, $config; if((defined('PAGE_CONNEXION') || $membre['membre_id'] != INVITE) && !strpos($url, 'sid=') && $config['session_url'] && !defined('COOKIE_SID')) { $url = ( strpos($url, '?') == FALSE ) ? $url . '?sid=' . $membre['session_sid'] : $url . (($html) ? '&' : '&') . 'sid=' . $membre['session_sid']; } return $url; } /************************************ * Cette fonction liste les dossiers et / ou les fichiers d un repertoire * $chemin :: chemin du dossier * $nom_select :: Nom du select * $valeur :: Valeur de la sélection * $type :: TRUE pour lister des fichiers, FALSE pour les dossiers ************************************/ function liste_fichier($chemin, $nom_select, $valeur, $type = FALSE) { if ($dossier = opendir($chemin)) { $fichiers .= '<select name="' . $nom_select . '" class="listing">'; while ($fichier = readdir($dossier)) { if ($fichier != '.' && $fichier != '..' && $fichier != 'index.htm') { if (($type && is_file($chemin . $fichier)) || (!$type && is_dir($chemin . $fichier))) { $filename = ($type) ? $fichier : $fichier . '/'; $selection = ($filename == $valeur) ? 'selected="selected"' : ''; $fichiers .= '<option value="' . $filename . '" ' . $selection . '>' . $fichier . '</option>'; } } } $fichiers .= '</select>'; closedir($dossier); } return $fichiers; } /************************************ * $membre :: Données du membre * $forum_m :: Forum concerné * $moderation :: Tableau contenant les données des modérateurs des forums * $droit_forum :: Tableau contenant les différents droits possibles * $select :: Tableau contenant les autorisations souhaitées (afin d'optimiser l'algorithme) ************************************/ function droits($membre, $forum_m, $moderation, $droit_forum, $select = NULL) { global $bdd, $categorie_personne; // // On récupère le niveau de droit du membre, donné par les clés du tableau: // $categorie_personne = array('invite', 'membre', 'modo_forum', 'modo', 'modosup', 'admin'); // $droits = array(); $droits['est_modo'] = FALSE; if ( $membre['membre_aut'] == MODO ) { for ( $m = 0; $m < count($moderation); $m++ ) { if ( $moderation[$m]['membre_id'] == $membre['membre_id'] && $moderation[$m]['forum_id'] == $forum_m['forum_id'] ) { $droits['est_modo'] = TRUE; break; } } } else if ( $membre['membre_aut'] > MODO ) { $droits['est_modo'] = TRUE; } // // En fonction des permissions du forum on renvoie ce que le membre a le droit et n'a pas le droit de faire. // Dans les cas des droits d'édition et de suppresion, si le niveau est réglé sur membre // ou invité, on lui donne le droit de toucher à ses propres messages. // - Dark_Genova - // for ( $d = 0; $d < count($droit_forum); $d++ ) { if (is_array($select) && !in_array($droit_forum[$d], $select)) { continue; } if ( $membre['membre_aut'] == ADMIN ) { $droits[$droit_forum[$d]] = TRUE; } else { if (($droit_forum[$d] == 'droit_editer' || $droit_forum[$d] == 'droit_supprimer') && ($categorie_personne[$forum_m[$droit_forum[$d]]] == 'invite' || $categorie_personne[$forum_m[$droit_forum[$d]]] == 'membre') && $membre['membre_aut'] <= MODO && !$droits['est_modo']) { $droits[$droit_forum[$d]] = 0; if ( $forum_m[$droit_forum[$d]] > $membre['membre_aut'] + 1 ) { $droits['membre_' . substr($droit_forum[$d], 6)] = FALSE; } else { $droits['membre_' . substr($droit_forum[$d], 6)] = TRUE; } } else { if ( ( $forum_m[$droit_forum[$d]] == 2 && ( $droits['est_modo'] || $membre['membre_aut'] > MODO ) ) || ( $forum_m[$droit_forum[$d]] == 3 && $membre['membre_aut'] > MEMBRE ) ) { $droits[$droit_forum[$d]] = TRUE; } else if ( $forum_m[$droit_forum[$d]] == 0 || ( $forum_m[$droit_forum[$d]] == 1 && $membre['membre_aut'] >= MEMBRE && $membre['membre_id'] != INVITE ) || ( $forum_m[$droit_forum[$d]] == 4 && $membre['membre_aut'] >= MODOSUP ) ) { $droits[$droit_forum[$d]] = TRUE; } else { $droits[$droit_forum[$d]] = FALSE; } } } } return $droits; } /************************************ * Cette fonction créé une liste des pages pour certaines données. * $url :: URL de la page vers laquelle les liens redirigeront * $nb_page :: Nombre de pages totales * $get_page :: Page actuelle * $suiv_prec :: Si TRUE, affiche les liens 'suivants' et 'précédent' * $liste :: Si TRUE, affiche une liste des pages ************************************/ function pagination($url, $nb_page, $get_page, $suiv_prec = TRUE, $liste = TRUE) { global $langue; $ppage = $url . ( strstr($url, '?') ? '&' : '?' ) . 'page='; $pagination = ''; $boucle_ok = TRUE; for ( $i = 1; $i <= $nb_page; $i++ ) { if ( $nb_page < 10 ) { $pagination .= ( $i != $get_page ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>' : '<span style="text-decoration: underline">' . $i . '</span>' ) . ( $i < $nb_page ? ', ' : '' ); } else { if ( $i <= 3 ) { $pagination .= ( $i != $get_page ) ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>, ' : '<span style="text-decoration: underline">' . $i . '</span>, '; } else if ( $i > 3 && $i < ( $nb_page - 2 ) && $boucle_ok ) { if ( $get_page > 2 && $get_page < 6 ) { $pagination .= ( $get_page == 5 ) ? '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '" class="pagination">' . ( $get_page - 1 ) . '</a>, ' : ''; $pagination .= ( $get_page > 3 ) ? '<span style="text-decoration: underline">' . $get_page . '</span>, ' : ''; $pagination .= '<a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '" class="pagination">' . ( $get_page + 1 ) . '</a>, '; $pagination .= '..., '; } else if ( $get_page >= 6 && $get_page <= ( $nb_page - 5 ) ) { $pagination .= '..., '; for ( $a = -1 ; $a <= 1 ; $a ++ ) { $pagination .= ( $a != 0 ) ? '<a href="' . ajout_sid($ppage . ( $get_page + $a )) . '" class="pagination">' . ( $get_page + $a ) . '</a>, ' : '<span style="text-decoration: underline">' . $get_page . '</span>, '; } $pagination .= '..., '; } else if ( $get_page > ( $nb_page - 5 ) && $get_page < ( $nb_page - 1 ) ) { $pagination .= '..., '; $pagination .= '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '" class="pagination">' . ( $get_page - 1 ) . '</a>, '; $pagination .= ( $get_page < ( $nb_page - 2 ) ) ? '<span style="text-decoration: underline">' . $get_page . '</span>, ' : ''; $pagination .= ( $get_page == ( $nb_page - 4 ) ) ? '<a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '" class="pagination">' . ( $get_page + 1 ) . '</a>, ' : ''; } else { $pagination .= '..., '; } $boucle_ok = FALSE; } else if ( $i >= ( $nb_page - 2 ) ) { $pagination .= ( $i != $get_page ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>' : '<span style="text-decoration: underline">' . $i . '</span>' ) . ( $i < $nb_page ? ', ' : '' ); } } } if ( $liste ) { $code_js = '<script language="javascript" type="text/javascript">function liste_pagination(value) { location.href="' . ajout_sid(str_replace('&', '&', $url)) . ( strstr($url, '?') ? '&' : '?' ) . 'page=" + value; }</script>'; $page_liste = '<select name="page" onchange="liste_pagination(this.value);" class="listing">'; for ( $i = 1; $i <= $nb_page; $i++ ) { $selection = ( $i == $get_page ) ? 'selected="selected"' : ''; $page_liste .= '<option value="' . $i . '" ' . $selection . '>' . $i . '</option>'; } $page_liste .= '</select>'; } $pagine .= ( $suiv_prec && $get_page > 1 ? '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '"><<</a> ' : '' ); $pagine .= $langue['page'] . ': ' . $pagination; $pagine .= ( $liste ? ' ' . $page_liste : '' ); $pagine .= ( $suiv_prec && $get_page < $nb_page ? ' <a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '">>></a>' : '' ); $tableau = array(); $tableau['pagination'] = '<b>' . $pagine . '</b>'; $tableau['code'] = $code_js; return $tableau; } /************************************ * Cette fonction va récupérer le tableau d'un forum à partir de son id * $forum_id :: Id du forum concerné ************************************/ function forum_tableau($forum_id) { global $compte_forum, $forum; $frm = array(); for( $a = 0; $a < $compte_forum; $a++ ) { if( $forum_id == $forum[$a]['forum_id'] ) { $frm = $forum[$a]; $frm['cle_forum'] = $a; return ($frm); } } return array(); } /************************************ * Cette fonction retourne une date à partir d'un timestamp et d'un format de date * $timestamp :: Timestamp pour la date. S'il n'est pas fourni, le timestamp actuel sera utilisé. * $format :: Format de la date. S'il n'est pas fourni, la fonction choisira automatiquement le format du * membre ou le format par défaut. ************************************/ function aff_date($timestamp, $format = '') { global $config, $langue, $membre; if( $format == '' ) { $format = ($membre['membre_date_format'] != '') ? $membre['membre_date_format'] : $config['date_format']; } $timestamp = intval($timestamp) != '' ? intval($timestamp) : time(); $date = date($format, $timestamp); $date = strtr($date, $langue['date']); return $date; } /************************************ * Cette fonction redirige vers une url * $url :: Url vers vers où rediriger ************************************/ function redir($url) { header('Location: ' . ajout_sid($url, FALSE)); exit; } /************************************ * Envoie un mail avec entête HTML en Bcc ************************************/ function envoyer_mail($titre, $message, $from, $to) { $titre = ( trim($titre) == '' ) ? 'Aucun sujet' : $titre; $message = ( trim($message) == '' ) ? 'Aucun message' : $message; $headers = 'From: ' . $from . "\r\n"; return ( ! @mail($to, stripslashes($titre), stripslashes($message), $headers) ) ? FALSE : TRUE; } /************************************ * Renvoie le niveau d'autorisation du membre sous forme de langue. ************************************/ function niveau_autorisation($membre) { global $langue; switch($membre['membre_aut']) { case MEMBRE: return ($langue['membre']); case MODO: return ($langue['modo']); case MODOSUP: return ($langue['modosup']); case ADMIN: return ($langue['admin']); default: return ($langue['invite']); } } /************************************ * Rajoute des antislashes aux \ et ' uniquement ************************************/ function simpleslashes($text) { $text = str_replace('\\', '\\\\', $text); $text = str_replace("'", "\'", $text); return ($text); } /* ** Un print_r() mieux présenté et coloré, avec respect de l'indentation. ** Utilisé pour le débugage. */ function printr($array) { static $indentation = ''; static $array_key = ''; $cst_indentation = ' '; echo $indentation . $array_key . '<b>array(</b><br />'; reset($array); while (list($k, $v) = each($array)) { if (is_array($v)) { $indentation .= $cst_indentation; $array_key = '\'<i style="color: #334499 ;">' . addslashes(htmlspecialchars($k)) . '</i>\' => '; printr($v); $indentation = substr($indentation, 0, strlen($indentation) - strlen($cst_indentation)); } else { echo $indentation . $cst_indentation . '\'<i style="color: #334499 ;">' . addslashes(htmlspecialchars($k)) . '</i>\' => \'' . addslashes(htmlspecialchars($v)) . '\',<br />'; } } echo $indentation . '<b>)</b>' . (($indentation === '') ? ';' : ',') . '<br />'; } /* ** Renvoie la structure du tableau passé en paramètre sous ** forme de chaîne de caractère (qui peut ainsi être écrite ** dans un fichier cache par exemple). L'indentation et la mise ** en forme du code via des espaces et des \n est prise en ** compte. ** ----- ** $array :: Tableau dont la structure sera récupérée. ** $array_name :: Nom du tableau. */ if (!function_exists('var_export')) { function var_export($array, $end) { $str = "array(\n"; while (list($k, $v) = each($array)) { if (is_array($v)) { $str .= "'$k' => " . var_export($v, FALSE); } else { $str .= "'$k' => '" . simpleslashes($v) . "',\n"; } } $str .= ")" . (($end) ? '' : ',') . "\n"; return ($str); } } function get_array_code($array, $array_name) { $str = '$' . $array_name . ' = ' . var_export($array, TRUE) . ';'; return ($str); } /* ** Vérifie si une chaîne match une seconde ** ----- ** $mask :: Premièere expression qui forme le masque ** $str :: Chaîne de caractère matchant ou non la premièere expression */ function is_matching($mask, $str) { return ((preg_match('/' . str_replace('\*', '.*', preg_quote($mask)) . '/', $str)) ? TRUE : FALSE); } /* ** Encode une chaîne de caractère en caractères héxadécimaux visibles par ** le navigateur, afin d'offrir une protection contre la lecture de données dans ** la source de la page (anti spam) ** ---- ** $str :: Chaîne de caractère à encoder */ function hide_str($str) { $new = ''; $len = strlen($str); for ($i = 0; $i < $len; $i++) { $new .= '&#x' . bin2hex($str{$i}) . ';'; } return ($new); } ?>
Merci pour ton aide
Advise
Ligne 421... C'est çla oui...
C'est typiquement une erreur de regex donc
J'avoue que ta fonction métonne je l'aurais pas faite ainsi mais bon...
Ce ne serait pas plutot une fonction comme ça ? '/' n'est pas un méta caractère donc il n'est pas échappé par preg_quote il me semble.
C'est typiquement une erreur de regex donc
Code (Sélectionner le code)
return ((preg_match('/' . str_replace('\*', '.*', preg_quote($mask)) . '/', $str)) ? TRUE : FALSE);J'avoue que ta fonction métonne je l'aurais pas faite ainsi mais bon...
Code (Sélectionner le code)
return ((preg_match('[' . str_replace('\*', '.*', preg_quote($mask)) . ']', $str)) ? TRUE : FALSE);Ce ne serait pas plutot une fonction comme ça ? '/' n'est pas un méta caractère donc il n'est pas échappé par preg_quote il me semble.
Citation (Korko, 07 Aout 2007, 10:37)
Ligne 421... C'est çla oui...
C'est typiquement une erreur de regex donc
J'avoue que ta fonction métonne je l'aurais pas faite ainsi mais bon...
Ce ne serait pas plutot une fonction comme ça ? '/' n'est pas un méta caractère donc il n'est pas échappé par preg_quote il me semble.
C'est typiquement une erreur de regex donc
Code (Sélectionner le code)
return ((preg_match('/' . str_replace('\*', '.*', preg_quote($mask)) . '/', $str)) ? TRUE : FALSE);J'avoue que ta fonction métonne je l'aurais pas faite ainsi mais bon...
Code (Sélectionner le code)
return ((preg_match('[' . str_replace('\*', '.*', preg_quote($mask)) . ']', $str)) ? TRUE : FALSE);Ce ne serait pas plutot une fonction comme ça ? '/' n'est pas un méta caractère donc il n'est pas échappé par preg_quote il me semble.
Cette solution fonctionne.
Merci beaucoup!
|




