1. Адміністрування., HTML, PHP, статті

Виводимо на екран форму з паролем pass.

У вікні вводяться:


Потім, після натискання на кнопку і перевірки пароля, записуємо новий список в файл.

<html>
<head>
<title>admin weather</title>
</head>
<body>
<?php
/ / Адреса файлу, в якому і будуть записуватися назви міст з посиланнями
$adr=$DOCUMENT_ROOT."/weather/weather.ini"; $ Password = “pass”; / / простенька система авторизації
$eror=”Password eror!”;
$old=file($ Adr); / / читаємо те, що зараз є у файлі
if ($ Submit) {/ / перевіряємо на натискання кнопки
if ($pass==$password) {
$fp=fopen($adr,"w");
fwrite ($ Fp, $ ini); / / записуємо в файл змінені дані
fclose($fp);
$old=file($adr);
}
else {
echo $eror;
}
}
?>
<form method=post action="<?php echo $PHP_SELF?>"> / / Інформація, введена в форму, обробляється цим же файлом
password:<input type=text name=pass><br>
inicialisation:<textarea name="ini" rows=15 cols=60>
<?
for ($i=0; $i<sizeof($old); $i++) {
echo $ Old [$ i], “”; / / виводимо на екран поточний варіант файлу
}
?>
</textarea>
<br>
<input type=submit name="submit" value="Enter">
</form>
</body>
</html>

Після введення інформації у файл у вигляді, отримуємо:

50 Ларнака
weather.yahoo.com/forecast/Larnaca_CY_f.html
51 Пафос
weather.yahoo.com/forecast/Paphos_CY_f.html


Посилання на міста організовуються за принципом:

 Ларнака
А можна так: Ларнака
Але якщо місто з друх слів, то в прогалинах пишемо “% 20”
В такому випадку, номери міст в списку не потрібні:
Ларнака weather.yahoo.com/forecast/Larnaca_CY_f.html
  • Пафос weather.yahoo.com/forecast/Paphos_CY_f.html

  • Якщо у нас не текстовий файл, а mysql, то все простіше.

    Якщо кому знадобиться варіант з mysql, пишіть мені totoeval@mtu-net.ru

    2. Програма (власне, адаптер чужого коду до Вашого сайту).

    <table width=100% border=0 cellspacing=0 cellpadding=2 bgcolor=<? echo $brdcolor; ?>>
    <tr>
    <td>
    <br>
    <!———————– FORECAST ————————->
    <?php
    $ini=$DOCUMENT_ROOT.”/weather/weather.ini”;
    $region=file($ Ini); / / читаємо файл зі списком міст-посилань а масив $ region
    / / Визначення координат шуканого міста
    for ($i=0; $i<sizeof($region); $i++) {
    if (trim($ Region [$ i]) == $ weather) {/ / шукаємо номер міста в списку $ City = trim ($ region [$ i +1]); / / назва міста $ Adr = trim ($ region [$ i +2]); / / адреса сторінки
    }
    else {
    }
    }
    / / Якщо у нас передається інформація не номером міста, а назвою, то:
    for ($i=0; $i<sizeof($region); $i++) {
    $city=str_replace($ City, “% 20”, “”); / / замінюємо “% 20” на “”
    if (trim($ Region [$ i]) == $ city) {/ / шукаємо назву міста у списку
    $adr=trim($ Region [$ i +1]); / / адреса сторінки
    }
    else {
    }
    }
    / / Вхідна інформація для подальшого коду – $ adr (адреса сторінки / / Прогнозу погоди для міста на сайті weather.yahoo.com) / / І $ city – назва міста на рідній мові. / / Фрази для пошуку корисної інформації. Оригінал фраз можна виявити / / На сторінці, наприклад, цієї, / / Проаналізувавши код. тут заводимо в змінні фрази, за якими будемо / / Шукати потрібну інформацію (градуси, описи погоди, картинки). Використовуємо / / Фрази до і після необхідної інформації. Цей блок в майбутньому доведеться / / Змінювати, коли на оригіналі (weather.yahoo.com) зміниться код сторінок. / / На 14 авг. 2001 він працює.
    $ Begin_screen = “FORECAST —-“; / / початкова фраза таблиці з прогнозом погоди $ End_screen = “ “; / / остання фраза таблиці $ Post_gradus = “ <"; / / після градусів $ Before_gradus = ""; / / перед градусами $ Before_image = "http://us.i1.yimg.com/us.yimg.com/i/we/fc/"; / / перед картинкою $ Post_image = ". Gif"; / / після картинки $ Before_forecast = "top> “; / / перед фразою погоди $ Post_forecast = “

    “; / / після фрази погоди
    / / Масиви для переказів дати і описів погоди з англійської мови / / На рідній (в даному випадку використаний варіант перекладу з / / Буржуйського на мову, якою розмовляв Ленін.
    $endat=array(" ","Mon","Tue","Wed","Thu","Fri","Sat","Sun",
    "May","Jul","Jun","Aug","Sep","Oct", “Nov”, “Dec”, “Jan”, “Feb”, “Mar”, “Apr”); / / англійські дати $ Rudat = array (” “П’ятниця”, “Субота”, “Неділя”, / / Рідні дати
    $eng=array(" ","Thunderstorms","Sunny","Partly Cloudy",
    "Showers","Rain","Mostly Cloudy","Tstorms","Drizzle","Cloudy",
    "Flurries","Fog","High","Low","Clear","Sleet","Rain/snow",
    "Snow Showers","Mixed Snow", "Rain", "Snow", “Mixed”); / / англійські опису погоди $ Rus = array (“”, “гроза”, “ясно”, “мінлива хмарність”, зі снігом “, “Дощ зі снігом”, “мокрий сніг”, “сніг з дощем”, “сніг”, “Змінно”); / / російські аналоги погоди
    $ Brdcolor = “# ffffff”; / / колір рамки таблиці прогнозу (білий) $ Bgcolor = “# eeeeee”; / / колір фону елементів таблиці (краще – колір фону сторінки)
    / / А Тут починається код програми, який змінювати не доведеться.
    / / Займаємося створенням дати, виведеної на екран.

    Функція time () дасть нам поточний час. Функцією date (d. “”. M, $ t [$ i]) отримуємо дату поточного і наступних 4 днів, а date (D, $ t [$ i]) дає нам дні тижня всіх 5 днів. А потім переводимо дати з англійської мови на рідну.

    $t=array(4);
    $d=array(4);
    $dn=array(4);
    for ($i=0; $i<=4; $i++) {
    $t[$i]=time()+$i*86400;
    $d[$i]=date(d." ".M,$t[$i]);
    $dn[$i]=date(D,$t[$i]); / / Переводимо слова в даті і отримуємо дати рідною мовою
    for ($j=0; $j<sizeof($endat); $j++) {
    $d[$i]=str_replace($endat[$j],$rudat[$j],$d[$i]);
    $dn[$i]=str_replace($endat[$j],$rudat[$j],$dn[$i]); } / / І отримуємо дати на мові, якою розмовляє наш теперішніх Вова
    }
    / / Починаємо обробляти сторінку. / / З’ясовуємо рядка початку і кінця таблиці з прогнозом погоди. / / Потім, будемо працювати саме з цим блоком.
    $screen=file($ Adr); / / читаємо сторінку з прогнозом погоди в змінну $ screen
    for ($ i = 1; $ i strpos($ Screen [$ i], $ begin_screen) == false) {/ / знаходимо початок таблиці з прогнозом
    if (strpos($ Screen [$ i], $ end_screen) == false) {/ / знаходимо її кінець
    }
    else {$ M = $ i; / / $ m – номер останнього рядка таблиці
    }
    }
    else {$ K = $ i; / / $ k – номер першого рядка таблиці
    } } / / Отримуємо з $ screen [$ k] по $ screen [$ m] – нашу таблицю з погодою. / / Потім будемработать саме з нею, щоб не було зайвих збігів, і / / Швидко працювала програма. / / Можна її виводити в “рідному дизайні, але нам це не подобається / / Починаємо шукати корисну інформацію.
    $ Grad = array (9); / / масив з 10 чисел градусів температури навколишнього середовища
    $ Zed = 0; / / лічильник градусів
    for ($ I = $ k; $ i <= $ m; $ i + +) {/ / працюємо з градусами / / Якщо немає градусів в рядку (якщо немає фрази, що стоїть перед градусами. if (strpos($screen[$i],$before_gradus,0)==false) {
    }
    else {/ / Якщо є градуси в рядку $ String_grad = $ screen [$ i]; / / зберігаємо рядок з градусами в змінну / / Розбиваємо рядок на масив рядків по роздільника, яким / / Є фраза перед градусами, таким чином, ми отримуємо в / / 1 елементі масиву рядок, яка починається власне з / / Самого градуси погоди.
    $string_grad=explode($before_gradus,$string_grad); / / Визначаємо позицію початку фрази, що йде після градуси.
    $end_grad=strpos($string_grad[1],$post_gradus,0); / / Перший градус отримуємо, як підрядок, з 0-го символу до початку фрази після градуси.
    $grad[$zed]=substr($string_grad[1],0,$end_grad); $ Zed + +; / / інкремент лічильника градусів
    $end_grad=strpos($string_grad[2],$post_gradus,0);
    $grad[$zed]=substr($ String_grad [2], 0, $ end_grad); / / другий градус $ Zed + +; / / інкремент лічильника градусів
    } } / / В результаті чого, ми отримали всі градуси на нашій сторінці
    / / Переводимо Фаренгейт в Цельсіях
    for ($i=0; $i<=9; $i++) {$grad[$i]=round(5/9*($grad[$i]-32));
    } / / У варіанті з забиранням інформації зі сторінки з Цельсієм / / Цей рядок стоїть просто закоментувати. Я залишив так, просто каприз. / / Переводимо Фаренгейт в Цельсіях
    / / Знаходимо слова погоди абсолютно аналогічно пошуку градусів $ Zed = 0; / / лічильник описів погоди
    for ($ I = $ k; $ i <= $ m; $ i + +) {/ / працюємо з описами / / Якщо немає опису погоди в рядку if (strpos($screen[$i],$before_forecast,0)==false) {
    }
    else {/ / Якщо є описи в рядку $ String_grad = $ screen [$ i]; / / зберігаємо рядок з описами в змінну
    $string_grad=explode($before_forecast,$string_grad);
    $end_grad=strpos($string_grad[1],$post_forecast,0);
    $forec[$zed]=substr($string_grad[1],0,$end_grad); / / Перебираємо всі варіанти слів в описах
    for ($j=0; $j<sizeof($eng); $j++) { / / Переводимо слова
    $forec[$zed]=str_replace($eng[$j],$rus[$j],$forec[$zed]);
    } $ Zed + +; / / інкремент лічильника описів
    } } / / В результаті чого, ми отримали всі описи погоди на нашій сторінці
    $ Zed = 0; / / лічильник слів картинок аналогічно
    for ($ I = $ k; $ i <$ m; $ i + +) {/ / працюємо з картинками / / Якщо немає опису погоди в рядку if (strpos($screen[$i],$before_image,0)==false) {
    }
    else {/ / Якщо є картинки в рядку $ String_grad = $ screen [$ i]; / / зберігаємо рядок з картинками в змінну
    $string_grad=explode($before_image,$string_grad);
    $end_grad=strpos($string_grad[1],$post_image,0);
    $for_img[$zed]=substr($string_grad[1],0,$end_grad); $ Zed + +; / / інкремент лічильника картинок
    } } / / В результаті чого, ми отримали всі картинки на нашій сторінці
    ?> / / Публікуємо результати:
    <table width=100% cellpadding=0 cellspacing=0 border=0>
    <tr><td width=20% align=center><font size=3><b / / Виводимо назва міста, для якого відображається прогноз погоди
    ><? echo $city;
    ?></b><br></font></td></tr></table
    ><table width=100% cellpadding=0 cellspacing=0 border=0>
    <tr><? / / Виводимо на екран клітинки з датами і днями
    for ($i=0; $i<=4; $i++) {
    echo "<td width=20% align=center><font
    size=2><b>$d[$i]<
    br>$dn[$i]</b></font></td>";
    }
    ?></tr
    ></table
    ><table width=100% cellpadding=0 cellspacing=0 border=0
    bgcolor=<? echo $brdcolor; ?>
    ><tr><td
    ><table width=100% cellpadding=2 cellspacing=1 border=0
    ><tr><? $ Zed = 0; / / лічильник виведених градусів / / Виводимо комірки з прогнозами – картинки, градуси, описи
    for ($i=0; $i<=4; $i++) {
    $zed1=$zed+1;
    echo "<td width=20% align=center bgcolor=$bgcolor
    valign=middle><img src=”http://www.ishodniki.ru/../pic/".$for_img[$i].".gif border=0
    alt=".$forec[$i]."><br><br><font
    size=2>".$forec[$i]."</font><br><br><font
    size=3><b>".$grad[$zed]."°C<br>".$grad[$zed1]."°C</b>
    </font></td>";
    $zed=$zed+2;
    }
    ?>
    </tr></table>
    </td>
    </tr>
    </table>

    Картинки можна прив’язати до картинок Яхі (назви аналогічних по погоді збігаються, як у моєму випадку), а можна зробити масиви відповідності слів-описів погоди і Ваших картинок. Це по-бажанням. Що довговічніше, важко судити. І фрази-опису вони можуть змінити, і картинки перейменувати. Можна, звичайно домовитися з адміном Яхі, щоб вони не змінювали один з цих елементів і відштовхуватися від нього, але в мене не було його телефону: о)

    Тепер програма працює, і її можна вставляти в свій дизайн.

    Ось варіант: вищезгадана Ларнака

    Якщо кого зацікавлять “варіації на тему” або виникнуть питання, прошу писати мені totoeval@mtu-net.ru.

    А також, пишіть всі, хто зможе порадити інші варіанти. Завжди радий критиці і можливості підвищити свій рівень.

    Схожі статті:


    Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

    Коментарів поки що немає.

    Ваш отзыв

    Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

    *

    *