Myslíš že bych tě mohl poprosit o pomoc s tím checkboxem ?
Arduino klient - ovládanie z webu
Re: Arduino klient - ovládanie z webu
No tak ted jsem v tom totalne tumpachový 
))
Myslíš že bych tě mohl poprosit o pomoc s tím checkboxem ?
			
			
									
									
						Myslíš že bych tě mohl poprosit o pomoc s tím checkboxem ?
Re: Arduino klient - ovládanie z webu
Si tam spustíš ten "Try it yourself" .... upravíš kód a dáš "Run"  ... vedle vidíš co to dělá. Nebudu to psát za tebe. Pochybuji, že ostatním se bude chtít taky. Okradl bych tě o tu radost až si na to příjdeš sám. 
PS : Momentálně se potřebuješ vzdělat na téma HTML a formuláře... to tě nakopne dál
			
			
									
									
						PS : Momentálně se potřebuješ vzdělat na téma HTML a formuláře... to tě nakopne dál
Re: Arduino klient - ovládanie z webu
Vím že musím zapracovat na téma HTML a odesílací formuláře...
			
			
									
									
						Re: Arduino klient - ovládanie z webu
Tak asi jsem to zvládl 
)
Můj kod v IDE :
ale světlo se mi nechce sepnout
Tak už vím kde mám chybu.......Tady se počítá s textem LED a já mám svetlo1
			
			
									
									
						Kód: Vybrat vše
<?php
	$server = "localhost";
	$user = "kony";
	$pass = "xxxxxxxxxxx";
	$db = "Domacnost";
	$mysqli = mysqli_connect($server, $user, $pass, $db); //připojení k MySQL
	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo1"';
	$doSql = $mysqli->query($sql);
	if($doSql->num_rows == 0){
		$sql = 'INSERT INTO arduino_data (modul, hodnota) VALUES ("svetlo1", 0)';
		$doSql = $mysqli->query($sql);
	}
	if(isset($_POST['odeslano'])){ //pokud byl formulář odeslán
		$hodnota = sanitize($_POST['stav']);
		$sql = 'UPDATE arduino_data SET hodnota="'.$hodnota.'" WHERE modul="svetlo1"';
		$doSql = $mysqli->query($sql);
	}
	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo1"';
	$doSql = $mysqli->query($sql);
	$hodnota = $doSql->fetch_assoc()['hodnota']; //načte hodnotu led z DB
	$zapnuto1Checked = $hodnota == 1 ? 'checked' : ''; //nastaví výchozí hodnotu radio buttonu
	$vypnuto1Checked = $hodnota == 0 ? 'checked' : '';
 	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo2"';
        $doSql = $mysqli->query($sql);
        if($doSql->num_rows == 0){
                $sql = 'INSERT INTO arduino_data (modul, hodnota) VALUES ("svetlo2", 0)';
                $doSql = $mysqli->query($sql);
        }
        if(isset($_POST['odeslano'])){ //pokud byl formulář odeslán
                $hodnota2 = sanitize($_POST['stav2']);
                $sql = 'UPDATE arduino_data SET hodnota="'.$hodnota2.'" WHERE modul="svetlo2"';
                $doSql = $mysqli->query($sql);
        }
        $sql = 'SELECT * FROM arduino_data WHERE modul="svetlo2"';
        $doSql = $mysqli->query($sql);
        $hodnota2 = $doSql->fetch_assoc()['hodnota']; //načte hodnotu led z DB
        $zapnuto2Checked = $hodnota2 == 1 ? 'checked' : ''; //nastaví výchozí hodnotu radio buttonu
        $vypnuto2Checked = $hodnota2 == 0 ? 'checked' : '';
 	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo3"';
        $doSql = $mysqli->query($sql);
        if($doSql->num_rows == 0){
                $sql = 'INSERT INTO arduino_data (modul, hodnota) VALUES ("svetlo3", 0)';
                $doSql = $mysqli->query($sql);
        }
        if(isset($_POST['odeslano'])){ //pokud byl formulář odeslán
                $hodnota3 = sanitize($_POST['stav3']);
                $sql = 'UPDATE arduino_data SET hodnota="'.$hodnota3.'" WHERE modul="svetlo3"';
                $doSql = $mysqli->query($sql);
        }
        $sql = 'SELECT * FROM arduino_data WHERE modul="svetlo3"';
        $doSql = $mysqli->query($sql);
        $hodnota3 = $doSql->fetch_assoc()['hodnota']; //načte hodnotu led z DB
        $zapnuto3Checked = $hodnota3 == 1 ? 'checked' : ''; //nastaví výchozí hodnotu radio buttonu
        $vypnuto3Checked = $hodnota3 == 0 ? 'checked' : '';
	echo '<form action="" method="POST" >';
		echo '<input type="hidden" value="1" name="odeslano" />';
		echo 'Světlo 1<br>';
		echo '<input type="radio" name="stav" value="1" '.$zapnuto1Checked.' /> Zapnout<br>';
		echo '<input type="radio" name="stav" value="0" '.$vypnuto1Checked.' /> Vypnout<br><br>';
		echo 'Světlo 2<br>';
		echo '<input type="radio" name="stav2" value="1" '.$zapnuto2Checked.' /> Zapnout<br>';
                echo '<input type="radio" name="stav2" value="0" '.$vypnuto2Checked.' /> Vypnout<br><br>';
		echo 'Světlo 3<br>';
                echo '<input type="radio" name="stav3" value="1" '.$zapnuto3Checked.' /> Zapnout<br>';
                echo '<input type="radio" name="stav3" value="0" '.$vypnuto3Checked.' /> Vypnout<br><br>';
		echo '<input type="submit" value="Odeslat">';
	echo '</form>';
	function sanitize($input){
		$input = htmlspecialchars($input);
		$input = htmlentities($input);
		$input = strip_tags($input);
		$input = trim($input);
		return $input;
	}
?>
Kód: Vybrat vše
#include <SPI.h>
#include <ESP8266WiFi.h>
#define BUFF_DELKA 255
// Nazev Wi-Fi site, do ktere se mam pripojit
const char* ssid = "Kony";
// Heslo Wi-Fi site, do ktere se mam pripojit
const char* password = "xxxxxxxxx";
char server[] = "konycz.eu"; //URL adresa serveru
char buffer[BUFF_DELKA]; //zásobník na příchozí řetězec
WiFiClient client;
void setup() {
 // Nastartuj seriovou linku, do ktere budu vypisovat provozni informace
 Serial.begin(9600);
 // Na pin D1 je pripojene rele, nastavim jej tedy na vystup
 // Zaroven nastavim nizkée napeti, aby se rele po startu nesepnulo
 pinMode(0, OUTPUT);
 // Pripojeni k Wi-Fi
 Serial.println();
 Serial.print("Pripojuji k ");
 Serial.println(ssid);
 WiFi.begin(ssid, password);
 // Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru
 while (WiFi.status() != WL_CONNECTED) {
 delay(100);
 Serial.print(".");
 }
 // Jsem pripojeny k Wi-Fi a mohu pokracovat
 Serial.println();
 Serial.println("WiFi pripojena!");
 // Napis IP adresu, kterou mikropocitac dostal
 Serial.print("Pouzij k pripojeni tuto adresu: ");
 Serial.print("http://");
 Serial.println(WiFi.localIP());
}
// Smycka loop se opakuje stale dokola
void loop() {
    if(client.connect(server, 80)){
        delay(1000);
        client.println("GET http://konycz.eu/doma/svetlo1.php");
        client.println("Host: konycz.eu");
        client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        client.println("Connection: close");
        client.println();
        delay(1000);
        int inBuffer = 0;
        for(int i = 0; i < BUFF_DELKA; i++){ //vyprázdní buffer
            buffer[i] = '\\0'; //nastaví všechny prvky buffer na znak konce řetězce
        }
        
        while(client.available()){
            buffer[inBuffer] = client.read();    
            inBuffer++;
        }
        
        if(inBuffer == 6){
            if(buffer[0] == 'l' && buffer[1] == 'e' && buffer[2] == 'd'){
                if(buffer[4] == '1'){
                    digitalWrite(0, HIGH);
                }
                else{
                    digitalWrite(0, LOW);
                }
                Serial.println(buffer[4]);
            }
        }
        client.stop();
    }
    delay(60000);
}Tak už vím kde mám chybu.......Tady se počítá s textem LED a já mám svetlo1
Re: Arduino klient - ovládanie z webu
Po oprave vse jede jak z praku.
			
			
									
									
						- 
				martinius96
 - Příspěvky: 588
 - Registrován: 01 srp 2017, 19:29
 - Bydliště: Poprad
 - Kontaktovat uživatele:
 
Re: Arduino klient - ovládanie z webu
Ahoj, v tom PHP kóde máš SQL a z častí aj XSS injection.
Ak ti niekto spustí ten php script, je schopný ti vymazať celú databázu, ukradnúť ti dáta, ak nastaví správne požiadavku.
Keď niečo vypisuješ na stránku z databázy, používaj htmlspecialchars (aby si si nespustil nežiadúci XSS script, ak ti ho tam niekto nahraje ako text).
Čo sa týka preberania dát, chýba ti tam mysqli_real_escape_string, htmlspecialchars sa na spracovanie dát (pri ukladaní) nepoužíva. Ak ti tam nahráš takto, tak pri výpise si to (bez htmlspecialchars) sformátuješ rovnako a ten HTML kód sa spustí, ak by tam bol ten spomínaný script, rovnako tak aj v prípade htmlentities - je lepšie to používať pre výpis. Funkcia trim je OK, zmaže prípadné medzery.
Taktiež action toho formulára, ten môžeš volať na jeho PHP meno... cez PHP_SELF, scriptom je možné ten formulár presmerovať.
Na druhú stranu chválim, že používaš mysqli_queries a nie mysql_queries, ten je deprecated.
			
			
									
									
						Ak ti niekto spustí ten php script, je schopný ti vymazať celú databázu, ukradnúť ti dáta, ak nastaví správne požiadavku.
Keď niečo vypisuješ na stránku z databázy, používaj htmlspecialchars (aby si si nespustil nežiadúci XSS script, ak ti ho tam niekto nahraje ako text).
Čo sa týka preberania dát, chýba ti tam mysqli_real_escape_string, htmlspecialchars sa na spracovanie dát (pri ukladaní) nepoužíva. Ak ti tam nahráš takto, tak pri výpise si to (bez htmlspecialchars) sformátuješ rovnako a ten HTML kód sa spustí, ak by tam bol ten spomínaný script, rovnako tak aj v prípade htmlentities - je lepšie to používať pre výpis. Funkcia trim je OK, zmaže prípadné medzery.
Taktiež action toho formulára, ten môžeš volať na jeho PHP meno... cez PHP_SELF, scriptom je možné ten formulár presmerovať.
Na druhú stranu chválim, že používaš mysqli_queries a nie mysql_queries, ten je deprecated.
Re: Arduino klient - ovládanie z webu
Pojede mi to na lokalnim serveru doma kam neni presnerovana verejka...9
			
			
									
									
						Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host