Résultats de la recherche (5 résultats)

laurentgraph
05 Septembre 2007, 11:49
Bonjour,
dans ton fichier includes/functions/fonctions.php vérifie bien que tu aies en fin de fichier le code suivant :
/*
** 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);
}


Si ce n'est pas le cas ajoute le.


Cette réponse corrige le problème.

Merci beaucoup !!
 
laurentgraph
04 Septembre 2007, 9:36
Salut à tous,

J'ai un petit souci actuellement, lorsque je souhaite passer sur la seconde page d'un sujet bien particulier j'obtiens cette erreur :

Fatal error: Call to undefined function: hide_str() in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions_message.php on line 315

Voici le contenu de ma page fonctions_message.php :

<?php
/*******************************************************************************
*
*            [ ./includes/functions/fonctions_message.php (français) ]
*
*    --------------------------------------------------------------------------
*    Commencé le :     21 aout 2004
*    Copyright :     Groupe Fire Soft Board
*    Site Web :         http://www.fire-soft-board.com
*    E-mail :         support@fire-soft-board.com
*    --------------------------------------------------------------------------
*    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
*
*******************************************************************************/

define('FUNCTIONS_MESSAGE', TRUE);

/************************************
* Remplace les balises < et > par < et >
************************************/
function anti_html($texte)
{
    $texte = preg_replace(&quote;/>/i&quote;, &quote;>&quote;, $texte);
    $texte = preg_replace(&quote;/</i&quote;, &quote;<&quote;, $texte);
    return $texte;
}

/************************************
* Remplace tous les liens du type url ou email par leurs équivalents HTML
* - Fonction reprise (et boostée) de phpBB -
************************************/
function parse_url_email($texte)
{
    $texte = preg_replace('#(script|about|applet|activex|chrome):#is', &quote;\\1&#058;&quote;, $texte);
    $texte = preg_replace(&quote;#(^|[\n ]|<li>)([\w]+?://[^ \&quote;\n\r\t<]*)#is&quote;, &quote;\\1<a href=\&quote;\\2\&quote; target=\&quote;_blank\&quote;>\\2</a>&quote;, $texte);
    $texte = preg_replace(&quote;#(^|[\n ])((www|ftp)\.([^ \&quote;\t\n\r<]){3,})#is&quote;, &quote;\\1<a href=\&quote;http://\\2\&quote; target=\&quote;_blank\&quote;>http://\\2</a>&quote;, $texte);
    $texte = preg_replace_callback(&quote;#(?<=^|[\n ])([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)*[\w]+)#i&quote;, 'parse_fsbcode_mail', $texte);
    return $texte;
}

/************************************
* Parse les symboles smileys en leurs équivalent HTML, à utiliser lors de la lecture d'un texte
************************************/
function smileys($texte, $smiley)
{
    global $racine, $theme;
    static $origine = array(), $remplacement = array(), $passed = 0;

    if (!$passed)
    {
        for ( $s = 0; $s < count($smiley); $s++ )
        {
            $origine[] = &quote;/(?<=.\W|\W.|^\W)&quote; . preg_quote($smiley[$s]['smiley_code'], &quote;/&quote;) . &quote;(?=.\W|\W.|\W$)/&quote;;
            $remplacement[] = sprintf($theme['img'], $racine . 'images/smileys/' . $smiley[$s]['smiley_nom'], $smiley[$s]['smiley_nom'], $smiley[$s]['smiley_nom']);
        }
        $passed = 1;
    }

    $texte = preg_replace($origine, $remplacement, ' ' . $texte . ' ');
    $texte = substr($texte, 1, -1);

    return $texte;
}

/************************************
* Parse les Fscode du texte, à utiliser lors de la lecture d'un texte
*    $parse_url :: active ou non le rempalcement automatique des mails et urls sans FScode
************************************/
function fscode_parse($texte, $parse_url_email = TRUE)
{
    global $langue, $theme;

    //
    // On commence par le FScode [code] afin de pouvoir remplacer tous les [ et ] qu'il contient
    // par des équivalents, pour pouvoir les échapper. On rétablira les [ et ] à la fin.
    //
    preg_match_all(&quote;`\[code\](.*?)\[/code\]`si&quote;, $texte, $matches);
    $nb_matches = count($matches[1]);
    for ($i = 0; $i < $nb_matches; $i++)
    {
        $origine = $matches[1][$i];
        $remplacement = $matches[1][$i];
        $remplacement = fscode2fs($remplacement);
        $remplacement = str_replace(&quote;  &quote;, &quote;&nbsp; &quote;, $remplacement);
        $remplacement = str_replace(&quote;  &quote;, &quote; &nbsp;&quote;, $remplacement);
        $remplacement = str_replace(&quote;\t&quote;, &quote;&nbsp; &nbsp;&quote;, $remplacement);
        $remplacement = preg_replace(&quote;/^ {1}/m&quote;, '&nbsp;', $remplacement);
        $remplacement = str_replace(array(':', '[', ']', ')', '('), array('&#58;', '&#91;', '&#93;', '&#41;', '&#40;'), $remplacement);
        $origine = '[cde]' . $origine . '[/cde]';
        $remplacement = '[cde]' . $remplacement . '[/cde]';
        $texte = str_replace($origine, $remplacement, $texte);
    }

    // Texte sous format code :: [cde]texte[/cde]
    $texte = fscode_subparse($texte, '(\[code\]|&fs1;code&fs2;)', '(\[/code\]|&fs1;\/code&fs2;)', sprintf($theme['fscode_ouvert'], '90%', $langue['code']), $theme['fscode_ferme']);

    //
    // Parse des [quote] et [quote=xxx]. La syntaxe [quot=xxx]yyy[/quot] est gardée afin de laisser une compaitibilité
    // avec les anciennes versions de FSB
    //
    while(preg_match('/\[quote\](.+?)\[\/quote\]/is', $texte))
    {
        $texte = preg_replace('/\[quote\](.+?)\[\/quote\]/ise', 'replace_simple_quote(\'\\1\')', $texte);
    }

    foreach (array('quot', 'quote') AS $v)
    {
        while(preg_match('/\[' . $v . '=(.*?)\](.+?)\[\/' . $v . '\]/is', $texte))
        {
            $texte = preg_replace('/\[' . $v . '=(.*?)\](.+?)\[\/' . $v . '\]/ise', 'replace_complex_quote(\'\\2\', \'\\1\')', $texte);
        }
    }

    //
    // On parse le FScode [list][b] de la même façon que [quote] en pranant le soin de ne parser que les [/b][*][b]
    // entre les balises de [list]
    // - Dark_Genova -
    //
    $texte = parse_list($texte);

    // Texte sous format liste :: [list][*][b][b][b]texte1 [/b][/b][/b][*][b][b][b]texte2 ...
    $texte = preg_replace(&quote;`\[list\](.*?)\[/list\]`si&quote;, '<ul>\\1</ul>', $texte);

    // Texte en gras :: [b]texte[/b]
    $texte = parse_simple_fscode($texte, 'b', '<span class=&quote;b&quote;>', '</span>');

    // Texte en italique :: [i]texte[/i]
    $texte = parse_simple_fscode($texte, 'i', '<span class=&quote;i&quote;>', '</span>');

    // Texte souligné :: [u]texte[/u]
    $texte = parse_simple_fscode($texte, 'u', '<span class=&quote;u&quote;>', '</span>');

    // Texte coloré [couleur=#000000]texte[/couleur]
    $texte = fscode_subparse($texte, '(\[couleur=(\#[0-9A-Fa-f]{6}|[a-zA-Z].*?)\])', '(\[/couleur\])', '<span style=&quote;color:%s;&quote;>', '</span>', 'couleur');

    // texte plus ou moins grand :: [taille=18]texte[/taille]
    $texte = fscode_subparse($texte, '(\[taille=([[:digit:]-]{1,2})\])', '(\[/taille\])', '<span style=&quote;font-size:%spx&quote;>', '</span>', 'taille');

    // texte en url :: [url=http://www.fire-soft-board.com]http://www.fire-soft-board.com[/url]
    $texte = preg_replace('`\[url\](\w+?://)(.*?)\[/url\]`i', '<a href=&quote;\\1\\2&quote; target=&quote;_blank&quote;>\\1\\2</a>', $texte);
    $texte = preg_replace('`\[url\](www\.|ftp\.)(.*?)\[/url\]`i', '<a href=&quote;http://\\1\\2&quote; target=&quote;_blank&quote;>\\1\\2</a>', $texte);

    // Texte masquant une url :: [url=http://www.fire-soft-board.com]texte[/url]
    $texte = preg_replace('`\[url=(\w+?://)(.*?)\](.*?)\[/url\]`i', '<a href=&quote;\\1\\2&quote; target=&quote;_blank&quote;>\\3</a>', $texte);
    $texte = preg_replace('`\[url=(www\.|ftp\.)(.*?)\](.*?)\[/url\]`i', '<a href=&quote;http://\\1\\2&quote; target=&quote;_blank&quote;>\\3</a>', $texte);

    // texte en mail :: support@fire-soft-board.com
    $texte = preg_replace_callback('`\[mail\](.*?@.*?\..*?)\[/mail\]`si', 'parse_fsbcode_mail', $texte);

    // Texte masquant un mail :: support@fire-soft-board.com
    $texte = preg_replace_callback('`\[mail=(.*?@.*?\..*?)\](.*?)\[/mail\]`si', 'parse_fsbcode_mail', $texte);

        // Image :: [img:alt=http://forums.fire-soft-board.com/images/logo_fsb.jpg]http://forums.fire-soft-board.com/images/logo_fsb.jpg[/img]
    $texte = preg_replace('`\[img\](\w+?://.*?)\[/img\]`i', '<img src=&quote;\\1&quote; border=&quote;0&quote;>', $texte);

    //
    // On parse les URL et adresses mails en les encadrants des BBcodes necessaires
    //
    if ( $parse_url_email )
    {
        $texte = parse_url_email($texte);
    }

    // On rétabli ensuite les &fs1; et &fs2; en [ et ]
    $texte = fs2fscode($texte);

    return $texte;
}

/************************************
* Parse les FScode pouvant s'encastrer entre eux comme les [quote] ou [list]
************************************/
function fscode_subparse($texte, $patern_ouvert, $patern_ferme, $theme_ouvert, $theme_ferme, $special = FALSE)
{
    global $langue, $theme;

    preg_match_all('`' . $patern_ouvert . '`si', $texte, $matches_o);
    preg_match_all('`' . $patern_ferme . '`si', $texte, $matches_f);
    $minimum = min(count($matches_o[0]), count($matches_f[0]));
    $position_o = 0;
    $position_f = 0;

    for ( $i = 0; $i < $minimum; $i++ )
    {
        $position_o = strpos($texte, $matches_o[0][$i], $position_o);
        $position_f = strpos($texte, $matches_f[0][$i], $position_f);
        if ( $position_o < $position_f )
        {
            $open = $theme_ouvert;
            if ($special == 'quot')
            {
                $open = sprintf($theme['fsquote_ouvert'], '90%', $langue['citer'] . ' : ' . $matches_o[2][$i]);
            }
            else if ($special == 'couleur' || $special == 'taille')
            {
                $open = sprintf($theme_ouvert, $matches_o[2][$i]);
            }

            $texte = preg_replace('`' . preg_quote($matches_o[0][$i]) . '`si', $open, $texte, 1);
            $texte = preg_replace('`' . preg_quote($matches_f[0][$i]) . '`si', $theme_ferme, $texte, 1);
        }
    }

    return $texte;
}

/************************************
* Parse le texte de manière a afficher du code
************************************/
function fscode_code($texte)
{
    global $langue, $theme;

    return sprintf($theme['fscode_code'], '90%', $langue['code'], $texte);
}

/************************************
* Remplace les signes [ et ] par &fs1; et &fs2;
************************************/
function fscode2fs($texte)
{
    $origine = array('#\[#', '#\]#');
    $remplacement = array('&fs1;', '&fs2;');
    return preg_replace($origine, $remplacement, $texte);
}

/************************************
* Remplace les signes &fs1; et &fs2; par [ et ]
************************************/
function fs2fscode($texte)
{
    $origine = array('#&fs1;#', '#&fs2;#');
    $remplacement = array('[', ']');
    return preg_replace($origine, $remplacement, $texte);
}

/************************************
* Supprime toutes les balises de type [texte] du message.
************************************/
function fscode_supprimer($texte)
{
    return preg_replace('/\[(\/?)[[:alnum:]]+\]/si', '', $texte);
}

/************************************
* Parse les simples FScode correctement.
* Merci à Dr DLP pour cette fonction [img:alt=http://www.fire-soft-board.com/fsb//images/smileys/clown.gif]http://www.fire-soft-board.com/fsb//images/smileys/clown.gif[/img]
************************************/
function parse_simple_fscode($message, $fscode, $open, $close)
{
    $pattern = '#\[' . $fscode . '\](.*?)\[/' . $fscode . '\]#si';
    $replace = $open . '\\1' . $close;
    while (preg_match($pattern, $message))
    {
        $message = preg_replace($pattern, $replace, $message);
    }
    return ($message);
}

/*
** Gestion des FScodes [list]
*/
function parse_list($str)
{
    while(preg_match('/\n?\[list\](.+?)\[\/list\]\n?/is', $str))
    {
    $str = preg_replace('/\n?\[list\](.+?)\[\/list\]\n?/ies', &quote;subparse_list('\\1')&quote; , $str);
    }
    return ($str);
}

function subparse_list($str)
{
    $str = str_replace('\&quote;', '&quote;', $str);
    $str = preg_replace('/\[\*\]/', '</li><li>', $str);
    $str = preg_replace('/^<\/?li>/', '', $str);
    $str = str_replace( &quote;\n</li>&quote;, '</li>', $str . '</li>');
    return '<ul>' . $str . '</ul>';
}

/*
** Fonctions callback pour les FScodes [quote]
*/
function replace_simple_quote($str)
{
    global $langue, $theme;

    $str = str_replace('\&quote;', '&quote;', $str);
    return (sprintf($theme['fsquote_ouvert'], '90%', $langue['citer']) . $str . $theme['fsquote_ferme']);
}

function replace_complex_quote($str, $name)
{
    global $langue, $theme;

    $str = str_replace('\&quote;', '&quote;', $str);
    $name = str_replace('\&quote;', '&quote;', $name);
    return (sprintf($theme['fsquote_ouvert'], '90%', $langue['citer'] . ' : ' . $name) . $str . $theme['fsquote_ferme']);
}

/*
** Callback pour traiter les adresses E-mails
*/
function parse_fsbcode_mail($match)
{
    $email = hide_str($match[1]);
    $content = (isset($match[2])) ? $match[2] : $email;
    return ('<a href=&quote;mailto:' . $email . '&quote;>' . $content . '</a>');
}

?>


Et plus precisement, de la ligne 313 à 318 (car c'est visiblement la ligne 315 qui pause problème) :
 function parse_fsbcode_mail($match)
 {
     $email = hide_str($match[1]);
     $content = (isset($match[2])) ? $match[2] : $email;
     return ('<a href=&quote;mailto:' . $email . '&quote;>' . $content . '</a>');
 }
Merci d'avance pour vos réponses.
 
laurentgraph
08 Aout 2007, 16:06
Ligne 421... C'est çla oui...
C'est typiquement une erreur de regex donc
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...
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!
 
laurentgraph
18 Juillet 2007, 17:07
Après avoir modifié les droits dans la zone d'administration du forum, version 1.04 (j'ai transformé les droits des utilisateurs d' "invité" en "membre"), j' ai un bug lorsqu'un membre se connecte. A près avoir saisi le login / mot de passe, l'action sur "se connecter" ouvre une page d'erreur avec le message suivant :


Warning: Unknown modifier '/' in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line 421

Warning: Cannot modify header information - headers already sent by (output started at /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php:421) in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line 


Précision : il suffit de faire F5 ensuite pour accéder au forum. Le fonctionnement du forum est ensuite sans problèmes.

J'ai essayé de remettre le système de droits antérieur (remettre "invité"), mais le bug persiste.
De plus aprés avoir chercher dans tous les coin il semblerait que le problème vienne des page en cache "forum/cache" que je ne pas suprimer et pour arranger les choses la base de donnée pesent 60Mo donc difficile a réinstaller
Donc par avance je remercie toute personne venat à mon secour.
Help me !
 
laurentgraph
11 Juillet 2007, 19:00
  1. Type de bug : Bug sur le forum (côté PHP)
  2. Zone du forum affectée : Autre
  3. Priorité du bug : Haute
  4. Description : Bonjour à tous, j'ai un problème sérieux avec le forum mais comme je suis plutot nul en PHP je solicite votre aide.

    Après avoir modifié les droits dans la zone d'administration du forum, version 1.04 (j'ai transformé les droits des utilisateurs d' "invité" en "membre"), j' ai un bug lorsqu'un membre se connecte. A près avoir saisi le login / mot de passe, l'action sur "se connecter" ouvre une page d'erreur avec le message suivant :

    Warning: Unknown modifier '/' in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line 421
    Warning: Cannot modify header information - headers already sent by (output started at /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php:421) in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line 


    Précision : il suffit de faire F5 ensuite pour accéder au forum. Le fonctionnement du forum est ensuite sans problèmes.

    J'ai essayé de remettre le système de droits antérieur (remettre "invité"), mais le bug persiste.

    Merci de votre aide.
  5. Elément de réponse : Aucun
  6. Fichier(s) : includes/functions/fonctions.php
  7. Base de donnée utilisée : MySQL 4
 

.