[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: кодировка после header в lnux
m4a1fox
Добрый день уважаемые эксперты. Вот такая незадачка возникла... на linux с поднятым с нуля apache2 + MySQL + PHP5 не корректно выводится сообщение после header. Предоставляю весь код, но проблема в первых 15 строчках. Сам код
<?php
include './blocks/db.php';
if($_POST['submit']) { // если нажата кнопка в форме
$url = 'http://' . $_SERVER['HTTP_HOST'] . '/admin/del_comment.php';

if(sizeof($_POST['id']) > 0) { // если выбраны чекбоксы
foreach($_POST['id'] as $data) { // проходим циклом, все чекбоксы
mysql_query("DELETE FROM `comment` WHERE `id` = {$data} "); // удаляем, что надо
}
}

header('Refresh: 2; url=' . $url);
$ok_delete = "<center><b>Спасибо.</b></center>";
} else {
?>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru-ru" xml:lang="ru-ru">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Главная для удаления комментариев</title>
<
link href="style.css" rel="stylesheet" type="text/css" />
</
head>

<
body leftMargin="0" topMargin="0">

<
table class="table" cellpadding="0" cellspacing="0" width=100% height="100%">
<
tr valign="top" height="50px" bgcolor="#a50f10" align="center">
<
td valign="middle" colspan="2">
<?php
include './blocks/top.php';
?>
</td>
</
tr>
<
tr >
<?php
include './blocks/menu.php';
?>
<td valign="top">
<
div style="margin-left: 10px; margin-top: 20px; text-decoration:none;">
<?php echo $ok_delete;?>
<div id="back">
<
a href="index.php">Назад</a>
</
div>
<
H3>Админ. часть комментариев</H3>
<
p>
<
form action="" method="POST" class="comment-form">
<
table width="95%" cellpadding="0" cellspacing="0" class="admin_table">
<
tr bgcolor="#2b68ac" align="center" style="color: white; font-weight: bold; font-family: verdana; font-size: 12px;">
<
th width="50px" height="25px">

</
th>
<
th width="100px" style="padding: 10px;">
Имя
</th>
<
th widht="400px">
Текст
</th>
<
th widht="100px">
Дата
</th>
<
th>
Время
</th>
</
tr>

<?php
// Переменная хранит число сообщений выводимых на станице
$num = 15;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("
SELECT COUNT(*)
FROM `comment`
"
) or die("Ошибка -".mysql_error());
$posts = mysql_result($result, 0);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения

$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
?>

<?php
function
mBwordwrap($text, $width = 40, $break = "<br />")
{
return preg_replace('#([^\s]{'. $width .'})#', '$1'. $break , $text);
}
$rows = mysql_query("
SELECT `id`,`id_mail`,`name`,`text`,`time`,`date`
FROM `comment`
ORDER BY `datetime`
DESC LIMIT
$start, $num
") or die('Ошибка - ' . mysql_error());

while($myrow = mysql_fetch_assoc($rows)) {
echo '
<tr>
<td align=center style="padding: 10px;">
<input name="id[]" type="checkbox" value="'
.$myrow['id'].'">
</td>

<td style="padding-left: 5px;">
'
.$myrow['name'].'
</td>

<td style="padding-left: 5px;">
<a href="../page_view_you_mail.php?view='
.$myrow['id_mail'].'" target="_blank">
'
.nl2br(mBwordwrap($myrow['text'])). '</a>
</td>

<td style="padding-left: 5px;">
<span class="date">
'
.$myrow['date'].'
</span>
</td>

<td style="padding-left: 5px;">
<span class="date">
'
.$myrow['time'].'
</span>
</td>
</tr>
'
;
}
?>
</table>

<?php
$url = '<a class="dlet" href= ./del_comment.php>&larr;|</a>';
$url_long = '<a class="dlet" href= ./del_comment.php?page=';

// Проверяем нужны ли стрелки назад
if ($page != 1)
$pervpage = ''.$url.''.$url_long.''. ($page - 1) .'>&larr;</a>';

// Проверяем нужны ли стрелки вперед
if ($page != $total)
$nextpage = ''.$url_long.''. ($page + 1) .'>&rarr;</a>'.$url_long.'' .$total. '>|&rarr;</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0)
$page2left = ''.$url_long.''. ($page - 2) .'>'. ($page - 2) .'</a>';

if($page - 1 > 0)
$page1left = ''.$url_long.''. ($page - 1) .'>'. ($page - 1) .'</a>';

if($page + 2 <= $total)
$page2right = ''.$url_long.''. ($page + 2) .'>'. ($page + 2) .'</a>';

if($page + 3 <= $total)
$page3right = ''.$url_long.''. ($page + 3) .'>'. ($page + 3) .'</a>';

if($page + 4 <= $total)
$page4right = ''.$url_long.''. ($page + 4) .'>'. ($page + 4) .'</a>';

if($page + 1 <= $total)
$page1right = ''.$url_long.''. ($page + 1) .'>'. ($page + 1) .'</a>';
?>
<!--Вывод меню на страницу-->
<
table border="0" width="100%" align="center"><tr align="center">
<?php echo '<td align="center">
'
.$pervpage.$page2left.$page1left.'<div id="dlet" class="dlet_active">
'
.$page.'
</div>
'
.$page1right.$page2right.$page3right.$page4right.$nextpage.'
</td>'
;?>
</tr></table>
<!--
Вывод меню на страницу-->
<
br />
<
label>
<
input type="submit" name="submit" value="Удалить" />
</
label>
</
form>
</
p>
</
div>
</
td>
</
tr>
</
table>
</
body>
</
html>
<?php } ?>

Предоставляю полный на всякий случай... Суть кода проста.... сканирует таблицу в БД, а потом выводит комментарии... На самой странице все нормально, и кодировка самой странице и кодировка в БД так же правильная (utf8)...
Сама проблема, когда хочу удалить запись, по идее, должно появляться сообщение спасибо, и переброс на главную страницу, а выводятся иероглифы... Спасибо.



Спустя 5 минут, 27 секунд (19.03.2011 - 14:53) m4a1fox написал(а):
Наверняка, кодировку можно как-то передать через header, но как.... если кто сталкивался.... подскажите.

Спустя 14 минут, 18 секунд (19.03.2011 - 15:07) inpost написал(а):
m4a1fox
5 месяцев, когда ты уже возьмешь голову в руки и пройдешь курс irbis-team.com ? Или ты специально его избегаешь, чтобы писать такой кривой код постоянно?

Спустя 18 минут, 18 секунд (19.03.2011 - 15:25) m4a1fox написал(а):
inpost
Укажите хотя бы на одну ошибку, что бы я понял....

Спустя 8 минут, 33 секунды (19.03.2011 - 15:34) m4a1fox написал(а):
inpost
Все... я осознал... спасибо.

Спустя 14 минут, 43 секунды (19.03.2011 - 15:49) inpost написал(а):
m4a1fox
- Берёшь кривой пагинатор Попова: "А где ошибка?!".
- Нет doctype.
- Хоть бы чуточку стиля применил бы.
- MVC, разделение контроллера, представления - отсутствует, ядра тоже, кстати, даже минимального.

- объясни, почему ты написал именно так:
$page2left = ''.$url_long.'';

То есть зачем тебе в данном случае открытие и закрытие кавычек, при этом внутри пусто? Ты не знаешь, что можно разделять переменные просто точкой? $var1.$var2.$var3 , то есть разделение логической части.

Упращенное ядро: http://irbis-team.com/15/16/2
Цитатко из первого же абзаца: Основные и незыблемые две - кодировку и уровень ошибок, они прописаны первыми строчками индекса.

Спустя 26 минут, 18 секунд (19.03.2011 - 16:15) Trianon написал(а):
как кодировку, так и уровень ошибок можно (более того, достаточно удобно) глобально установить - для всего сайта.

А непосредственно тредстартеру вопрос такой:
Вы об отступах, при наборе исходного текста, слышали когда-нибудь?
Вот Вы показали код.
Вы полагаете его в таком виде будет хоть кто-нибудь предметно анализировать?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.