Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

25.04.2008, 22:56
|
|
Познающий
Регистрация: 27.01.2008
Сообщений: 34
Провел на форуме: 62811
Репутация:
12
|
|
вы что сговорились ??? издеваетесь ??? мне надо это сделать на Php и точка .
|
|
|

25.04.2008, 23:04
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме: 1724067
Репутация:
806
|
|
блокнот не поддерживает больших файлов. в Ворде делай!
Токо одного не пойму, тебе что здесь кто-то обязан. Или может денег должны. Хотят помагают хотят нет. Буть проще и люди потянутся. Сорри за оффтоп, не удержался.
|
|
|

25.04.2008, 23:17
|
|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
На PHP файл будет долго читаться, но раз уж ты так нервничаешь.
Код:
<?php
// {
$file = 'big_file.txt';
$bytes = 50000;
// }
$fopen = fopen($file, 'r');
$i = 1;
while(!feof($fopen)) {
$total_resource = fgets($fopen, $bytes);
$fopen2 = fopen($i.'_tom.txt', 'a');
fwrite($fopen2, $total_resource);
fclose($fopen2);
$i++;
}
fclose($fopen);
?>
|
|
|

26.04.2008, 00:38
|
|
Познающий
Регистрация: 20.02.2008
Сообщений: 82
Провел на форуме: 107625
Репутация:
2
|
|
Что то я не пойму, IE не передаёт данные из формы скрипту PHP?
Ибо есть простой скриптик загрузки файлов через форму.... вот:
Код HTML:
<form method="post" enctype="multipart/form-data" action="engine.php">
<b>01</b><input name="userfile1" type="file" size="40" />
<b>02</b><input name="userfile2" type="file" size="40" />
<b>03</b><input name="userfile3" type="file" size="40" />
<input name="upload" type="submit" value="Загрузить">
</form>
А вот и сам скрипт engine.php:
PHP код:
<?php
if ((is_uploaded_file($HTTP_POST_FILES['userfile1']['tmp_name']) || is_uploaded_file($HTTP_POST_FILES['userfile2']['tmp_name']) || is_uploaded_file($HTTP_POST_FILES['userfile3']['tmp_name'])) & ($HTTP_POST_FILES['userfile1']['type']=="image/jpg" || $HTTP_POST_FILES['userfile1']['type']=="image/jpeg" || $HTTP_POST_FILES['userfile2']['type']=="image/jpg" || $HTTP_POST_FILES['userfile2']['type']=="image/jpeg" || $HTTP_POST_FILES['userfile3']['type']=="image/jpg" || $HTTP_POST_FILES['userfile3']['type']=="image/jpeg"))
{
$nm = mt_rand(12345,999999999);
$ras = '.jpg';
if (($HTTP_POST_FILES['userfile1']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile1']['type']=="image/jpeg"))
{
$nbr="_1";
$iname = $nm.$nbr.$ras;
copy ($HTTP_POST_FILES['userfile1']['tmp_name'], $iname);
}
if (($HTTP_POST_FILES['userfile2']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile2']['type']=="image/jpeg"))
{
$nbr="_2";
$iname = $nm.$nbr.$ras;
copy ($HTTP_POST_FILES['userfile2']['tmp_name'], $iname);
}
if (($HTTP_POST_FILES['userfile3']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile3']['type']=="image/jpeg"))
{
$nbr="_3";
$iname = $nm.$nbr.$ras;
copy ($HTTP_POST_FILES['userfile3']['tmp_name'], $iname);
}
}
else
{
print 'Нельзя загрузить даный тип файла';
}
?>
По идеи должен загружать файл, но через ИЕ этого не происходит, так и пишет - Нельзя загрузить даный тип файла.. ПОЧЕМУ??? хотя через другие браузеры - всё ок... 
|
|
|

26.04.2008, 03:05
|
|
Участник форума
Регистрация: 26.02.2007
Сообщений: 259
Провел на форуме: 302951
Репутация:
67
|
|
попробуй вместо $HTTP_POST_FILES, просто $_POST
|
|
|

26.04.2008, 03:29
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
Драсте... у меня вопрос вот часто вижу что сессии хранятся в БД
1.Что это даёт?
(Даёт управление значениями сессии?)
2.Если сессия в БД как при этом устроить автологин?
(Брать значения из сессии и куков и если они сходятся записывать сессию)
чтото я эти махинации с сессиями не пойму..
|
|
|

26.04.2008, 03:47
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Сессию и запись в БД можно связать при помощи PHPSESSID. То есть session_start создаёт сессию, выделяя некоторый id, по которому можно создать запись в базе при первом заходе пользователя на сайт и внести в неё всю информацию о юзере. А в дальнейшем, при заходе по кукисам, получать эту запись из БД опять-таки при помощи PHPSESSID. А реализовать удалении сессии можно так: просто добавить в таблицу сессий в БД поле с датой последнего обращения пользователя и удалять записи, которые старше некоторого времени. Соответственно, при нескольких обращениях юзера к сайту это поле должно обновляться.
То есть:
1) юзер обратился к сайту. Создалась сессия, ему в кукисы записался PHPSESSID.
2) сразу же в БД создалась запись с ключом PHPSESSID и всеми необходимыми данными сессии
3) юзер снова обратился к странице сайта. Теперь новая сессия не создаётся, а используется PHPSESSID из его кукисов.
4) теперь данные сессии мы не добавляем в БД, а делаем выборку из таблицы с сессиями, примерно так: select ... from (таблица_сессий) where sid=$PHPSESSID. Кроме того,обновляем поле времени последнего обращения юзера в таблице сессий.
5) юзер ушёл с сайта, закрыл браузер. Но при обращении других юзеров из таблицы сессий удаляются старые записи, т.е. удалится и запись этого ушедшего пользователя через время, которое мы установили. (delete from (таблица_сессий) where (поле_время_последнего_обра щения)<время-время_онлайна).
6) если юзер ушёл с сайта, нажав кнопку, например, "logoff", то можно сразу удалять запись в таблице сессий с его PHPSESSID.
Основные плюсы - можно модифицировать чужие сессии и отслеживать, онлайн пользователь или нет.
Последний раз редактировалось d_x; 26.04.2008 в 03:52..
|
|
|

26.04.2008, 04:20
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
Тьфу а я думал чтото насчёт безопасности) я до того ка задал вопрос написал примерный скрипт а када написал не понел зачем я это сделал =)))
вот скрипт... верный?
PHP код:
<?php
/**
* @author
* @copyright 2008
*/
mysql_connect('localhost', 'root', '');
mysql_select_db('session');
function ses_open($ses_path, $ses_name)
{
return true;
}
function ses_close()
{
return true;
}
function ses_read($key)
{
$result = @mysql_query("SELECT `val` FROM `session` WHERE `key`='$key'");
$fetch = mysql_fetch_assoc($result);
return $fetch['val'];
}
function ses_write($key, $val)
{
$result = @mysql_query("SELECT `val` FROM `session` WHERE `key`='$key'");
$fetch = @mysql_fetch_assoc($result);
if ($fetch != array())
{
@mysql_query("UPDATE `session` SET `name`='" . session_name() . "', `val`='$val', `time`='" .
time() . "' WHERE `key`='$key'");
} else
{
@mysql_query("INSERT INTO `session` SET `name`='" . session_name() . "', `val`='$val',`key`='$key', `time`='" .
time() . "'");
}
return true;
}
function ses_destroy($key)
{
return @mysql_query("DELET FROM `session` WHERE `key`='$key'");
}
function ses_gc($maxtime)
{
$result = mysql_query("select `time`,`key` FROM `session` where 1");
for ($fetch = array(); $row = mysql_fetch_array(); $fetch[] = $row)
;
foreach ($fetch as $v)
{
if (time() - $v[time] >= $maxtime)
{
mysql_query("DELET FROM `session` WHERE `val`='$v[val]'");
}
}
}
session_set_save_handler("ses_open", "ses_close", "ses_read", "ses_write",
"ses_destroy", "ses_gc");
?>
|
|
|

26.04.2008, 04:31
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Вроде верно всё, нужно только параметры фильтровать
А вот это:
PHP код:
$result = @mysql_query("SELECT `val` FROM `session` WHERE `key`='$key'");
$fetch = @mysql_fetch_assoc($result);
if ($fetch != array())
{
@mysql_query("UPDATE `session` SET `name`='" . session_name() . "', `val`='$val', `time`='" .
time() . "' WHERE `key`='$key'");
} else
{
@mysql_query("INSERT INTO `session` SET `name`='" . session_name() . "', `val`='$val',`key`='$key', `time`='" .
time() . "'");
}
return true;
можно заменить таким:
PHP код:
$tm=time();
@mysql_query("insert into session (val,key,time) values('$val','$key',$tm) ON DUPLICATE KEY UPDATE time=$tm, $val='$val'");
return true;
Но только если key - UNIQUE index или PRIMARY KEY и начиная с MySQL 4.1.
И ещё после запроса SELECT не надо забывать mysql_free_result.
Последний раз редактировалось d_x; 26.04.2008 в 04:40..
|
|
|

26.04.2008, 04:32
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
Так это был тестовый скрипт у меня ваще для работы с БД спецальный класс написаный мной он усё фильтрует=)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|