Autor | Zpráva | ||
---|---|---|---|
bicebs Profil |
#1 · Zasláno: 12. 9. 2014, 12:21:46
anonymníí:
Stačí takto : <form method="POST">
|
||
lionel messi Profil |
#2 · Zasláno: 12. 9. 2014, 12:22:29
bicebs:
Jo. |
||
anonymníí Profil * |
#3 · Zasláno: 12. 9. 2014, 12:24:39
bicebs:
Pokud zpracování probíhá na téže stránce, tak ano. |
||
anonymníí Profil * |
#4 · Zasláno: 12. 9. 2014, 12:24:39
bicebs:
Pokud zpracování probíhá na téže stránce, tak ano. |
||
bicebs Profil |
#5 · Zasláno: 12. 9. 2014, 12:32:34
lionel messi:
Ak mám prihlásenie k databáze uložené v súbore napríklad databaza.php tak meno a heslo mám zašifrovať? |
||
lionel messi Profil |
#6 · Zasláno: 12. 9. 2014, 12:38:43
bicebs:
Nie. 1. Heslá sa nešifrujú ale hashujú. 2. Hashujú sa heslá registrovaných používateľov, nie je bežné hashovať vlastné heslo k db. |
||
bicebs Profil |
lionel messi:
Takže toto je v poriadku? <?php mysql_connect("localhost:3306", "meno", "heslo"); mysql_select_db("databaza"); mysql_error(); $adresa = "http://malybicebs.php5.sk"; ?> A tento riadok mám upraviť ako : <div class="levy_sloupec">Nick: </div><div class="pravy_sloupec"><input type="text" name="nick" size="20" value="<?php echo $nick_profil; ?>" disabled/></div>
|
||
lionel messi Profil |
#8 · Zasláno: 12. 9. 2014, 12:52:48
bicebs:
„Takže toto je v poriadku?“ Nerozumiem tomu volaniu funkcie mysql_error .
Odporúčam zvážiť prechod na MySQLi, viď: www.fisir.tk/itblog/mysql_. |
||
bicebs Profil |
#9 · Zasláno: 12. 9. 2014, 12:54:22
lionel messi:
Možno na budúce prázdniny. Ale „A tento riadok mám upraviť ako : <div class="levy_sloupec">Nick: </div><div class="pravy_sloupec"><input type="text" name="nick" size="20" value="<?php echo $nick_profil; ?>" disabled/></div>“ |
||
lionel messi Profil |
#10 · Zasláno: 12. 9. 2014, 12:56:39
bicebs:
Už si tu správnu variantu raz ukázal. |
||
bicebs Profil |
#11 · Zasláno: 12. 9. 2014, 12:58:20
lionel messi:
Ale tu to je $nick_profil a ta to bol iba nick. |
||
lionel messi Profil |
#12 · Zasláno: 12. 9. 2014, 13:01:18
bicebs:
„Ale tu to je $nick_profil a ta to bol iba nick.“ <?php echo htmlspecialchars($nick_profil, ENT_QUOTES); ?> |
||
bicebs Profil |
#13 · Zasláno: 12. 9. 2014, 13:04:22 · Upravil/a: bicebs
lionel messi:
Ďakujem až teraz som si všimol že tam bolo $_POST['nick'] a že sa to dá vymeniť. Idem opraviť chyby tak ako ste mi všetci poradili o nejaký čas sa vrátim ak si všimnete ďalšie chyby dajte mi vedieť. |
||
mimochodec Profil |
#14 · Zasláno: 12. 9. 2014, 13:09:22
bicebs:
„mimochodec: Ja už používam "nick" tak to nechcem meniť“ Nekomentoval jsem název proměnné, doporučoval jsem princip, kdy se na jednom místě GET parametr načte, ošetří a nalije do proměnné a pak se (třeba opakovaně) už používá jen ta proměnná. Není to nutné, ale je to příjemné. |
||
bicebs Profil |
#15 · Zasláno: 12. 9. 2014, 13:17:40
mimochodec:
Chcel som povedať že sa mi to nechce prepisovať. |
||
lionel messi Profil |
#16 · Zasláno: 12. 9. 2014, 13:18:53
bicebs:
„Chcel som povedať že sa mi to nechce prepisovať.“ Niektoré IDE (napr. NetBeans) majú funkciu, kt. dokáže premenovať premennú vo všetkých jej výskytoch v danom súbore/celom projekte. |
||
Kubo2 Profil |
#17 · Zasláno: 12. 9. 2014, 16:04:27
bicebs:
„Chcel som povedať že sa mi to nechce prepisovať.“ Však to ani nemusíš prepisovať. Stačí, ak to do toho kódu zanesieš (ako novú vec). |
||
bicebs Profil |
#18 · Zasláno: 12. 9. 2014, 17:15:33
lionel messi:
Už som zabezpečil vstupné informácie od používateľov a vstupy do databáz mám zabezpečiť aj url adresy? A je toto v poriadku? echo htmlspecialchars("<a href='$adresa/ukaz_ho.php?id=$id_uzivatele'>$nick_uzivatele</a><br />" , ENT_QUOTES); |
||
Kubo2 Profil |
„A je toto v poriadku?“
Posúď sám. Pozn.: Výstup bude celý escapovaný do HTML kontextu, čo znamená, že výsledok bude v HTML stránke ako čistý text + HTML entity (inými slovami, neobjaví sa ti tam nijaký odkaz). |
||
Alphard Profil |
#20 · Zasláno: 13. 9. 2014, 00:22:56
„Kromě toho bych doporučoval něco jako
$frm_nick = htmlspecialchars ($_POST['nick']); a dál používat $frm_nick .“
A co když se změní kontext? Ta rada není šťastná, bohužel vzhledem k znalostem tazatele asi lepší, než ho odkázat na templatovací systémy. bicebs: „mám zabezpečiť aj url adresy?“ Z bezpečnostních důvodů dává smysl zabezpečovat vstupy, v url je cílem zajistit funkčnost. Princip je opět stejný, pokud nemáte jistotu, že $id_uzivatele je číslo, použijte urlencode(), $nick_uzivatele je v kontextu html, takže viz výše. Obecně phpfashion.com/escapovani-definitivni-prirucka. |
||
bicebs Profil |
#21 · Zasláno: 13. 9. 2014, 08:08:30
Kubo2, Alphard:
Z odpovedí som pochopil že je to asi zle. Tak ako mám zabezpečiť url napríklad echo "<td class='$class';><a href='./clanky_pouzivatelov.php?aktualna_stranka=$i'>$i</a></td>";
|
||
bicebs Profil |
#22 · Zasláno: 13. 9. 2014, 09:35:13
Po vložení htmlspecialchars a escapovani som to dal na hosting a vypisuje t chybu Notice: Undefined index: nick in /www/sites/1/site21011/public_html/registrace.php on line 65. http://malybicebs.php5.sk/registrace.php
Tu je skript : <?php include "./header.php"; if(isset($_POST["tlacitko"])){ $nick = $_POST["nick"]; $heslo = $_POST["heslo"]; $heslo_kontrola = strlen($heslo); $potvrd_heslo = $_POST["potvrd_heslo"]; $email = $_POST["email"]; require_once 'config.php'; //Ověřujeme, zda jíž není uživatel se stejným loginem $q1 = mysql_query("SELECT * FROM `uzivatele` WHERE `nick`='".mysql_real_escape_string($nick)."'"); if(!$q1) { echo mysql_error() . ' - ' . mysql_errno(); } else { //Jestli existuje tak vyvedeme hlášení if(mysql_num_rows($q1)==1){ echo "Uživatelské jméno je obsazené, vyberte si jiné"; } else { if($heslo == $potvrd_heslo){ if($nick AND $email){ if($heslo_kontrola >= "6"){ $heslo = md5(md5($heslo)); $ip = $_SERVER["REMOTE_ADDR"]; $ip = md5(md5($ip)); $moznosti = array ("1","2","3","a","b","c","d"); $pocet_pismen = "6" ; for($i = 0; $i <= $pocet_pismen-1; $i++) { $nahoda = rand(0,count($moznosti)-1) ; @$hash .= $moznosti[$nahoda]; } $email_odesilatele = "jancokicinko@gmail.com" ; $od = "=?windows-1250?B?".base64_encode("ttetse čžčžčertzze")."?=" ; $od .= "<".$email_odesilatele.">"; $komu = $email; $hlavicka = "From: $od\n"; $hlavicka .= "MIME-Version: 1.0\nContent-Type: text/html; charset=windows-1250\nContent-Transfer-Encoding:8bit\r\n"; $predmet = "=?windows-1250?B?".base64_encode("Aktivační kód")."?="; $zprava = "Pre aktiváciu účtu kliknite na odkaz <a href='$adresa/autorizace.php?kod=$hash'>$adresa</a>."; mail($komu, $predmet, $zprava, $hlavicka); $zapis = mysql_query("INSERT INTO uzivatele SET nick='".mysql_real_escape_string($nick)."', heslo='".mysql_real_escape_string($heslo)."', email='".mysql_real_escape_string($email)."', ip='".mysql_real_escape_string($ip)."', opravneni='1',aktivacni_kod='".mysql_real_escape_string($hash)."',autorizovan='0' ;"); echo "Registrace proběhla v pořádku. Na email <strong>$email</strong> byl zaslán autorizační kód."; echo "Registrace proběhla v pořádku."; } else { echo "Heslo musí mít minimálně 6 znaků."; } } else { echo "Nezadal jsi nick nebo email."; } } else { echo "Hesla nejsou shodná!"; } } } } ?> <p> <form action="<?php $PHP_SELF; ?>" method="POST"> <table> <tr><td>Nick: </td><td><input type="text" name="nick" value="<?php echo htmlspecialchars ($_POST['nick'], ENT_QUOTES);?>"/></td></tr> <tr><td>Heslo: </td><td><input type="password" name="heslo" value="<?php echo htmlspecialchars ($_POST['heslo'], ENT_QUOTES);?>"/></td></tr> <tr><td>Potvrď Heslo: </td><td><input type="password" name="potvrd_heslo" value="<?php echo htmlspecialchars ($_POST['potvrd-heslo'], ENT_QUOTES);?>"/></td></tr> <tr><td>E-mail: </td><td><input type="text" name="email" value="<?php echo htmlspecialchars ($_POST['email'], ENT_QUOTES);?>"/></td></tr> <tr><td><input type="submit" name="tlacitko" value="Registrovat" /></td></tr> </table> </form> </p> <?php include "./footer.php"; ?> |
||
Hando Profil |
#23 · Zasláno: 13. 9. 2014, 11:39:07
Nemáš definovanou proměnnou, kterou používáš. :)
Zkoušel jsi hledat? Co s tím... |
||
bicebs Profil |
#24 · Zasláno: 13. 9. 2014, 13:42:47
Na začiatku som definoval premenné
$nick = $_POST["nick"]; $heslo = $_POST["heslo"]; $heslo_kontrola = strlen($heslo); $potvrd_heslo = $_POST["potvrd_heslo"]; $email = $_POST["email"]; |
||
bicebs Profil |
#25 · Zasláno: 13. 9. 2014, 17:36:02
Asi som to vyriešil. Toto
$nick = $_POST["nick"]; $heslo = $_POST["heslo"]; $heslo_kontrola = strlen($heslo); $potvrd_heslo = $_POST["potvrd_heslo"]; $email = $_POST["email"]; if(isset($_POST["tlacitko"])){ $nick = htmlspecialchars($_POST["nick"]); $heslo = htmlspecialchars($_POST["heslo"]); $heslo_kontrola = strlen(htmlspecialchars($heslo)); $potvrd_heslo = htmlspecialchars($_POST["potvrd_heslo"]); $email = htmlspecialchars($_POST["email"]); |
||
Časová prodleva: 10 let
|
0