Autor | Zpráva | ||
---|---|---|---|
Fisir Profil |
#1 · Zasláno: 16. 4. 2015, 16:36:43
Reaguji na nadsence:
To, že budeš mít v databázi zvláštní sloupce pro sobotu a neděli ještě nemusí znamenat, že je musíš odděleně vypisovat. |
||
Petr_ Profil * |
#2 · Zasláno: 16. 4. 2015, 22:18:44
Bude vubec treba podle tech hodnot casu a oteviracich dob nejak radit nebo vyhledavat? Jestli ne, tak bych na to sel uplne jednoduse:
TinyMCE editor s predgenerovanou vzorovou tabulkou a omezenym poctem formatovacich tlacitek. Vse by stacilo ulozit do jednoho varchar/text sloupce do DB a pred ulozenim jeste pro jistotu prohnat pres HtmlPurifier na whitelist povolenych tagu. |
||
mimochodec Profil |
#3 · Zasláno: 17. 4. 2015, 08:34:47
Petr:
To bylo úplně to první, co mě napadlo. Jestli jde o tři prodejny nábytku a čtyřstránkový web se třemi otvíračkami pod sebou (jen moje spekulace, jedna z možností), není co víc řešit. |
||
nadsenec Profil * |
#4 · Zasláno: 17. 4. 2015, 12:00:51
TinyMCE jsem zvažoval taky, navíc ten web běží na WordPressu, ale rozhodl jsem se to pojmout formou naučení se něčeho nového. Jsem hlavně kodér, ne programátor.
|
||
nadsenec Profil * |
#5 · Zasláno: 19. 4. 2015, 12:18:32
Hraju si teď s těma sessionama a chci se zeptat - jak elegantně zapsat podmínku, aby když je session vytvořena zobrazovat rovnou fotmulář pro zápis? Mně napadá toto...
if (isset($_SESSION["username"])) { ...zobrazit rovnou formulář pro zápis do DB... } elseif ( (!empty($_POST['username'])) && (!empty($_POST['password'])) ) { ...taky zobrazit formulář pro zápis do DB (stejný jako výše)... } else { ...zobrazit formulář pro přihlášení... } ...ale určitě se to dá napsat nějak elegantněji, co? Díky. |
||
Alphard Profil |
#6 · Zasláno: 19. 4. 2015, 12:29:03
Vrstvy s přihlášením a samotnou akcí (úprava otevírací doby) nechte oddělené.
Na začátek stránek vyžadujících přihlášení dejte kontrolu $_SESSION , pokud jsou v nepořádku, přesměrujte na login stránku. A dále už předpokládejte, že je uživatel přihlášený s jménem $_SESSION["username"] .
|
||
nadsenec Profil * |
#7 · Zasláno: 19. 4. 2015, 16:53:26
Alphard: Jak to myslíte? V tuhle chvíli jsou oddělené - po "přihlášení" se zobrazí formulář (ale vše je v jednom skriptu), který se zpracovává v dalším PHP, viz ty úryvky kódů, které jsem tady postoval. Nebo to myslíte tak, že mám mít tři PHPka, něco jako: login.php, po přihlášení dojde k přesměrování na formular.php a samotné zpracování bude v formular-zpracovani.php? Díky.
|
||
Alphard Profil |
#8 · Zasláno: 19. 4. 2015, 17:33:46
Jde o logické členění aplikace. Rozdělení do souborů tomu nemusí nutně odpovídat, ale vyčlenění přihlášení by bylo přínosné.
# stránka pro administraci otevírací doby if (!isLoggedIn()) { # přesměrování na stránku s přihlášením header(...); } # tady už se zabýváme výhradně otevírací dobou if (isset($_POST['...'])) { # zpracování přijatých dat } else { # zobrazení formuláře pro zadání otevírací doby } |
||
nadsenec Profil * |
#9 · Zasláno: 19. 4. 2015, 19:22:43
Alphard: Přiznám se, že moc nevím, jak to myslíte. Udělal jsem to aktuálně takto. Skript s přihlášením...
<?php //Session na uživatele session_start(); session_regenerate_id(); // Kontrola odhlášení if (isset($_SESSION['username']) && isset($_GET['logout']) && $_GET['logout'] == "ano" ) { session_unset(); session_destroy(); } include 'design.inc.php'; page_header("Příhlášení"); //Přihlášení if (isset($_SESSION['username'])) { $username = $_SESSION["username"]; if ($_GET['stav'] == "zapsano") { echo '<p>Data úspěšne zapsána.</p>'; } if ($_GET['stav'] == "aktualizovano") { echo '<p>Data úspěšne aktualizována.</p>'; } ?> <p>Přihlášen uživatel: <?php echo $username; ?></p> <form action="test-zpracovani.php" method="post"> Otevírací doba pro:<br> <input type="radio" name="pobocka" value="Město1" checked>Město1<br> <input type="radio" name="pobocka" value="Město2">Město2<br><br> Pondělí: <input name="pondeli" type="text"><br> Úterý: <input name="utery" type="text"><br> Středa: <input name="streda" type="text"><br> Čtvrtek: <input name="ctvrtek" type="text"><br> Pátek: <input name="patek" type="text"><br> So + Ne: <input name="vikend" type="text"><br><br> Kontrola: <input name="kontrola" type="text" value="kontrola"><br> <!-- Nastavit display: none; --> <input name="submit" type="submit" value="Odeslat"> </form> <a href="test.php?logout=ano">Odlásit se</a> <?php } elseif ( (!empty($_POST['username'])) && (!empty($_POST['password'])) ) { // elseif Přihlášení //Sanitace username $username = filter_var($_POST['username'],FILTER_SANITIZE_STRING); $username = trim($username); //Sanitace password $password = filter_var($_POST['password'],FILTER_SANITIZE_STRING); $password = trim($password); //Definuj proměnné ke kontrole $username_check = "test"; $password_check = "test"; //Kontrola uživatelského jména a hesla if ( ($username == $username_check) && ($password == $password_check) ) { $_SESSION["username"] = $username; ?> <p>Přihlášen uživatel: <?php echo $username; ?></p> <form action="test-zpracovani.php" method="post"> Otevírací doba pro:<br> <input type="radio" name="pobocka" value="Město1" checked>Město1<br> <input type="radio" name="pobocka" value="Město2">Město2<br><br> Pondělí: <input name="pondeli" type="text"><br> Úterý: <input name="utery" type="text"><br> Středa: <input name="streda" type="text"><br> Čtvrtek: <input name="ctvrtek" type="text"><br> Pátek: <input name="patek" type="text"><br> So + Ne: <input name="vikend" type="text"><br><br> Kontrola: <input name="kontrola" type="text" value="kontrola"><br> <!-- Nastavit display: none; --> <input name="submit" type="submit" value="Odeslat"> </form> <a href="test.php?logout=ano">Odlásit se</a> <?php } else { ?> <p>Nesprávné uživatelské jméno nebo heslo!</p> <form action="test.php" method="post"> Jméno: <input name="username" type="text"><br> Heslo: <input name="password" type="password"><br><br> <input name="submit" type="submit" value="Přihlásit"> </form> <?php } //Konec Kontrola uživatelského jména a hesla } else { // else Přihlášení ?> <p>Vyplňte uživatelské jméno a heslo!</p> <form action="test.php" method="post"> Jméno: <input name="username" type="text"><br> Heslo: <input name="password" type="password"><br><br> <input name="submit" type="submit" value="Přihlásit"> </form> <?php } // konec Přihlášení ?> ...a skript pro zpracování... <?php session_start(); session_regenerate_id(); //Připojení k DB include 'db_connection.php'; //Podmínka kontrolující, jestli přišla nějaká data z formuláře if ( (($_POST['kontrola']) == "kontrola") && isset($_SESSION["username"]) ) { //Sanitace pondeli a stanovení default hodnoty if (!empty($_POST['pondeli'])) { $pondeli = filter_var($_POST['pondeli'],FILTER_SANITIZE_STRING); $pondeli = trim($pondeli); } else { $pondeli = "Kontaktujte kancelář na tel. čísle..."; } //Sanitace utery a stanovení default hodnoty if (!empty($_POST['utery'])) { $utery = filter_var($_POST['utery'],FILTER_SANITIZE_STRING); $utery = trim($utery); } else { $utery = "Kontaktujte kancelář na tel. čísle..."; } //Sanitace streda a stanovení default hodnoty if (!empty($_POST['streda'])) { $streda = filter_var($_POST['streda'],FILTER_SANITIZE_STRING); $streda = trim($streda); } else { $streda = "Kontaktujte kancelář na tel. čísle..."; } //Sanitace ctvrtek a stanovení default hodnoty if (!empty($_POST['ctvrtek'])) { $ctvrtek = filter_var($_POST['ctvrtek'],FILTER_SANITIZE_STRING); $ctvrtek = trim($ctvrtek); } else { $ctvrtek = "Kontaktujte kancelář na tel. čísle..."; } //Sanitace patek a stanovení default hodnoty if (!empty($_POST['patek'])) { $patek = filter_var($_POST['patek'],FILTER_SANITIZE_STRING); $patek = trim($patek); } else { $patek = "Kontaktujte kancelář na tel. čísle..."; } //Sanitace vikend a stanovení default hodnoty if (!empty($_POST['vikend'])) { $vikend = filter_var($_POST['vikend'],FILTER_SANITIZE_STRING); $vikend = trim($vikend); } else { $vikend = "Zavřeno"; } //Sanitace pobocka - možná není třeba, je to radio button $pobocka = filter_var($_POST['pobocka'],FILTER_SANITIZE_STRING); //Zjištění rowcount pro kontrolu, jestli se provede INSERT nebo UPDATE $sql = "SELECT * FROM oteviraci_doba WHERE pobocka ='$pobocka'; "; $result = mysqli_query($connection, $sql); $rowcount = mysqli_num_rows($result); //Kontrola, jestli se provede INSERT nebo UPDATE if( mysqli_num_rows($result) > 0) { //Multi query do DB - UPDATE $sql = "UPDATE oteviraci_doba SET oteviraci_doba = '$pondeli' WHERE den = 'Po:' AND pobocka = '$pobocka' ;"; $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$utery' WHERE den = 'Út:' AND pobocka = '$pobocka' ;"; $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$streda' WHERE den = 'St:' AND pobocka = '$pobocka' ;"; $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$ctvrtek' WHERE den = 'Čt:' AND pobocka = '$pobocka' ;"; $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$patek' WHERE den = 'Pá:' AND pobocka = '$pobocka' ;"; $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$vikend' WHERE den = 'So + Ne:' AND pobocka = '$pobocka' ;"; if (mysqli_multi_query($connection, $sql)) { header("location:."/test.php?stav=aktualizovano]http://".$_SERVER['SERVER_NAME']."/test.php?stav=aktualizovano", TRUE, 303); } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } } else { //Multi query do DB - INSERT $sql = "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Po:', '$pondeli', '$pobocka');"; $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Út:', '$utery', '$pobocka');"; $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('St:', '$streda', '$pobocka');"; $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Čt:', '$ctvrtek', '$pobocka');"; $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Pá:', '$patek', '$pobocka');"; $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('So + Ne:', '$vikend', '$pobocka');"; if (mysqli_multi_query($connection, $sql)) { header("location:."/test.php?stav=zapsano]http://".$_SERVER['SERVER_NAME']."/test.php?stav=zapsano", TRUE, 303); echo "Hodnoty úspěšně zapsány."; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } } // Konec Kontrola, jestli se provede INSERT nebo UPDATE mysqli_close($connection); } else { header("location:."/test.php]http://".$_SERVER['SERVER_NAME']."/test.php", TRUE, 303); exit; } // Konec Podmínka kontrolující, jestli přišla nějaká data z formuláře ?> |
||
Časová prodleva: 9 let
|
0