Skocz do zawartości

Przesyłanie danych na strone WWW


Pomocna odpowiedź

(edytowany)

Przypomniałem sobie jak wstawić dane z palca do bazy danych z użyciem podanego skryptu, załóżmy, że serwer mam na IP 192.168.15.32,  a nazwa skryptu do wstawiania w bazę to esp.php i jest w katalogu głównym. Wystarczy w przeglądarkę, np. Chrome  wpisać w pole adresu: "http://192.168.15.32/esp.php?id=1&t=23.52&h=69" , dostaję w miejscu gdzie normalnie pokazuje się zawartość strony komunikat "OK", a  na wykresie pojawia się nowa zawartość, czyli wstawiło do bazy. Zaloguj się i sprawdź czy to działa, jeśli zadziała to pewnie brakuje logowanie w kodzie Arduino, jak nie to coś nie tak między skryptem a bazą. Najprościej to jednak odtworzyć takie same warunki na potrzebę testu.

Dodatkowo dałem Ci pod skryptem link do postu na Arduino, gdzie domik wykorzystał ten przykład. On w swojej wersji ma właśnie serwer na CBA, przed rozpoczęciem komunikacji odpala funkcję:

void connect(){
 delay(1000);
 monitor.println("AT+CWMODE=3");
 delay(2000);
 monitor.println("AT+CWJAP=\"test\",\"pass\"");
 delay(5000);
}

Oczywiście w jego wersji jest to Arduino + ESP jako modem WIFI,  ale widać, że jest konieczne podanie loginu i hasla. No i nie rozłącza się z tego powodu pewnie za każdym razem tylko ma  parametr "Connection: keep-alive\r\n\r\n".

Edit:

Po zastanowieniu to jest jednak połączenie z AP WIFI w domu. Także może nie trzeba hasła. Sprawdź jak z palca wchodzi.

Edytowano przez kaczakat
<?php
define ('DBHOST', 'mysql.cba.pl'); 
define ('DBNAME', 'meqyou'); // nazwa bazy danych
define ('DBUSER', 'meqyou'); // nazwa usera ustawic w PHPMYADMIN
define ('DBPASS', '******'); // haslo usera
/* Laczenie z baza danych */
$con = mysql_connect(DBHOST, DBUSER, DBPASS) or die('Nie polaczono!');
mysql_select_db( 'meqyou') or die ('Brak polaczenia z baza danych!');
mysql_query('SET NAMES utf8');

$id = ($_GET['id']); 
$temp = ($_GET['t']);
$hum = ($_GET['h']);

if ($id == '1') {
    $total = mysql_result(mysql_query("SELECT count(*) FROM `esp2`"),0);
    mysql_query("INSERT INTO `esp2` (temp,hum) values ('".$temp."','".$hum."') ");
}echo 'wyswietl' ; $id,$temp,$hum;


echo 'Ок';


?>

Taki kod PHP mam na serwer wgrany.

18 godzin temu, kaczakat napisał:

Przypomniałem sobie jak wstawić dane z palca do bazy danych z użyciem podanego skryptu, załóżmy, że serwer mam na IP 192.168.15.32,  a nazwa skryptu do wstawiania w bazę to esp.php i jest w katalogu głównym. Wystarczy w przeglądarkę, np. Chrome  wpisać w pole adresu: "http://192.168.15.32/esp.php?id=1&t=23.52&h=69" , dostaję w miejscu gdzie normalnie pokazuje się zawartość strony komunikat "OK", a  na wykresie pojawia się nowa zawartość, czyli wstawiło do bazy. Zaloguj się i sprawdź czy to działa, jeśli zadziała to pewnie brakuje logowanie w kodzie Arduino, jak nie to coś nie tak między skryptem a bazą. Najprościej to jednak odtworzyć takie same warunki na potrzebę testu.

Dodatkowo dałem Ci pod skryptem link do postu na Arduino, gdzie domik wykorzystał ten przykład. On w swojej wersji ma właśnie serwer na CBA, przed rozpoczęciem komunikacji odpala funkcję:


void connect(){
 delay(1000);
 monitor.println("AT+CWMODE=3");
 delay(2000);
 monitor.println("AT+CWJAP=\"test\",\"pass\"");
 delay(5000);
}

Oczywiście w jego wersji jest to Arduino + ESP jako modem WIFI,  ale widać, że jest konieczne podanie loginu i hasla. No i nie rozłącza się z tego powodu pewnie za każdym razem tylko ma  parametr "Connection: keep-alive\r\n\r\n".

Edit:

Po zastanowieniu to jest jednak połączenie z AP WIFI w domu. Także może nie trzeba hasła. Sprawdź jak z palca wchodzi.

Wrzuciłem te wartosci tak jak ty, lecz zamiast IP wstawilem moja stronke i wyskakuje komunikat "

Ta witryna jest nieosiągalna

Nie udało się znaleźć adresu IP serwera ze stroną http."

18 godzin temu, ethanak napisał:

To nie ma prawa działać 😉

Co oznacza


	echo 'wyswietl' ; $id,$temp,$hum;

bo na 100% nie jest to wyświetlanie tych wartości.

Heh ok , więc jak te wartosci wyświetlic ? 

ok bez http zadziałało dodało dane do bazy danych

KURŁA !! działa , nie wiem od czego to zalezalo ale jak udalo sie z palca dodac to bez zadnej ingerencji ruszyło wszystko . !!!!!

1 minutę temu, ethanak napisał:

Najpierw odpowiedz co robi ta linijka i w jaki sposób. Bo mimo wszelkich protestów ze strony Trekera będę się upierał, że uczenie podstaw PHP w wątku o ESP nie jest dobrym pomysłem, a odesłanie do http://pl.php.net  na odmianę jest 😉

działa ! 😄 Więc wszystko jest okej 😄 ja się męczyłem z tym a porostu jak by baza była zbugowana 😄 ! dzięki wszystkim za podpowiedzi 🙂 !

Czyli ślepy doprowadził kulawego. A tak z ciekawości, rozumiem że autoryzację dostępu powinien przeprowadzić skrypt PHP? Ktoś się orientuje?

U mnie Twój skrypt też by nie zadziałał, jak już to powinno być :

echo 'wyswietl ' ; echo $id,$temp,$hum;

 

już wszystko działa. zrobilem do tego zeby nadpisywał w tabeli wartosci oraz drugi skrypt do wyświetlenia z odswierzeniem 🙂 

2 minuty temu, Elvis napisał:

Aż boli na to patrzeć jak czytam że działa i super. Może warto chociaż poczytać o SQL injection... np http://php.net/manual/en/security.database.sql-injection.php

2 lata temu mialem mysql na uczelni ale kompletnie nic nie pamietam 🙂

Ja miałem 20 lat temu jak MySql jeszcze nie obsługiwał relacji. Ale coś tam pamiętam - np. żeby nie wstawiać do zapytania bezpośrednio warotści z formularza...

1 minutę temu, Elvis napisał:

Ja miałem 20 lat temu jak MySql jeszcze nie obsługiwał relacji. Ale coś tam pamiętam - np. żeby nie wstawiać do zapytania bezpośrednio warotści z formularza...

Nie każdy jest tobą 🙂 Pozdrawiam

No nie każdy... tylko że jeśli masz skrypt napisany w ten sposób to mogę Ci jednym prostym wejściem na stronę wysadzić bazę w powietrze (np. skasować wszystkie tabele).

Naprawdę, php.net nie gryzie, szczególnie escape_string. I nikogo nie interesuje, że dwa lata temu nie chciało Ci się MySQL-a uczyć - dzisiaj sam widzisz tego efekty i masz szanse to naprawić.

17 godzin temu, Mrpatryk napisał:

już wszystko działa.

Świetnie, że działa - cieszymy się razem z Tobą. Jak pobawisz się trochę skryptem i już ochłoniesz to jednak faktycznie zajmij się tym co było tutaj wspomniane przez innych użytkowników. Takim prostym skryptem prosisz się później o problemy, każdy odwiedzający stronę z wynikami będzie mógł np. skasować całą bazę danych. Nie lepiej poświęcić godzinkę więcej (wliczając naukę) i zrobić to porządnie?

  • 6 miesiące później...

Witam wszystkich,

tak sobie czytam posty pod tym tematem, ale nie znajduję rozwiązania dla siebie. Opisze mój problem.

Mam arduino a do niego podłączony DTH22, który odczytuje temperaturę i wilgotność. Do arduino podłączona jest grzałka, która po osiągnięciu odpowiedniej temperatury wyłącza się i znowu włącza jak temperatura zejdzie niżej niż zadana w kodzie. Chciałbym przez stronę WWW (dynamicznie bez MySQL) podglądać dane (temperatura i wilgotność) na swoim telefonie poza domem. Czy jest taka możliwość, aby moduł WiFi, np. ESP 8266 podłączyć do mojej sieci domowej a dane były wysyłane na stronę www, a ja będąc w pracy mam możliwość podejrzenia LIVE bez zapisu na bazę, jaka aktualnie jest temperatura oraz wilgotność?

Czy jest opcja, że po odczytaniu danych stwierdzam, za wysoka temperatura i wyłączam grzałkę, a później ją włączam (wszystko przez www)?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...