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

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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?
Chci docílit toho, když zmáčknu tlačítko tak se spustí program.
Řekl bych, že ve druhém komentáři jsi nesdělil nic nového…
Když zmáčknu tlačítko tak se spustí program na pozadí serveru
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);
Předpokladam že to je PHP, takze tomu vubec nerozumim jak to mam přidat od html souboru aby to moje tlacitko fungovalo.
Pošli HTML soubor který máš.
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.
Do html souboru php nepřidáš, musíš mít .php soubor.
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>
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ší..
Čau, pokud je to ještě aktuální, z tohodle tutoriálu jsem čerpal. Je
to na raspberry a spouští bash - já jsem takhle spuštěl .py. Je to celkem
na prasáka, ale funguje to
Zobrazeno 13 zpráv z 13.