Byla vydána verze 1.98.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Byla vydána nová verze 7.1 (YouTube) svobodného open source redakčního systému WordPress. Kódové jméno Mary Lou bylo vybráno na počest americké jazzové klavíristky Mary Lou Williams (YouTube).
Bun (Wikipedie), tj. běhové prostředí (runtime) a toolkit pro JavaScript a TypeScript, alternativa k Node.js a Deno, byl vydán ve verzi 1.4. Představení novinek také na YouTube. Bun byl přepsán z programovacího jazyka Zig do Rustu. Pomocí Claude Fable 5.
Vývojáři KDE na Mastodonu oznámili vydání balíku aplikací KDE Gear 26.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.
Společnost PINE64 kvůli nedostatku a vysokým cenám DRAM a eMMC dočasně pozastavuje výrobu linuxových zařízení. Výroba zařízení jako PineTime, PineVoice a Pinecil pokračuje.
Společnost Stripe se dohodla na akvizici společnosti OpenRouter. Za 7,5 miliardy dolarů.
Byla vydána nová verze 1.27 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
V pátek 28. srpna se v Praze uskuteční již osmý Mobile Linux Hackday. Jako obvykle se potkáme v pražské pobočce SUSE v Karlíně na Křižíkově, takže kromě mobilního Linuxu je to tentokrát i příležitost přijít se podívat na nově zrekonstruované kanceláře. Začínáme v 10:00, ale dorazit můžete samozřejmě kdykoliv v průběhu dne. Setkáním vás provede Petr Hodina, vývojář GPU ovladačů v Mesa 3D a jeden z hlavních lidí české komunity kolem mobilního … více »
Představen byl Raspberry Pi Compute Module 5 Programming Jig. Jedná se o zařízení umožňující připravit Compute Module 5 do plně funkčního stavu bez nutnosti použití dalších vstupně / výstupních desek. Podporuje automatizaci pomocí nástroje rpi-sb-provisioner. Podrobnosti v dokumentaci.
Hackeři ve Francii ukradli data více než půl milionu daňových poplatníků. Je to jeden z největších hackerských útoků v dějinách země. O útoku z konce června informovala až teď daňová správa. Teprve od pondělí dotčeným občanům zasílá e-maily s instrukcemi, jak postupovat dál. Hackeři se sice nedostanou k penězům dotyčných, hrozí ale věrohodné podvody. Hackeři získali třeba celá jména, údaje o rodinných příslušnících nebo také údaje o
… více »
Mám skript v PHP který začíná takto
session_start();
if(!isset($_SESSION["login"]["ID"]) && !isset($_SESSION["login"]["authority"]))
{
header('Location: index.php');
}
při zpracování formuláře přesměruju stránku na skript neco.script.php kde se provede zpracovani dat a zpet se presmeruje na puvodni skript. Problém je v tom že nevím z jakého důvodu se jakýmsi způsobem vymaže hodnota nastavená v $_SESSION["login"]["authority"] a skript mě automaticky odhlasi ze systemu z bezpecnostnich duvodu.
Zacatek neco.script.php je klasika session_start();
Nemá s tím někdo zkušenosti? Nemůžu nějak najít důvod proč se mi vymaže hodnota z session.
Řešení dotazu:
session_start();
if(!isset($_SESSION["login"]["ID"]) && !isset($_SESSION["login"]["authority"]))
{
header('Location: ../index.php');
}
include "../include/config.inc.php";
include "../class/mysql.class.php";
include "../include/function.inc.php";
//Inicializace db spojení
$db = MySQL::instance();
$db->connect(HOST,DB,USER,PASS);
if(isset($_POST["empl"]))
{
if($_POST["mesic"]!="" || $_POST["rok"]!="")
{
header('Location: ../view.php?page=mes-vyp-hod&mesic='.$_POST["mesic"].'&rok='.$_POST["rok"].'&empl='.$_POST["empl"].'');
exit;
}
else
{
header('Location: ../view.php?page=mes-vyp-hod&empl='.$_POST["empl"].'');
exit;
}
}
header('Location: ../view.php?page=mes-vyp-hod');
session_start();
if(!isset($_SESSION["login"]["ID"]) && !isset($_SESSION["login"]["authority"])) {
echo("Chyba");
} else {
echo("OK");
}
$_SESSION=Array("login");
$_SESSION["login"]["ID"]="jmeno";
$_SESSION["login"]["authority"]="auth";
Změnil bych operátor && na ||, pokud musí být splněno obojí. Nebo stačí, když je splněna jen jedna z podmínek?
BTW: Lidi, dávejte ty výpisy programů do značek <pre>. Kdo to má luštit?
||. Tak jak to máš, stačí pro pokračování programu splnění alespoň jedné z nich. To znamená, že nemáš ani ID.
Zkus se podívat, jestli _SESSION nastavuješ správně v hlavním skriptu. Ve funkci to fungovat nebude.
if(!isset($_SESSION["login"]["ID"]) && !isset($_SESSION["login"]["authority"])) { header('Location: index.php'); }
tak skript proběhne i když není $_SESSION["login"]["authority"] definována (stačí, že je definována $_SESSION["login"]["ID"] a tudíž podmínka není splněna). A pokud ve skriptu pokus.php máte tuto podmínku jinak nastavenou, je to problém..
var_dump($_SESSION["login"]["authority"])nebo rovnou
var_dump($_SESSION)?
||.
Jestliže neexistuje jedna_proměnná NEBO neexistuje druhá_proměnná, proveď přihlášení.
Tady snad nefungují De Morganovy zákony?
CheckAuthorityToSection($_SESSION["login"]["authority"],$page);
if($page == "sestaveni" && $authen == true)
{
//Nejprve je třeba vybrat zaměstnance
$form = new FormularBuilder();
$form->FormStart($root."scripts/empl_prirazeni_set.script.php", "post","","vyber_zamestnance");
$form->FormSelectOptionIdInValue("Zaměstnanec", "add_empl", $zam, $zamID,1,$zE);
$form->FormHiddenItem($_GET["mesic"],"mesic");
$form->FormHiddenItem($_GET["rok"],"rok");
$form->FormSubmitButton("Vybrat");
$form->FormEnd();
}
else if($page == "sestaveni" && $authen == false)
{
echo "";
echo "Nemáte přístup do této sekce";
echo "";
}
include "include/footer.php";
?>
session_start();
if(!isset($_SESSION["login"]["ID"]) || !isset($_SESSION["login"]["authority"]))
{
header('Location: index.php');
}
include "include/header.php";
include "include/sidebar.php";
//Inicializace oprávnění
$access = new AuthorityManager();
$authen = $access->CheckAuthorityToSection($_SESSION["login"]["authority"],$page);
if($page == "sestaveni" && $authen == true)
{
//Nejprve je třeba vybrat zaměstnance
$form = new FormularBuilder();
$form->FormStart($root."scripts/empl_prirazeni_set.script.php", "post","","vyber_zamestnance");
$form->FormSelectOptionIdInValue("Zaměstnanec", "add_empl", $zam, $zamID,1,$zE);
$form->FormHiddenItem($_GET["mesic"],"mesic");
$form->FormHiddenItem($_GET["rok"],"rok");
$form->FormSubmitButton("Vybrat");
$form->FormEnd();
}
else if($page == "sestaveni" && $authen == false)
{
echo "";
echo "Nemáte přístup do této sekce";
echo "";
}
include "include/footer.php";
$_SESSION definuješ uvnitř funkce.
$_SESSION lokální, tak se nemůže odeslat.
Tady však začínám mít tušení, že po odeslání dat metodou POST neděláš v navavazujícím skriptu po jejich zpracování header('Location...
session_start();
if(!isset($_SESSION["login"]["ID"]) || !isset($_SESSION["login"]["authority"]))
{
header('Location: ../index.php');
exit;
}
include "../include/config.inc.php";
include "../class/mysql.class.php";
include "../include/function.inc.php";
//Inicializace db spojení
$db = MySQL::instance();
$db->connect(HOST,DB,USER,PASS);
if(isset($_POST["empl"]))
{
print_r($_SESSION);
if($_POST["mesic"]!="" || $_POST["rok"]!="")
{
header('Location: ../view.php?page=mes-vyp-hod&mesic='.$_POST["mesic"].'&rok='.$_POST["rok"].'&empl='.$_POST["empl"].'');
exit;
}
else
{
header('Location: ../view.php?page=mes-vyp-hod&empl='.$_POST["empl"].'');
exit;
}
}
header('Location: ../view.php?page=mes-vyp-hod');
header('Location... i po zpracování přihlášení (ověření autenticity a vyrobení $_SESSION)?
if(!isset($_SESSION["login"]["ID"]) || !isset($_SESSION["login"]["authority"]))
{
header('Location: index.php');
}
exit?
Celé to na mě působí, že session_start() v přihlašovacím skriptu voláte až poté, co jste vložil data do $_SESSION["login"].
Pokud to totiž chápu správně, tak dejme tomu na stránce enter.php uživatel vloží své přihlašovací údaje, kde je formulář odešle na auth.script.php. Po ověření správnosti se vytvoří $_SESSION["login"] a uživatel je přesměrován na info.php. Zde nějaký způsobem může vybrat pokus.php, který odesílá data na neco.script.php, kde by se pak měl vrátit zpět na pokus.php.
A teď je podstatné, co se vlastně po prvním přihlášení děje. Tvrdíte, že Když vypnu a zapnu prohlížeč pokusím se zapsat něco a přesměruju se na neco.script.php tak session nastavené není. Tzn vrátím se zpět. Odhlásím se přihlásím se znovu a znovu se pokusím zapsat něco a přesměruje mě to na neco.script.php tak už session nastavené je správně a všechno je ok, čili je podle mého podstatné, i jakým způsobem probíhá odhlašování ze systému. Vložte sem tedy, prosím, ještě část skriptu auth.script.php, kde bude vidět, jakým způsobem $_SESSION["login"] vytváříte a i skript pro odhlášení, ať je vidět, jak se odhlašujete. A znovu opakuji, proč Vám chybí za header() exit?
public function CheckAuthorizationWithAuthority($login,$pass)
{
/**
* SQL dotaz, který ověření nejprve uživatele a poté oprávnění
*/
$sql = "select * from users where login='".$login."' and pass='".$pass."'";
$vysledek = $this->db->query($sql);
$zaznam = $this->db->fetch_object($vysledek);
if($zaznam->active == "1")
{
if($this->db->num_rows($vysledek) == 1)
{
/**
* V případě kladného výsledku vrátí true
*/
$this->SetSession("ID", $zaznam->id);
$this->SetSession("authority", $zaznam->authority);
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/**
* Odhlásí uživatele a zničí session
*/
public function LogoutUser()
{
$_SESSION = array();
session_destroy();
return true;
}
/**
* Nastaví session na potřebné parametry
* @param $name
* @param $value
*/
private function SetSession($name,$value)
{
$_SESSION['login'][$name] = $value;
}
Tiskni
Sdílej: