Не рекомендуется использовать запросы без оператора WHERE, т.к. с некоторыми базами бывают проблемы: Т.е. бывают случаи, когда запрос вида Code: SELECT * FROM `tableName` возвращает пустой результат. Лечится добавлением "WHERE 1" в крнец запроса: Code: SELECT * FROM `tableName` WHERE 1 У тебя в коде такой запрос видел, хотя это, наверное, не корень проблемы. А вообще пройдись дебагом по скрипту у самого заказчика. print_r тебе в помощь
Как сделать вывод на сайт аторизации в ipb а потом на том же сайте вывести аву юзера и последнее его сообщение?
блин, спросил бы ты для smf или phpbb я бы тебе рассказал...а вот для ипб не знаю....ну в теории такая интеграция делается так. Берёшь форму авторизации форума, копируешь на сайт свой ну и путь к обработчику меняешь на правильный. аву...просто смотришь как авы в бд храняться и делаешь скуль-запрос и выводишь....только при интеграциях очень важно с куками разобраться, что будет не очень просто, самая жопа если у тебя форум висит на поддомене..в общем это в теории
Блок авторизации для форума IPB Как установить: -Создаем в директории block файл b-Login.php со следующим содержанием: PHP: <?php if (!defined("DNREAD")) exit(); global $setting,$tm,$db,$basepref,$usermain; $block_cont = ""; if($usermain['logged']==1 && $usermain['uname']!="") { $block_cont.= "<form action=\"forum/index.php?act=Login&CODE=03&k=\" method=\"post\" target=\"_top\"><input type=\"hidden\" name=\"CookieDate\" value=\"1\"> \n"; $block_cont.= "<table width=\"125\" cellpadding=\"4\" cellspacing=\"1\" border=\"0\" align=\"center\">\n"; $block_cont.= "<tr>\n"; $block_cont.= "<td class=\"row1\" align=\"center\">\n"; $block_cont.= "<p align=\"center\">Добро пожаловать!<hr><p align=\"center\"><img border=\"0\" src=\"forum/style_avatars/".$usermain['avatar']."\"></p>\n Уважаемый <b>".$usermain['uname']."</b>!<br/><br>\n"; $block_cont.= "</td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "</table>\n"; $block_cont.= "</form>\n"; return $block_cont; } else { $block_cont.= "<table width=\"125\" cellpadding=\"4\" cellspacing=\"1\" border=\"0\" align=\"center\">\n"; $block_cont.= "<tr>\n"; $block_cont.= "<td class=\"row1\" align=\"center\">\n"; $block_cont.= "<p align=\"center\">Добро пожаловать!<hr/>Уважаемый <b>Гость</b>!<br/><br/>\n"; $block_cont.= "Для полноценного просмотра сайта, авторизируйтесь: <hr></td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "</table>\n"; $block_cont.= "<form action=\"forum/index.php?act=Login&CODE=01\" method=\"post\">\n"; $block_cont.= "<table width=\"125\" cellpadding=\"4\" cellspacing=\"1\" border=\"0\" align=\"center\">\n"; $block_cont.= "<tr>\n"; $block_cont.= "<td class=\"row1\">\n"; $block_cont.= "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"100%\">\n"; $block_cont.= "<tr>\n"; $block_cont.= "<td colspan=\"2\" align=\"center\">\n"; $block_cont.= "</td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "<tr>\n"; $block_cont.= "<td width=\"125\" align=\"right\">\n"; $block_cont.= "<span class=\"sub3\">Логин:</span>\n"; $block_cont.= "</td>\n"; $block_cont.= "<td>\n"; $block_cont.= "<input type=\"text\" name=\"UserName\" class=\"post\" size=\"10\" maxlength=\"40\" value=\"\">\n"; $block_cont.= "</td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "<tr>\n"; $block_cont.= "<td align=\"right\" width=\"125\">\n"; $block_cont.= "<span class=\"sub3\">Пароль:</span>\n"; $block_cont.= "</td>\n"; $block_cont.= "<td>\n"; $block_cont.= "<input type=\"password\" class=\"post\" name=\"PassWord\" size=\"10\" maxlength=\"32\">\n"; $block_cont.= "</td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "<tr align=\"center\">\n"; $block_cont.= "<td colspan=\"2\">\n"; $block_cont.= "<input type=\"hidden\" name=\"CookieDate\" value=\"1\"> <input onmouseover=\"this.className='rerbutton';\" onmouseout=\"this.className='rbutton';\" class=\"rbutton\" value=\" Войти \" type=\"submit\">\n"; $block_cont.= "\n"; $block_cont.= "</td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "<tr align=\"center\">\n"; $block_cont.= "<td colspan=\"2\">\n"; $block_cont.= "<span class=\"smalllink\"><a href=\"forum/index.php?act=Reg&CODE=10\" class=\"sub3\"><hr> Забыли пароль?</a></span>\n"; $block_cont.= "</td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "</table>\n"; $block_cont.= "</td>\n"; $block_cont.= "</tr>\n"; $block_cont.= "</table>\n"; $block_cont.= "<table width=\"125\" cellpadding=\"4\" cellspacing=\"1\" border=\"0\" class=\"forumline\" align=\"center\" id=\"table1\">\n"; $block_cont.= "<tr>\n"; $block_cont.= "<th height=\"25\" class=\"smalllink\" nowrap=\"nowrap\">\n"; $block_cont.= "<a class=\"sub3\" href=\"forum/index.php?act=Reg&CODE=00\">Новая\n"; $block_cont.= "регистрация</a><hr></th>\n"; $block_cont.= "</tr>\n"; $block_cont.= "</table>\n"; $block_cont.= "</form>\n"; } return $block_cont; ?> Затем файл base/userbase/user.ipb.php заменить этим: PHP: ## WWW : www.danneo.com | www.danneo.org ## ## E-MAIL : [email protected] ## ## ==================================================== */ if(!defined("DNREAD")) exit(); // Тестировалось на Invision Power Board v2.1.4 - 2.1.6 // UNSET IPB & NEW ARRAY unset($ipb); $ipb = array(); ################################### # Форум фреймворкс # ################################### $ipb['dbname'] = 'tbl_old'; // НАЗВАНИЕ БАЗЫ $ipb['dbpref'] = 'ibf_'; // ПРЕФИКС БАЗЫ $ipb['lastact'] = 7200; // ВРЕМЯ АКТИВНОСТИ СЕССИИ $ipb['cookie'] = ''; // ПРЕФИКС КУКИ ################################### # USER FORM # ################################### define('FORUMFORM','ipb.form'); // FORUM BASE $db->select($ipb['dbname'],0); // FORUM BASE // APANEL TEST ? if(defined("DNTEST")){ return $connet = $db->works; } // APANEL TEST ? // THIS WORKS ? if($db->works==1){ // TOTAL $ipb['time'] = NEWTIME; $ipb['agent'] = substr($_SERVER['HTTP_USER_AGENT'],0,200); $ipb['ip'] = substr($_SERVER['REMOTE_ADDR'],0,16); $ipb['sessid'] = isset($_COOKIE[$ipb['cookie'].'session_id']) ? $_COOKIE[$ipb['cookie'].'session_id'] : ''; $ipb['passhash'] = isset($_COOKIE[$ipb['cookie'].'pass_hash']) ? $_COOKIE[$ipb['cookie'].'pass_hash'] : ''; // TEST if(!empty($ipb['sessid'])){ $ipbsess = $db->fetchrow($db->query("SELECT * FROM ".$ipb['dbpref']."sessions WHERE id='".addslashes($ipb['sessid'])."' AND running_time > ".($ipb['time'] - $ipb['lastact'])." AND browser='".addslashes($ipb['agent'])."'")); } else { $ipbsess['member_id']=0; } // NORMAL if(!empty($ipb['sessid']) && !empty($ipb['passhash']) && $ipbsess['member_id'] > 0){ // USER $ipbuser = $db->fetchrow($db->query("SELECT id,name,email,member_login_key FROM ".$ipb['dbpref']."members WHERE id ='".$ipbsess['member_id']."'")); $ipphoto = $db->fetchrow($db->query("SELECT avatar_location FROM ".$ipb['dbpref']."member_extra WHERE id ='".$ipbsess['member_id']."'")); // ISSET if($ipbuser['id'] && $ipbuser['name'] && $ipbuser['email'] && $ipbuser['member_login_key']==$ipb['passhash']){ // UPDATE $db->query("UPDATE ".$ipb['dbpref']."sessions SET browser='".addslashes($ipb['agent'])."',running_time='".$ipb['time']."' WHERE id = '".addslashes($ipbsess['member_id'])."'"); // DATA $usermain = array('logged'=>1, 'userid'=>$ipbuser['id'], 'uname'=>$ipbuser['name'], 'umail'=>$ipbuser['email'], 'avatar'=>$ipphoto['avatar_location'], 'regdate'=>'', 'lastvisit'=>'', 'icq'=>'', 'msn'=>'', 'www'=>'', 'blocked'=>''); // DATA } // ISSET } // NORMAL // THIS WORKS ? } // RETURN CMS BASE $db->select($namebase,1); // RETURN CMS BASE // UNSET IPB unset($ipb); ?> Вывод последних тем с форума IPB PHP: <?php if(!defined("DNREAD")) exit(); //******************************************************************************** // БЛОК ВЫВОДА ПОСЛЕДНИХ СООБЩЕНИЙ С ФОРУМА // INVISION POWER BOARD 2.0.x , 2.1.x // Разработка oleg_matasov // // [email protected] //******************************************************************************** //======[ОСНОВНЫЕ НАСТРОЙКИ]====== //Префикс таблицы с IPB $prefix = 'ibf'; //Сколько тем выводить $num = 10; //Сколько символов оставить в названии темы после урезания $topic_num_sym = 40; //Имя папки с картинками текущего скина $img_path = '1'; //Формат времени $time = 'd.m H:i'; //Форумы, которые мы не трогаем $forumexclude = '11,21'; //Сервер БД на котором висит база форума $host="localhost"; //Имя БД $database="tbl_old"; //Логин БД $username="root"; //Пароль БД $password=""; //====[Если не знаем PHP - дальше ничего не трогаем :)]========= $ipb_db = mysql_pconnect($host, $username, $password) or trigger_error(mysql_error(), E_USER_ERROR); mysql_select_db($database, $ipb_db); $bt = "<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" bgcolor=\"#dee2e5\">"; $bt.= "<th width=\"60%\" height=\"26\" align=\"center\"><font class=\"storytitle\">Название темы</font></th>"; $bt.= "<th width=\"10%\" height=\"26\" align=\"center\"><font class=\"storytitle\"><b>Автор</b></font></th>"; $bt.= "<th width=\"5%\" height=\"26\" align=\"center\"><font class=\"storytitle\">Ответов</font></th>"; $bt.= "<th width=\"5%\" height=\"26\" align=\"center\"><font class=\"storytitle\">Просмотров</font></th>"; $bt.= "<th width=\"20%\" height=\"26\" align=\"center\" colspan=\"2\"><font class=\"storytitle\"><b>Последний ответ</b></font></th>"; $resultf = mysql_query("SELECT tid, title, description, state, posts, starter_id, last_poster_id, last_post, icon_id, starter_name, last_poster_name, views, topic_hasattach FROM ".$prefix."_topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $num",$ipb_db) or die(mysql_error()); $row_resultf = mysql_fetch_assoc($resultf); $totalRows_resultf = mysql_num_rows($resultf); do { $topicstrip = $row_resultf['title']; if (strlen($topicstrip) > $topic_num_sym) { $topicstrip = substr($topicstrip,0,$topic_num_sym); $topicstrip = $topicstrip."..."; } $status = ($row_resultf['state'] == "closed") ? "<img src=\"forum/style_images/$img_path/f_closed.gif\" border=\"0\" alt=\"Тема закрыта\">" : ""; $attach = ($row_resultf['topic_hasattach'] == "1") ? "<img src=\"temp/A-Vector/images/files.gif\" border=\"0\" alt=\"В сообщении есть прикрепленные файлы\"> " : ""; $icon = ($row_resultf['icon_id'] == "0") ? " <img border=\"0\" src=\"temp/Default/images/icon.gif\"> " : "<img src=\"forum/style_images/$img_path/folder_post_icons/icon$icon_id.gif\" border=\"0\" alt=\"Иконка сообщения\"> "; $last_date = date($time,$row_resultf['last_post']); $bt.= "<tr>"; $bt.= "<td bgcolor=\"#FFFFFF\">"; $bt.= "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#FFFFFF\"><tr>"; $bt.= "<td>$icon</td>"; $bt.= "<td width=\"100%\"><a title=\"".$row_resultf['description']."\" href=\"forum/index.php?showtopic=".$row_resultf['tid']."&view=getlastpost\">$topicstrip</a></td>"; $bt.= "<td align=\"center\" valign=\"middle\">$attach</td>"; $bt.= "<td align=\"center\" valign=\"middle\">$status</td>"; $bt.= "</tr></table></td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\"><a href=\"forum/index.php?showuser=".$row_resultf['starter_id']."\">".$row_resultf['starter_name']."</a></td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\">".$row_resultf['posts']."</td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\">".$row_resultf['views']."</td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\">$last_date</td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\"><a href=\"forum/index.php?showuser=".$row_resultf['last_poster_id']."\">".$row_resultf['last_poster_name']."</a></td>"; $bt.= "</tr>"; } while($row_resultf = mysql_fetch_assoc($resultf)); $bt.= "</table>"; mysql_free_result($resultf); return $bt; ?>
fsockopen Всем привет. пишу web-бота, для online игры. не могу заставить сокет адекватно коннектиться. PHP: <?php $host = "site.ru"; $address = "/game/21"; $user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"; $port = "80"; echo "Хост: $host\r\n"; echo "Адрес: $host$address\r\n"; echo "Порт: $port\r\n"; echo "User-Agent: $user_agent\r\n"; header("Content-type: text/plain"); $fsite = fsockopen($host,$port,$error_number,$error_description,20); if ($fsite) { echo "сокет открыт\r\n"; stream_set_blocking($fsite,FALSE); fputs($fsite,"GET http://$host/ HTTP/1.1\r\n"); fputs($fsite,"Accept-Language: ru\r\n"); fputs($fsite,"Accept-Encoding: gzip, deflate\r\n"); fputs($fsite,"Content-Type: text/html\r\n"); fputs($fsite,"Content-Length: 181\r\n"); fputs($fsite,"Host: $host\r\n"); fputs($fsite,"User-Agent: $user_agent\r\n"); fputs($fsite,"Proxy-Connection: Keep-Alive\r\n"); fputs($fsite,"\r\n"); while (!feof($fsite)) { print(fgets($fsite, 4096)); } fclose($fsite); } else { echo "ошибка\r\n"; echo "Номер: $error_number\r\n"; echo "Описание: $error_description"; } ?> вот скрипт который пытаюсь запустить. выдает таймаут по пингу на некоторых сайтах. например не выдает результата на ya.ru либо выдает 400 ошибку. помогите запрос подкорректировать. Заранее благодарю
адрес лучше указывать с www или http:// ну и попробуй замени на и таймаут лучше побольше ставить...лично я всегда ставлю 30
скажи чем моя строчка от твоей отличается? я же говорю что выдает 400 ошибку точно не из-за длины таймаута. а по поводу http://...это вообще является ошибкой.
Енот, ты не в теме. Code: fputs($fsite,"GET $address HTTP/1.1\r\n"); fputs($fsite,"Accept-Language: ru\r\n"); fputs($fsite,"Accept-Encoding: gzip, deflate\r\n"); fputs($fsite,"Content-Type: text/html\r\n"); fputs($fsite,"Host: $host\r\n"); fputs($fsite,"User-Agent: $user_agent\r\n"); fputs($fsite,"Proxy-Connection: Keep-Alive\r\n"); fputs($fsite,"\r\n"); Попробуй юзать эти сокеты. У тебя там лишнее кое-что было. Правда у тя выведется сжатый контент (gzip).
бля, я не про то подумал, сори. мне вот только непонятно почему не выдаётся ошибка на вот эту строчку:
Мдя.....столько раз делать fputs - бред Лучше в массиве гнать: Вот красивый хидер: PHP: <?php $sock = fsockopen($host, 80, $errno, $errstr, 10); $headers = array ( 'GET '.$host.$path' HTTP/1.1', 'Host: '.$host, 'Referer: '.$host, User-Agent: $user_agent, 'Content-Type: text/html; charset=windows-1251', Content-Length: 181, 'Proxy-Connection: Keep-Alive' ); fwrite($sock, implode("\r\n", $headers)."\r\n\r\n"); $xek = ''; while(!feof($sock)) { $xek .= fgets($sock, 1024); } echo $xek;
Пытаюсь разобраться с работой сокетов... решил попробовать написать пр чекер... использующий сервис _be1.ru... Ещё не дошел до команд выбора и вывода строки, выдает ошибку 400... Посмотрите посоветуйте....
А с чего он должен выдавать ошибку? Двойные кавычки обрадатывают переменные, там 2 переменные : $host и $address. И эти 2 переменные просто выводятся.
Zircool $res=NULL; -> $res=""; 400 Bad Request The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.
Piflit безрезультатно... пробовал... та же ошибка... я думаю может быть у меня неправильно Get запрос составлен при работе с сокетами...
Zircool, да, запрос глюченый PHP: fputs($sock, "GET /stat/?url=http%3A%2F%2F".$host."%2F HTTP/1.0\r\n". "Host: www.be1.ru\r\n". "Referer: http://www.be1.ru\r\n" ); Так красивее)