Nouveau sujet Répondre Imprimer Syndication RSS 2.0

Erreur PHP lors de l'affichage de la seconde page d'un sujet

Résolu !
Nouvelle étincelle
Avatar de laurentgraph
  • Messages : 5
  • Inscrit : 11 Juillet 2007
Message édité 2 fois, dernière édition par laurentgraph, 05 Septembre 2007, 11:50     Lien vers ce message 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.
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 04 Septembre 2007, 12:20
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.


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
 
Nouvelle étincelle
Avatar de laurentgraph
  • Messages : 5
  • Inscrit : 11 Juillet 2007
  Lien vers ce message 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 !!
 
Répondre


.