Kotlin týden Zimní výprodej
Pouze tento týden sleva až 80 % na e-learning týkající se Kotlin
40 % bodů zdarma díky naší Zimní akci!

Diskuze: Spouštěni python programu přes html tlačítko.

Aktivity (2)
Avatar
Tostisto
Člen
Avatar
Tostisto:20.8.2019 16:31

Nejde mi spustit program python program přes Html stranku kde mám tlačítka pro spustení programu.

Zkusil jsem: Hledal jsem snad všude ale nic mi nefungovalo

 
Odpovědět
20.8.2019 16:31
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20.8.2019 17:01

Já jsem tě popravdě moc nepochopil.. chceš docílit toho, aby když klikneš tak se otevřel program na klientovém počítači, a nebo chceš docílit toho že se program který je na serveru po kliknutí na tlačítko vnoří do stránky?

 
Nahoru Odpovědět
20.8.2019 17:01
Avatar
Tostisto
Člen
Avatar
Odpovídá na Milan Turyna
Tostisto:20.8.2019 17:06

Chci docílit toho, když zmáčknu tlačítko tak se spustí program.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
20.8.2019 17:06
Avatar
Odpovídá na Tostisto
Reaktivní uživatel:20.8.2019 17:19

Řekl bych, že ve druhém komentáři jsi nesdělil nic nového…

Nahoru Odpovědět
20.8.2019 17:19
Kdo je připraven, toho zaskočí něco jiného
Avatar
Tostisto
Člen
Avatar
Odpovídá na Reaktivní uživatel
Tostisto:20.8.2019 17:31

Když zmáčknu tlačítko tak se spustí program na pozadí serveru

 
Nahoru Odpovědět
20.8.2019 17:31
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20.8.2019 17:53

Například by mohlo fungovat:

<?php

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython)

?>

a nebo

$pythonfile = escapeshellcmd('python blabla.py');
shell_exec($pythonfile);
Editováno 20.8.2019 17:55
 
Nahoru Odpovědět
20.8.2019 17:53
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Tostisto
Člen
Avatar
Tostisto:20.8.2019 19:36

Předpokladam že to je PHP, takze tomu vubec nerozumim jak to mam přidat od html souboru aby to moje tlacitko fungovalo.

 
Nahoru Odpovědět
20.8.2019 19:36
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20.8.2019 19:52

Pošli HTML soubor který máš.

 
Nahoru Odpovědět
20.8.2019 19:52
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20.8.2019 19:56

A příště ti doporučuji, když budeš zakládat téma, rovnou poslat HTML soubor, napsat normálně co chceš a ne napsat že chceš otevřít soubor, a když se tě někdo zeptá jak ho chceš otevřít tak napíšeš že ho chceš otevřít. Jinak samotné HTML je značkovací jazyk, a nemůžeš s ním nijak manipulovat se serverem.

 
Nahoru Odpovědět
20.8.2019 19:56
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Tostisto
Lukáš:20.8.2019 22:50

Do html souboru php nepřidáš, musíš mít .php soubor.

 
Nahoru Odpovědět
20.8.2019 22:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:21.8.2019 7:55

Neni uplne jasne, zeho chces docilit a jak moc velke mas znalosti klient (uzivatel, browser) htm, css, js, server python, apache...

Mozna se ptas na js ajax, jquery post / get, form get/post. Ajax je mozne resit i prostym pridanim tagu script. V pripade php by to vypadalo takto:

--- xx.html ---
<script src="nova_stranka.php"></script>
<!--script src="script.js"></script-->
--- nova_stranka.php ---
<?php echo 'alert(123);'; ?> // js kod, protoze tag script vklada js kod

Pokud to chces do js promene, tak js http-request / jquery.
Nemam zdani, zda a jak se da spustit python jako sluzba na serveru. Pokud to nepujde, tak by to slo pres to, co ti uz psali. Pres php zavolas cmd() a spustit python z prikazoveho radku.

--- nova_stranka2.php ---
<?php

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython)

?>

Mozna si muzes vyzkouset jeste jinou formu ajaxu.

<iframe src="" id=xxx></iframe>
<input type=button onclick="document.getElementById('xxx').src='novastranka2.php';" value="klikni">
<a href="#ajax1"  onclick="document.getElementById('xxx').src='novastranka2.php'; return false;">klikni</a>
<a href="#ajax2"  onclick="this.yyy.src='novastranka2.php'; this.yyy.style.visibility:visible; return false;">klikni <iframe src="" name=yyy style="visibility:hidden;"></iframe></a>
Editováno 21.8.2019 7:57
 
Nahoru Odpovědět
21.8.2019 7:55
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:21.8.2019 9:50

K tomu aby ti to tlačítko fungovalo tak potřebuješ v PHP vytvořit podmínku, která vytvoří událost pouze potom co se uživatel klikne na submit tlačítko například:

<?php

if(isset($_POST['nazev'])) {

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython)

}

?>

a u $_POST['nazev'] si to přepíšeš na atribut name který máš v tlačítku (myslím tím name=""), ono by to chtělo když se chce něco spustit na serveru, taky nějaký server-side jazyk umět, protože HTML je pouze "design a text" a nemůže ovlivňovat server, dělat podmínky, a tak dále.

Prakticky to máš tady:

index.php

<?php

if(isset($_POST['nazev'])) {

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython);

}

?>
<form method="post">
<input type="button" name="nazev" value="Spustit">
</form>

Takže buď nemanipulovat se serverem, a nebo se naučit minimálně základy nějakého serverového jazyka (např: php, výběr už je na vás), html je klientský jazyk, tudíž nejde manipulovat se serverem.

K tomu aby se pokaždé když dá uživatel F5 či resetuje stránku, neodesílal příkaz, se dá předejít bud formulářem který bude odkazovat na samostatný PHP soubor který provede danou akci a po provedení zas uživatele odešle na stránku kde je tlačítko (např: index.html) přes header("Location: index.html"); a myslím že i ajaxem, ale to jsem nikdy nedělal, takže to přenechám jiným..

Takže by to vypadalo následovně:

index.html

<form action="akce.php" method="post">
<input type="submit" name="akce" value="Spustit">
</form>

akce.php

if(isset($_POST['name'])) {

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython);

header("Location: index.html");

} else {

header("Location: index.html");

 }

Nevím, jestli to bude fungovat, psal jsem to pouze tady v komentářích a ani jsem to netestoval ale mělo by.. pokud budeš potřebovat další akce se serverem tak bych doporučil se nenaučit nějaký server-side jazyk, a uvidíš že to bude mnohem rychlejší a efektivnější..

 
Nahoru Odpovědět
21.8.2019 9:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.