Diskuze: Problém se zápisem dat a s session
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zkusil sis tu session s uživatelem nechat vypsat i v tom iframu? Možná melu nesmysly, ale myslím, že chyba bude v tom, že v tom iframu ta stránka neví, co je v té session za data...
Není to chybným zápisem SQL příkazu? Název tabulky optoclen máš uvedený v apostrofech:
INSERT INTO `optoclen`
V tom chyba nebude, to je správně. Ty apostrofy se běžně používají.
Ahoj, řešíš zajímavý problém. Je třeba si tady uvědomit, že iframe je jen rozhraní pro nějakou stránku. Ty když komunikuješ se stránkou v iframe, používají se jiná data - ta stránka posílá svou HTTP hlavičku, SESSION, COOKIES apod.
Pokud to dobře chápu, potřebuješ na tu stránku v iframe odeslat nějaká data (a dostat odpověď). K tomu by se dal využít formulář odeslaný na externí stránku. Funguje jako lokální, jen se data pošlou na adresu mimo stránku, kde momentálně jsi. Data o uživateli předáš např. jako skryté pole.
<form method="post" action="http://externi-stranka.domena">
<!-- ... ->
<input type="hidden" name="user" value="<?= $_SESSION['user-id'] ?>">
<!-- ... ->
</form>
Adresy (domény) jsou rozdílné hádám, že? Pokud ano, tak k url ve frame, které načítáš bych dodal vždy identifikační parametr uživatele pod kterým uložím ty data. Provedeš pouze ověření zda je identifikace správná.
Jakmile uživatel zadá měření, proběhnou dva skripty s podmínkami a nakonec se vloží stránka s měřením. Adresy framu jsou pro školní síť a jsou od správce sítě převedeny na veřejnou adresu. Jeden frame je pro webkameru a jeden pro samotné měření a ten skrytý je pojezd na kterém je upevněna kamera. Web má 77.48.244.198 i všechny tři framy mají stejnou síť, až poslední část ip s portem jsou rozdílné. Pouze arduino, jelikož ho mám doma jede na mojí síti zatím.
Jak bych měl tuto identifikaci zadát a jak to otestovat ?
Ještě jsme si uvědomil, že jsme neměl všude na tech podmínkových
stránkách a této session start, ale i tak to teď nezapisuje.
<?php
session_start();
?>
<html>
<head>
<style type="text/css">
h3 {text-align:left;}
h4 {text-align:left;}
</style>
</head>
<body>
<h2>Měření na fototranzistoru</h2>
<br>
<iframe src="http://77.48.244.194:****/?PWM=0"style="display:none;"></iframe>
<h3>Ovládací panel úlohy a pohled online kamery na prováděnou úlohu</h3>
<iframe src="http://192.168.1.***"width="420" height="340" style="float:left"></iframe>
<iframe src="http://77.48.244.194:****/snapshot.cgi" width="435" height="300" style="float:left"></iframe>
<h4>Popis</h4>
<p>Mezi první měření patří měření na fototranzistoru.....</p>
</body>
</html>
Jak píše Uživatel sítě , v tomto případě bude stačit předat data o uživateli přes GET (stačí za adresu přidat ?klic=hodnota&klic2=hodnota2...).
<iframe src="adresa-arduina?uzivatel=<?= $_SESSION['uzivatel-id'] ?>" ...></iframe>
A Jak docílím toho uložení ? jak to zapsat to skriptu log_optoclen, který se stará právě o zápis do databáze ? arduino zapisuje metogou GET
client.print("GET http://dalkovemereni.vos.cz/log_optoclen.php?");
client.print("pwm=");
client.print("&av=");
...
pak již následuje nahoře zmíněný skript. Stále mě není jasné jak to mohu převzít z teho framu, i když to za tu URL opíšu. Taky metodou GET ?
Jak pise 'Michal Šmahel'.
stranka login -> server1 (77.48.244.198) -> session server 1
zadny login -> server2 (77.48.244.194:****) -> session server2
zadny login -> server3 (192.168.1.***) -> session server2
Kazdy ten server ma vlastni session (php), vlastni login.
Pokud tam mas jen zarizeni, kde login zadny nemas, a chces tam neco posilat,
musis to posilat treba pres get, v pripade webkamery. Jestli mas tu stranku, jak
mas, tak staci to, co psal 'Michal Šmahel'
<iframe src="adresa-arduina?uzivatel=<?= $_SESSION['uzivatel-id'] ?>"
...></iframe> nebo
<iframe src="adresa-arduina?uzivatel=<?php echo
$_SESSION['uzivatel-id']; ?>" ...></iframe>
V prohlizeci si dej 'Zobrazit zdrojovy kod stranky' a uvidis, zda tam je kod
treba
<iframe src="adresa-arduina?uzivatel="></iframe> nebo spravne
<iframe
src="adresa-arduina?uzivatel=peter"></iframe> --
toto potrebujes docilit
Jeste by to mozna chtelo dat tam mozna isset, jestli v session ten parametr
existuje.
$x = isset($_SESSION['uzivatel-id']) ? $_SESSION['uzivatel-id'] : ''; -
Precteni session
$x = isset($_GET['uzivatel']) ? $_SESSION['uzivatel'] : ''; - Precteni
get
https://github.com/…examples.rst
client.print(String("GET /") + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n" +
"\r\n"
);
Jestli to spravne chapu, tak ten zapis je klasicke vytvoreni hlavicky jako u emailu. V PHP bys to psal
$arr = array(
"GET / HTTP/1.1", // metoda get, protokol http
"Host: " . $host, // host
"Connection: close", // ukonceni spojeni
"");
$str = implode("\r\n",$arr);
A tez jsem vygoogloval zapis, jaky pouzivas ty.
client.print("GET http://arduinoalter.altervista.org/NuovoFile.php?user=12");
Proste, klasicka adresa jako u odkazu v html. Viz ten zapis se session, to je totez, take adresa odkazu.
Zobrazeno 11 zpráv z 11.