Skocz do zawartości
Mrpatryk

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

Udostępnij ten post


Link to post
Share on other sites
<?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.

Udostępnij ten post


Link to post
Share on other sites

To nie ma prawa działać 😉

Co oznacza

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

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

Udostępnij ten post


Link to post
Share on other sites
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 . !!!!!

Udostępnij ten post


Link to post
Share on other sites

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 😉

Udostępnij ten post


Link to post
Share on other sites
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 🙂 !

Udostępnij ten post


Link to post
Share on other sites

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;

 

Udostępnij ten post


Link to post
Share on other sites

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 🙂

Udostępnij ten post


Link to post
Share on other sites

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...

Udostępnij ten post


Link to post
Share on other sites
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

Udostępnij ten post


Link to post
Share on other sites

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ć.

Udostępnij ten post


Link to post
Share on other sites
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?

Udostępnij ten post


Link to post
Share on other sites

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)?

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Jest, wszystko to kwestia oprogramowania, np. Blynka, tylko to jest apka, a nie www.

Edytowano przez szczawiosław

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...