PDA

Показать полную графическую версию : Общие вопросы по коду


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22

maasja
01-06-2010, 02:01
Спасибо!!

grat1
08-06-2010, 02:21
помоги с версткой
к примеру 2 таблицы: 1 таблица в центре другая правее её и прижата к ней

<table width="200" border="1" align="center">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<table width="200" border="1" align="right">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

tristar_ivc
21-06-2010, 09:52
доброго времени суток, столкнулся с такой проблемой, пишу авторизацию (по кукам и по сессии), в шапку файла инклудится соединение с бд, проверка переменных, старт сессии, при включеном дисплэй еррор показывает ошибку на header из header("Location:$url"); и header("Refresh:$time;url=$url"); если отключить дисплей еррор то ошибок нет, но вот переадресация не происходит, кто что может подсказать? кто может сьалкивался с такой проблемой?

Coutty
21-06-2010, 13:08
показывает ошибку на header »
Какую ошибку показывает? Невозможно передать header, т.к. уже отправлены данные, или что-то другое?
По тому объёму кода, что вы показали, можно только посоветовать удалить пробелы перед открывающим тэгом <?php
Другие предположения можно начать делать, когда увидим код.

tristar_ivc
21-06-2010, 13:24
вот такую ошибку:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\ch.ww\www\auth.php:1) in Z:\home\ch.ww\www\auth.php on line 29

вот те строки где переадресация находится:
$rm = isset($_POST['rm']) ? check($_POST['rm']) : check($_GET['rm']);
if($rm==='who') header("Refresh:3;url=/who");
elseif($rm==='enter') header("Refresh:3;url=/menu");
elseif($rm==='13') header("Refresh:3;url=/chat?rm=23");
elseif($rm==='10') header("Refresh:3;url=/inf/int?rm=10");
elseif($rm==='9') header("Refresh:3;url=/inf/sort?rm=9");
elseif($rm==='11') header("Refresh:3;url=/inf/klaz?rm=11");
elseif($rm>=0 && $rm<23) header("Refresh:3;url=/chat?rm=$rm");
elseif($rm=='') header("Refresh:3;url=/menu");

Coutty
21-06-2010, 13:34
Итак, вы запускаете файл auth.php, а к нему подключается всё то, что вы перечислили выше. Правильно? Значит, где-то до 29 строки производится вывод данных.
Тогда интересуют первые 30 строк файла auth.php и полностью файлы, которые подключаются до этого момента. Всякие там логин-пароли не нужны.

tristar_ivc
21-06-2010, 13:45
вот 29 строка elseif($rm==='enter') header("Refresh:3;url=/menu");

вот то что инклудится

require_once (INC.'base/start.php');
require_once (INC.'base/gzip.php');
require_once (INC.'base/sid.php');
require_once (INC.'base/db.php');
require_once (INC.'base/login.php');
require_once (INC.'base/utf_to_win.php');
require_once (INC.'base/game.php');
require_once (INC.'base/other.php');
require_once (INC.'base/fnc.php');
require_once (INC.'sys/page.php');

tristar_ivc
21-06-2010, 13:48
вот собственно и сами файлики

Coutty
21-06-2010, 14:04
Море кода и ни одного комментария)
Во-первых, я бы не стал ставить куки до выставления header'ов.
Во-вторых, перед header'ами у вас идёт include_once "skin/head.php"; И, наверное, оттуда уже идёт вывод данных. Перенесите вообще эти две строки в самое начало файла:
$rm = isset($_POST['rm']) ? check($_POST['rm']) : check($_GET['rm']);
if($rm==='who') header("Refresh:3;url=/who");
elseif($rm==='enter') header("Refresh:3;url=/menu");
elseif($rm==='13') header("Refresh:3;url=/chat?rm=23");
elseif($rm==='10') header("Refresh:3;url=/inf/int?rm=10");
elseif($rm==='9') header("Refresh:3;url=/inf/sort?rm=9");
elseif($rm==='11') header("Refresh:3;url=/inf/klaz?rm=11");
elseif($rm>=0 && $rm<23) header("Refresh:3;url=/chat?rm=$rm");
elseif($rm=='') header("Refresh:3;url=/menu");
header'ы должны быть установлены до того, как вы будете выводить любые другие данные.

tristar_ivc
21-06-2010, 15:11
вроде бы куки не должны мешать хеадеру,,, вынес хеадер до инклуда скин/хеад но как было так и осталось

Sham
21-06-2010, 15:33
tristar_ivc, если сохраняете файл в кодировке UTF-8, то нужно выбирать опцию UTF-8 без BOM. BOM - это метка, которую не отображают редакторы, но она есть, и инициирует вывод. Если сложно отследить все файлы, то включите буферизацию вывода (ob_start() в начале скрипта).

по крайней мере, auth.php сохранен c BOM...

tristar_ivc
21-06-2010, 15:49
все разобрался, дело было как раз таки в кодировке, т.е. в BOM, ее нужно было поставить, всем спасибо за помощь!!!

maasja
25-06-2010, 20:07
Здравствуйте. Мне нужно чтоб php скрипт делал определенную функцию при получении письма на почтовый ящик. Единственное решение которое мне пришло в голову, это запускать скрипт по crontab, каждых например 30 сек., и проверять есть ли новое письмо, и если есть то запускать функцию. Есть ли другое решение данной задачи? Например чтоб скрипт "висел" на линии(pop3 или imap), и как только появилось письмо, то он делал определенную функцию? Спасибо.

Sham
26-06-2010, 23:35
Крон - оптимально. По идее, событие генерирует почтовый софт на сервере (он сидит на порту и ловит письма), значит в нем дб возможность запускать другой софт по событию. Если нет возможности, то и события нет.
чтоб скрипт "висел" на линии(pop3 или imap) »
Почтовый сервер - сложный софт, выполняющий протоколы smtp, pop, imap. Не видел, чтоб был написан на PHP.

maasja
27-06-2010, 03:09
Спасибо, за ответ. Пару вопросов:
1. Если почта, допустим на Gmail, то ничего кроме кронтаба вообще, не возможно, поскольку оно не будет делать никакого события, верно?
2. Дают ли возможность запускать другой софт по событию » хостинги?
3. А другие языки программирование для веба (например PERL), дают возможность "висеть" на линии и по получении сообщения запускать что-нибудь?
4. Поскольку нужна очень быстрая реакция на письмо, то нужно запускать крон чуть ли не каждые 10 сек., можно ли придумать какую-нибудь махинацию, например пересылать почту не на е-мейл адрес, а на скрипт(тем-самым запуская его)?
Ну и последний вопрос, как в этой статьи (http://www.codenet.ru/webmast/php/mrobot.php), запускается скрипт по событию нового сообщения цитирую"Способ "COMMAND" - можно запускать обработчик писем как только оно приходит. Самый прогрессивный способ. Ваша программа получает письмо входным потоком - удобнее придумать трудно."?

Sham
27-06-2010, 03:48
1. вроде так.
2. если есть поддержка файлов .forward (или типа этого, где список команд по событию прихода письма), то можно прописать там команду на скрипт. Но это заморочка с правами и способами запуска (CGI, CLI) - это надо конкретно уточнять у админов и тестить...
3. большинство языков работают с сокетами, но тут это не нужно.
4. см. п.2, в статье многое описано.

maasja
27-06-2010, 21:17
Спасибо. Теперь другой вопрос. Изучал команды pop3 на php, работал с gmail. Попробовал как удалить сообщения, и скрипт показал что сообщения больше нет, и он его удалил. Захожу на почту а сообщение осталось. Вообщем я игрался - игрался, и никак не получается чтоб увидеть сообщения по pop3(даже через почтовый клиент). Это что получается, что существует две версии почты, одна для pop3, а другая для imap/просмотра :) ?

Sham
29-06-2010, 22:00
http://ru.wikipedia.org/wiki/POP3 , http://tools.ietf.org/html/rfc1939 ...
gmail вроде как требует SSL (шифрование), поэтому хз. Можно через сокет (протокольные команды), или через функции (http://docs.php.net/manual/en/book.imap.php).

grat1
09-07-2010, 01:07
запарился, колбасит от этой вертки -помогите
все работает кроме IE8
убираю#header { top:0; position:absolute; } нормально показывает левая- середина -правая ячейка нормально растягивается, но появляется проблема d IE6,7 c высотой header
ставлю обратно <td id="bbb" width="*"> -не растягивается
каркас страницы резиновый без скроллингат.е без бокового и нижнего ползунка
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>
<style type="text/css">
html, body {height:100%; width:100%; table-layout:fixed; margin:0; padding:0;}
.stol{background-color:blue; }
#header { top:0; position:absolute; }
#aaa {background-color:green; left:0px; width:100px;}
#bbb {background-color:yellow;}
#ccc {background-color:red; right:0px; width:150px; }
</style>
<body>
<table width="100%" height="100%" border="1" cellspacing="0" class="content" >
<tr id="header">
<td id="aaa" height="20px">111111</td>
<td id="bbb" width="*">222222</td>
<td id="ccc">3333</td>
</tr>
<tr>
<td colspan="3" class="stol"></td>
</tr>
</table>
</body>
</html>
а в опере 10 фон стола залит на приблизительно 70% снизу вверх
в IE5,6,7 mozilla всё нормально

Sham
09-07-2010, 02:49
#header { top:0; position:absolute; } »
к tr нельзя, это элемент таблицы, также как и td нельзя позиционировать (right, left, position...), а только table.

все размерности лучше убрать в стили.
margin:0; padding:0; »
это лучше ко всем элементам * {margin:0; padding:0;}

одной таблицей имхо не обойтись, и лучше в контейнеры div, и к ним применяйте абсолютное позиционирование...




© OSzone.net 2001-2012