Saya mendapat peringatan ini > Peringatan: Pembagian dengan nol ‹ jika saya mengetik sesuatu yang tidak ada di database.
Jika saya mengetik sesuatu yang ada semuanya berfungsi dengan baik, saya tidak dapat menemukan atau menyelesaikan masalah.
Di bawah ini adalah skrip yang saya gunakan saat ini, keterampilan php saya tidak sempurna tetapi saya mencobanya.
<?php
$button = mysql_real_escape_string($_GET ['submit']);
$search = $str = $stt = mysql_real_escape_string(strip_tags($_GET ['search']));
$str = strtoupper($str);
$stt = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
if(strlen($search)<=2) {
echo 'Nothing found for <b>'.strip_tags($str).'</b>. Please try something else ! ';
}else{
echo 'You searched for <b>'.$stt.'</b> ';
echo "";
include 'extern_/connectsearch.php';
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each)
{
$x++;
if($x==1)
$construct .="title LIKE '%$search_each%'";
else
$construct .="AND title LIKE '%$search_each%'";
}
$constructs ="SELECT * FROM table WHERE $construct";
$run = mysql_query($constructs);
$foundnum = mysql_num_rows($run);
if ($foundnum==0)
echo 'No results for <b>'.$search.'</b> ';
else
{
$per_page = 36;
$id = (int)mysql_real_escape_string($_GET['page']);
$max_pages = ceil($foundnum / $per_page);
if(!$id)
$id=0;
$p_num = $per_page*$id;
if($id)
$p_num = ($id - 1) * $per_page; //first item to display on this page
else
$p_num = 0;
$getquery = mysql_query("SELECT * FROM `table` WHERE $construct ORDER BY date DESC LIMIT $p_num, $per_page");
$title = $row ['title'];
$url = $row ['url'];
while($row = mysql_fetch_assoc($getquery))
{
echo '<div class="grid">
<a href="/id'. $row['url'] .'"
id="'. $row['id'] .'"
alt="'. $row['title'] .'"
title="'. $row['title'] .'"
target="_blank">
<h3 class="style">'. substr($row['title'], 0, 34).' ...</h3>
</a>
</div>
</div>
</div>
';
}
}
echo '<center>';
?>
<!-- pagination -->
<?php
echo '<center>';
$page = $id;
$total_pages = $foundnum;
$limit = $per_page;
if ($page == 0) $page = 1;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$lpm1 = $lastpage - 1;
$adjacents = 5;
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"paginate\">";
if ($page > 1)
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$prev\">Prev</a>";
if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<a href='/id".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<a href='/id".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<a href='/id".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}
}
else
{
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<a href='/id".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}
}
}
if ($page < $counter - 1)
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$next\">Next</a>";
$pagination.= "</div>\n";
}
echo $pagination;
echo '</center>';
}
?>
Peringatan: Pembagian dengan nol di home/search.php online 348
baris 348
$halaman terakhir = ceil($total_pages/$batas);
Dan hal lain yang ingin saya ketahui adalah apakah skrip ini cukup aman?
Bantuan apa pun dihargai. Terima kasih sebelumnya
5/0
. Jadi Anda perlu memperhitungkan kapan ada nilai0
. Sehubungan denganif this script safe enough
lihat - stackoverflow.com/questions/60174/ - person Sean   schedule 06.10.2014$limit
sama dengan 0. Saya akan mulai denganecho $limit;
dan lihat apa yang Anda dapatkan... - person Mark Miller   schedule 06.10.2014$per_page = 36;
ada di dalamelse
dariif ($foundnum==0)
. Jadi ketika Anda menggunakannya di$limit = $per_page;
maka$per_page;
tidak terdefinisi, dan$lastpage = ceil($total_pages/$limit);
menyebabkan$limit
sama dengan0
, sehingga memberi Anda peringatan. Coba pindahkan$per_page = 36;
ke luarif/else
atau ubah$limit = $per_page;
menjadi$limit = 36;
- person Sean   schedule 06.10.2014}
sebelumecho '<center>
ke akhir file. - person Sean   schedule 06.10.2014