Dodawanie danych na stronie za pomocą protokołu gadu-gadu
Wstęp
Witam wszystkich, jestem d3vil i postaram się zademonstrować w jaki sposób możemy uzupełniać dane na stronie internetowej przy użyciu dość dobrze znanego w Polsce komunikatora Gadu-Gadu.
Po co to wszystko? Podam przykład: nachodzi nas natchnienie, żeby napisać newsa na strone, lub notki na bloga. Żeby dodać musimy wykonać szereg czynności takich jak wejście na strone, zalogowanie się i wreszcie dodanie informacji. Można to uprościć, zazwyczaj komunikator jest trzymany w tray`u lub na pasku start. Wystarczy tylko wywołać komunikator i napisać notke bezpośrednio do stworzonego przez nas bota, który automatycznie doda informacje przez nas podane na strone.
Co będzie potrzebne
- troche wolnego czasu
- konto shell z zainstalowanym apache/php/mysql/pythonem moduł do pythona MySQLdb oraz ekg z obsługą skryptów
- lub własny komputer z zainstalowanymi wyżej wymienionymi aplikacjami
- mile widziane podstawy php/mysql/pythona
Instalacja
Nie będe opisywać jak zainstalować poszczególne pakiety, szukarka znajdzie mase artów na temat instalacji i konfiguracji serverów
- opis instalacji ekg obsługującego skrypty znajdziecie na http://dev.null.pl/ekg/docs/python.txt
- opis instalacji modułu znajdziecie na http://blog.spikesource.com/mysqldb.htm
Baza danych
Najpierw zajmiemy się bazą MySQL. Logujemy się na nasze konto shell z dostępem do mysql i konta www. Wpisujemy:
Przykład w php
Najpierw stwórzmy plik "confing.php" w którym bedą zapisane dane dotyczace polączenia z bazą:
Teraz zrobimy formularz 'dodaj.php', który będzie odpowiadał za wysyłanie informacji podanych przez użytkownika do bazy
Dobra, teraz pora na skrypt który doda informacje z formularza do bazy danych:
Dobrze, teraz możemy przetestować czy skrypt działa, odpalamy przeglądarke i wchodzimy na strone, na której bedą wykonywane/odpalane skrypty. Jeżeli po wypełnieniu formularza i kliknięcia na 'dodaj' pojawi się pusta strona to znaczy że prawdopodobnie wszystko zostało dodane prawidłowo. Jeżeli wywali błąd to pewnie źle skopiowaliście lub źle ustawiliście połączenie z bazą. Przyszedł czas na odbiór danych
To tyle, skrypt ten będzie wyświetlał wszystkie notki/newsy. Wygląd nie jest zachwycający, ale wszystko można dostosować do własnych potrzeb.
Skrypt do EKG
Teraz czas na właściwą część arta
Gdy mamy już zainstalowane ekg z obsługą skryptów w pythonie, oraz moduł MySQLdb możemy przejść do skryptu
U mnie wygląda to tak:
W pythonie bardzo ważne są wcięcia (Tab) więc nie polecałbym zmieniania wcięć
Czas wyjaśnić działanie skryptu:
Żeby w pico zapisać używamy kombinacji ctrl+o, żeby zamknąć ctrl+x. Uruchamiamy teraz nasz konsolowy komunikator EKG. Warto wcześniej mieć przygotowany stworzony numer Gadu-Gadu, pod który będzie łączył się nasz bot.
Zadania na zakończenie
Mój art dobiega końca, wszystko w nim było podawane na tacy, teraz czas drogi użytkowniku abyś Ty popracował... Powody dla których warto jeszcze troche poćwiczyć? Można zdobyć całkiem sporo umiejętności dzięki nim, można też zabić czas
Mój skrypt jest bardzo prosty, spróbuj udoskonalić go.
LISTA ZADAŃ:
- [python] Dodatkowe komendy, przykładowo 'uptime' czy 'date'
- [python] System autoryzacji, tylko wybrane numery mają prawo dodawać newsy/notki
- [python] Rozszeżenie informacji, rozszeż informacje wysyłane przez ekg o date i tytuł
-
Wstęp
Witam wszystkich, jestem d3vil i postaram się zademonstrować w jaki sposób możemy uzupełniać dane na stronie internetowej przy użyciu dość dobrze znanego w Polsce komunikatora Gadu-Gadu.
Po co to wszystko? Podam przykład: nachodzi nas natchnienie, żeby napisać newsa na strone, lub notki na bloga. Żeby dodać musimy wykonać szereg czynności takich jak wejście na strone, zalogowanie się i wreszcie dodanie informacji. Można to uprościć, zazwyczaj komunikator jest trzymany w tray`u lub na pasku start. Wystarczy tylko wywołać komunikator i napisać notke bezpośrednio do stworzonego przez nas bota, który automatycznie doda informacje przez nas podane na strone.
Co będzie potrzebne
- troche wolnego czasu
- konto shell z zainstalowanym apache/php/mysql/pythonem moduł do pythona MySQLdb oraz ekg z obsługą skryptów
- lub własny komputer z zainstalowanymi wyżej wymienionymi aplikacjami
- mile widziane podstawy php/mysql/pythona
Instalacja
Nie będe opisywać jak zainstalować poszczególne pakiety, szukarka znajdzie mase artów na temat instalacji i konfiguracji serverów
- opis instalacji ekg obsługującego skrypty znajdziecie na http://dev.null.pl/ekg/docs/python.txt
- opis instalacji modułu znajdziecie na http://blog.spikesource.com/mysqldb.htm
Baza danych
Najpierw zajmiemy się bazą MySQL. Logujemy się na nasze konto shell z dostępem do mysql i konta www. Wpisujemy:
Zatwierdzamy enterem i wpisujemy hasło (nie zostanie ono wyświetlone). U mnie wyglądało to tak:mysql -u d3vil -h localhost -p
Zakładając konto dostaliście przydzieloną baze lub sami ją stworzyliście. W moim przypadku, posiadając baze o nazwie 'd3vil' wpisujed3vil:~: mysql -u d3vil -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 5608 to server version: 5.0.22
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
Teraz powinniśmy dostać odpowiedź 'Database changed'. Wpisujemy terazuse d3vil
aby wyświetlić instniejące tabele. U mnie wygląda to tak:show tables;
Nie mamy jeszcze stworzonej żadnej tabeli, teraz dodamy tabele o nazwie news z polami 'id', 'autor', i 'tresc'. Pole 'id' będzie zawierać numery wiadomości, ułatwi to identyfikacje. Pole 'autor' będzie zawierać numer gg z którego zostanie dodany news lub notka. Pole 'tresc' będzie zawierało treść notki/newsa. Aby stworzyć taką tabele wpisujemy:mysql> show tables
Empty set (0.00 sec)
mysql>
U mnie wygląda to tak:CREATE TABLE news (
id INT NOT NULL auto_increment,
autor VARCHAR(9),
tresc TEXT NOT NULL,
PRIMARY KEY (id));
Teraz ponownie wpisujemymysql> CREATE TABLE news (
-> id INT NOT NULL auto_increment,
-> autor VARCHAR(9),
-> tresc TEXT NOT NULL,
-> PRIMARY KEY (id));
Query OK, 0 rows affected (0.00 sec)
show tables;
Tak więc baze mamy z głowymysql> show tables;
+-----------------+
| Tables_in_d3vil|
+-----------------+
| news |
+-----------------+
1 row in set (0.00 sec)
Przykład w php
Najpierw stwórzmy plik "confing.php" w którym bedą zapisane dane dotyczace polączenia z bazą:
Kod:
<?
//config.php
$host = ''; //tutaj wpisujemy nasz host, zalecany wpis 'localhost'
$user = ''; //tutaj wpisujemy nazwe naszego usera, w moim wypadku 'd3vil'
$haslo = ''; //tutaj wpisujemy hasło do naszego usera
$baza = ''; //w moim przypadku 'd3vil'
mysql_connect($host,$user,$haslo);
mysql_select_db($baza);
?>
Teraz zrobimy formularz 'dodaj.php', który będzie odpowiadał za wysyłanie informacji podanych przez użytkownika do bazy
Kod:
<form action="dodawanie.php" method="post">
Autor:
<input type=text name=autor>
Tresc:
<textarea name=tresc rows="20" cols="40"></textarea>
<input type=submit name=submit value=dodaj>
</form>
Kod:
<?
include('config.php); // dołączy plik 'config.php' który odpowiada za połączenie z bazą
$autor = $_POST['autor']; //odbierze z formularza zmienną 'autor'
$tresc = POST['tresc']; //odbierze z formularza zmienną 'treść'
$q = "INSERT INTO NEWS (id, autor, tresc) VALUES ('NULL', '$autor', '$tresc');"; //treść zapytania do bazy
$wynik = mysql_query($q); //wykonanie zapytania
?>
Kod:
<?
//index.php
include('config.php');
$result = mysql_query("select * from news order by id desc"); //treść zapytania do bazy
while($r=mysql_fetch_array($result)) //dopuki dane będą przechwytywane
{
$id = $r["id"];
$autor = addslashes(htmlspecialchars($r["autor"])); //zabezpieczy skrypt przed html i js
$tresc = addslashes(htmlspecialchars($r["tresc"]));
echo "$tresc
[b]Dodał:[/b] $autor<hr>";
}
?>
Skrypt do EKG
Teraz czas na właściwą część arta
Polecenie touch stworzy plik. Nie wykonujemy polecenia mkdir, jeżeli mamy już stworzony katalog scripts. Włączamy ulubionego edytora tekstu i zaczynamy pisać skryptmkdir ~/.gg/scripts
touch ~/.gg/scripts/news.py
Czas zabrać się za pisanie:cd ~/.gg/scripts
pico news.py
Kod:
#--coding:iso8859-2--
import ekg
import MySQLdb
db = MySQLdb.connect(host = 'wpisz host', user='tutaj wpisz nazwe usera', passwd='tutaj wpisz hasło', db="wpisz nazwe bazy");
cursor = db.cursor()
def init():
ekg.printf("generic","Skrypt odpalony")
return
def handle_msg(uin, name, msgclass, text, time, secure):
if text == '!help':
ekg.command('msg %s wpisz obojetnie co, aby dodac news;)'%(uin))
else:
cursor.execute("INSERT INTO NEWS (id, autor, tresc) VALUES ('', %s, %s)", (uin, text))
return 1
Import bibliotek do obsługi bazy MySQL i EKG.import ekg
import MySQLdb
To odpowiada za połączenie z bazą.db = MySQLdb.connect(host = 'wpisz host', user='tutaj wpisz nazwe usera', passwd='tutaj wpisz hasło', db="wpisz nazwe bazy");
cursor = db.cursor()
Wyświetla informacje po załadowaniu skryptudef init():
ekg.printf("generic","Skrypt zarzadzajacy trescia odpalony")
return
Po otrzymaniu wiadomości, jeżeli treść to '!help' wtedy skrypt wyświetli informacje zwrotną z treścią pomocydef handle_msg(uin, name, msgclass, text, time, secure):
if text == '!help':
ekg.command('msg %s wpisz obojetnie co, aby dodac news'%(uin))
Każda inna treść zostanie wrzucona do bazyelse:
cursor.execute("INSERT INTO NEWS (id, autor, tresc) VALUES ('', %s, %s)", (uin, text))
return 1
Żeby w pico zapisać używamy kombinacji ctrl+o, żeby zamknąć ctrl+x. Uruchamiamy teraz nasz konsolowy komunikator EKG. Warto wcześniej mieć przygotowany stworzony numer Gadu-Gadu, pod który będzie łączył się nasz bot.
Teraz powinniśmy się pojawić 'dostępni' z numerem bota. Teraz wystarczy załadować skrypt/set uin <nasz numerek>
/set passwd <nasze hasło>
/save
/connect
oraz napisać coś do naszego bota z naszego numeru. Wynik tego wszystkiego powinien być widoczny na stronie/python load news
Zadania na zakończenie
Mój art dobiega końca, wszystko w nim było podawane na tacy, teraz czas drogi użytkowniku abyś Ty popracował... Powody dla których warto jeszcze troche poćwiczyć? Można zdobyć całkiem sporo umiejętności dzięki nim, można też zabić czas
LISTA ZADAŃ:
- [python] Dodatkowe komendy, przykładowo 'uptime' czy 'date'
- [python] System autoryzacji, tylko wybrane numery mają prawo dodawać newsy/notki
- [python] Rozszeżenie informacji, rozszeż informacje wysyłane przez ekg o date i tytuł
-
PHP:
BBcode
- [php] Panel admina z którego będziesz mógł sterować stroną poprzez przeglądarke
- [php][python] Blog sterowany przez gg (a`la ggblogasek autorstwa uw-team [img]http://www.haker.com.pl/style_emoticons/<#EMO_DIR#>/wink.gif[/img] )
[u]Zakończenie[/u]
Mój art dobiegł końca, może w przyszłości powstaną jeszcze jakieś [img]http://www.haker.com.pl/images/smilies/smile.gif[/img]
Jak masz jakieś uwagi/propozycje to pisz na d3vil[shift plus dwa]vskeylogger.net lub d3vil[shift plus dwa]o2.pl [img]http://www.haker.com.pl/style_emoticons/<#EMO_DIR#>/wink.gif[/img] Nie zapomnij też pochwalić się o wykonaniu zadań.
Aha, jeszcze jedno. Wielkie pozdro dla Harvester`a który zasponsorował mnie w server shell, Kociaq`a który poprawił mój art oraz dla: haker.com.pl, c4f.pl, cssource.info oraz wszystkich znajomych których tutaj nie wymieniłem [img]http://www.haker.com.pl/images/smilies/smile.gif[/img]