« 1 2
Autor Zpráva
bicebs
Profil
anonymníí:
Stačí takto : <form method="POST">
lionel messi
Profil
bicebs:
Jo.
anonymníí
Profil *
bicebs:
Pokud zpracování probíhá na téže stránce, tak ano.
anonymníí
Profil *
bicebs:
Pokud zpracování probíhá na téže stránce, tak ano.
bicebs
Profil
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
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";
?>
Namiesto meno, heslo a databáza mám priamo napísané skutočné údaje.
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
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
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
bicebs:
Už si tu správnu variantu raz ukázal.
bicebs
Profil
lionel messi:
Ale tu to je $nick_profil a ta to bol iba nick.
lionel messi
Profil
bicebs:
Ale tu to je $nick_profil a ta to bol iba nick.
<?php echo htmlspecialchars($nick_profil, ENT_QUOTES); ?>
bicebs
Profil
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
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
mimochodec:
Chcel som povedať že sa mi to nechce prepisovať.
lionel messi
Profil
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
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
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
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
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
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
Nemáš definovanou proměnnou, kterou používáš. :)
Zkoušel jsi hledat? Co s tím...
bicebs
Profil
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
Asi som to vyriešil. Toto
$nick = $_POST["nick"];
    $heslo = $_POST["heslo"];
    $heslo_kontrola = strlen($heslo);
    $potvrd_heslo = $_POST["potvrd_heslo"];
    $email = $_POST["email"];
som nahradil týmto :
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"]);
Skúšal som tam vložiť html ale napísalo mi to iba obyčajný text. Či som escapoval databázy dobre neviem vyskúšajte ich a url zatiaľ nemám zabezpečené ale idem na to.
« 1 2

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0