31-10-2006, 10:01
Eseguendo una ricerca nei templates con lo script di ricerca nell'admincp, nel caso non esistano risultati viene restituito un warning.
Questo perchè non viene eseguito alcun controllo sull'esistenza o meno di risultati nella ricerca, ma viene subito fatto partire il ciclo iterativo sui risultati stessi (anche se inesistenti)
come si può notare $template_list può anche non essere dichiarato ma viene comunque processato.
Ho tentato di tamponare il problema con un cperror, ma si ottiene un risultato pessimo poichè prima di tutto vengono comunque chiamate
che creano la testa della tabella: in questo modo non si ottiene il classico messaggio di errore, ma una "doppia tabella" molto confusa.
Sarebbe necessario riscrivere quella branca dell'if con una logica diversa.
mavericck
Questo perchè non viene eseguito alcun controllo sull'esistenza o meno di risultati nella ricerca, ma viene subito fatto partire il ciclo iterativo sui risultati stessi (anche se inesistenti)
Codice PHP:
$query = $db->query("SELECT tid, title, template, sid FROM ".TABLE_PREFIX."templates
WHERE template LIKE '%".$db->escape_string($mybb->input['find'])."%'
ORDER BY sid,title ASC");
while($template = $db->fetch_array($query))
{
if($template['sid'] == 1)
{
$template_list[-2][$template['title']] = $template;
}
else
{
$template_list[$template['sid']][$template['title']] = $template;
}
}
// Loop templates we found
foreach($template_list as $sid => $templates)
{
Ho tentato di tamponare il problema con un cperror, ma si ottiene un risultato pessimo poichè prima di tutto vengono comunque chiamate
Codice PHP:
cpheader();
starttable();
tableheader($lang->search_results);
Sarebbe necessario riscrivere quella branca dell'if con una logica diversa.
mavericck
