#1 2012-06-12 19:09:00

Thenightmare
Člen
Registrován: 2012-06-09
Příspěvky: 13

Re: Jeden malý problém

Zdravím,

mám jeden dosť zaujímavý problém. Mám na svojom webe

thenightmare.6f.sk/design-a/register.php

registráciu užívateľa. na registráciu používam klasický formulár.

 <form name="register" action="register_s.php" method="POST"><table>
      <tr><td>Meno*:</td><td><input type="text" name="login" size="12" ></td></tr>
      <tr><td>Heslo*:</td><td><input type="text" name="heslo" size="12" ></td></tr>
      <tr><td>Overiť heslo*:</td><td><input type="text" name="heslo2" size="12" ></td></tr>
      <tr><td>E-mail*:</td><td><input type="text" name="mail" size="12" ></td></tr>
      <tr><td>Overiť E-mail*:</td><td><input type="text" name="mail_check" size="12" ></td></tr>
      <tr><td>Vek:</td><td><input type="text" name="vek" size="12" ></td></tr>
      
      <tr>
        <td>
          <input type="hidden" name="random" value="<?= $captchas->random () ?>" />
           
        </td>
      </tr>
      <tr>
        <td>
          CAPTCHA*:
        </td>
        <td>
          <input name="password" size="6" />
        </td>
      </tr>
      <tr>
        <td>
        </td>
        <td>
          <?= $captchas->image () ?> <a href="javascript:captchas_image_reload('captchas.net')">Znovu načítaj captcha</a>
          <br>
        </td>
      </tr>
      <tr>
        <td>
        </td>
        <td>
          <input type="checkbox" name="podmienky" value="1" />  Súhlasím s <a href="podmienky.php"> podmienkami </a>*
        </td>
      </tr>
      <tr>
        <td>
        </td>
        <td>
          <input type="submit" value="Submit" />
        </td>
      </tr>
   
      
      </table>
      
     </form>

a dáta získavam nasledovne:

$password      = $_POST['password'];
$random_string = $_POST['random'];
$login = $_POST['login'];
$heslo = $_POST['heslo'];
$heslo_check = $_POST['heslo2'];
$email = $_POST['mail'];
$email_check = $_POST['mail_check'];
$vek = $_POST['vek'];
$podmienky=$_POST['podmienky'];

problém však je v tom že z inputu "heslo2" nezískam žiadne údaje. Niekoľkokrát som skontroloval názvy a už si fakt neviem rady  :evil:  :evil:

Vedel by mi tu niekto pomôcť?

Offline

#2 2012-06-12 19:16:54

Martin
Endora rádce
Místo: Plzeň
Registrován: 2011-01-19
Příspěvky: 1,375
Web

Re: Jeden malý problém

Prvně prosím opravte diakritiku na webu, reklama není čitelná.


Nejnovější článek: www.zeminem.cz ...
Černé díry jsou místa, kde Bůh dělil nulou...
Endora plugin!

Offline

#3 2012-06-12 19:22:59

l564
Člen
Registrován: 2011-03-12
Příspěvky: 292

Re: Jeden malý problém

<mimo-tema>
Uprav si toto:

<?= $captchas->image () ?> <a href="javascript:captchas_image_reload('captchas.net')">Znovu načítaj captcha</a>

Nepoužívej <?= ale <?php
</mimo-tema>

Koukám že nemáte rád svůj web když je možnost smazat celou vaší databázy!
Využívejte funkci - mysql_real_escape_string()

$password      	= mysql_real_escape_string($_POST['password']);
$random_string 	= mysql_real_escape_string($_POST['random']);
$login 			= mysql_real_escape_string($_POST['login']);
$heslo 			= mysql_real_escape_string($_POST['heslo']);
$heslo_check 	= mysql_real_escape_string($_POST['heslo2']);
$email 			= mysql_real_escape_string($_POST['mail']);
$email_check 	= mysql_real_escape_string($_POST['mail_check']);
$vek 			= mysql_real_escape_string($_POST['vek']);
$podmienky		= mysql_real_escape_string($_POST['podmienky']);

Jinak by chyba být nebyla - alespoň já nevidím

Offline

#4 2012-06-12 20:17:22

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: Jeden malý problém

Asi bych začal u stránky samotné.

vložit správné doctype, vložit správné meta-tagy
<meta http-equip="content-type" content="text/html; charset=utf-8"> - není určitě správně! Proto nesprávné zobrazení kódování a taktéž možný problém POST.
<meta http-equiv="content-type" content="text/html; charset=utf-8"> - je správně!!!

Nevím jak vypadá skript, který vyhodnocuje data, ale není v něm náhodou někde proměnná heslo2 měněna???

Co mne ve formuláři trochu překvapuje, je otevřený text při zadávání hesla (u inputu - type="text" místo type="password")

Co se týče bezpečnosti - naprostý souhlas s l564


1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!

stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM

Problémy spojené s provozem služeb Endora, řešte na tomto fóru.

Offline

#5 2012-06-13 07:44:41

Thenightmare
Člen
Registrován: 2012-06-09
Příspěvky: 13

Re: Jeden malý problém

čo sa týka zabezpečenia: web je zatial vo vývoji, takže som zabezpečenie zatial neriešil - prvoradá je pre mna funkcia potom možno rozširovať aj zabezpečenie :-). Otvorený text je tam kvôli tomu že som hľadal chybu pri porovnávaní hesiel som dostával zakaždým false - preto som zmenil password na text - samozrejme že potom to prehodím naspäť na password. do heslo2 vôbec nezasahujem. Na to že táto premenná neobsahuje žiadnu hodnotu som prišiel tým že som si ju po priradení hodnoty z formuláru vypísal.

Offline

#6 2012-06-13 08:11:08

l564
Člen
Registrován: 2011-03-12
Příspěvky: 292

Re: Jeden malý problém

Můžes sem vložit celý php formulář?

Offline

#7 2012-06-17 16:57:05

Thenightmare
Člen
Registrován: 2012-06-09
Příspěvky: 13

Re: Jeden malý problém

<?php
include("db.php");
require 'CaptchasDotNet.php';
$con = mysql_connect($db_server, 'registracia', $db_pass);
                     if (!$con) {
                      echo "Chyba:".mysql_error();
                      }
                      $db_select = mysql_select_db("nepotrvrdeny");

// See query.php for documentation

$captchas = new CaptchasDotNet ('thenightmare', 'lT3So7jfrcN9rikFEdRP2EFr2NeIzpcUGpp1wMm5',
                                'captcha','3600',
                                'abcdefghkmnopqrstuvwxyz','6',
                                '240','80','000088');

$password         = mysql_real_escape_string($_POST['password']);
$random_string    = mysql_real_escape_string($_POST['random']);
$login          = mysql_real_escape_string($_POST['login']);
$heslo          = mysql_real_escape_string($_POST['heslo']);
$heslo_check    = mysql_real_escape_string($_POST['heslo2']);
$email          = mysql_real_escape_string($_POST['mail']);
$email_check    = mysql_real_escape_string($_POST['mail_check']);
$vek          = mysql_real_escape_string($_POST['vek']);
$podmienky      = mysql_real_escape_string($_POST['podmienky']);
?>

<html>
 <head>
  <title>The Nightmare</title>

   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta http-equiv="Content-Language" content="sk">
   <meta name="description" content="">
   <meta name="keywords" content="">

   <link rel="stylesheet" type="text/css" href="/design-a/design.css">
  <script language="Javascript">
        image1=new Image
        image1.src="forumlink_a.gif"
        image2=new Image
        image2.src="forumlink_b.gif"
    </script>
  </head>

  <body>
   <div id="menu_top">
    <?php
    
    include("top_menu.html");
    ?>
   </div>
   <div id="main">
   <div class="head"><h1>Registrácia hráčskeho profilu</h1></div>
   <p>
   <?php
   $return_skript = '<script type="text/javascript" language="JavaScript1.1">
      <!--
      setTimeout(function() {location.replace("register.php");},1250);
        
      //-->
    </script>';
  // Check the random string to be valid and return an error message
  // otherwise.
  if (!$captchas->validate ($random_string))
  {
    echo 'Session key (random) neexistuje vrátťe sa a znova načítajte formulár.<br/>';
    echo $return_skript;
    
  }
  // Check, that the right CAPTCHA password has been entered and
  // return an error message otherwise.
  elseif (!$captchas->verify ($password))
  {
    echo 'Nesprávne opísaný CAPTCHA kód!';
    echo $return_skript;
  }
  // Return a success message
  else
 
  {
    if ($login=='' OR $heslo=='' OR $heslo_check='' OR $email=='' OR $email_check=='' OR $podmienky=='') {
    echo 'Všetky polia označené * musia byť vyplnené!!!';
    echo $return_skript;
    }
    
    else {
    $porovnanie = strcmp($heslo, $heslo_check);
    echo $heslo." ".$heslo_check;
    echo $porovnanie;
        if ($porovnanie != 0) {
        echo "Heslá sa nezhodujú!";
        echo $return_skript;
        //TO DO: Skontrolovať podmienku
        }
        else {
              $heslo = MD5($heslo);
              $mail_dlzka = strlen($email);
              for ($i=0; $i < $mail_dlzka; $i++) {
              if ($email[$i]=="@") {
              $overenie++;
              }
              if ($overenie == 1 AND $email[$i]==".")  {
                  $overenie++;
              }
              }
                  if ($overenie<2) {
                  echo "E-mail nemá správny formát!";
                  echo $return_skript;
                  }
                  else {
                  if ($mail != $mail_check) {
                  echo "E-maily sa nezhodujú!";
                  echo $return_skript;
                  }
                  else {
                  $sid = MD5(rand(1,300));
                     
                      if (!$db_select) {
                      echo "Chyba:".mysql_error();
                      }
                      else {
			

                      $overenie1 = mysql_query("SELECT * FROM nepotvrdeny WHERE meno='".$login."'");
                      while($row = mysql_fetch_array($overenie1))
                      {
                       $je_to_nakkt = $row['login'];
                        }
                        $overenie1_1 = mysql_query("SELECT * FROM nepotvrdeny WHERE email='".$email."'");
                      while($row = mysql_fetch_array($overenie1))
                      {
                       $ojebava = $row['mail'];
                        }
                        
                       $db_select = mysql_select_db("logins");
                      if (!$db_select) {
                      echo "Chyba:".mysql_error();
                      }
                      $overenie2 = mysql_query("SELECT * FROM uzivatelia WHERE login='".$login."'");
                      while($row = mysql_fetch_array($overenie2))
                      {
                       $je_to_nakkt = $row['login'];
                      }
                      $overenie2_2 = mysql_query("SELECT * FROM uzivatelia WHERE email='".$email."'");
                      echo mysql_error();
                      while($row = mysql_fetch_array($overenie2_2))
                      {
                       $ojebava = $row['id'];
                      }
                      if (!empty($je_to_nakkt)) {
                       echo "Zadané užívatelské meno už existuje";
                       echo $return_skript;
                      }
                      elseif (!empty($ojebava)) {
                       echo "Zadaný e-mail už bol pri registrácii použitý";
                       echo $return_skript;
                      }
                      
                      else {
                      $db_select = mysql_select_db("nepotrvrdeny");
                      if (!$db_select) {
                      echo "Chyba:".mysql_error();
                      }
                     $query = mysql_query("INSERT INTO nepotvrdeny SET meno='".$login."', heslo='".$heslo."', email='".$email."', vek='".$vek."',sid='".$sid."'");
                      if (!$query) {
                      echo "Chyba:".mysql_error();
                      }
                      else {
                        
$envelope["from"] = "registracia@thenightmare.6f.sk";
$msgpart["type"] = TYPETEXT; $msgpart["subtype"] = "plain";
$stranka = ' 
  
      Aktivacia registracie 
    Dakujeme ze ste sa registrovali na The nightmare. Registracia vsak este nie je uplna a je potrebne kliknut na nasledujuci odkaz: 
   http://www.thenightmare.6f.sk/game/auth/new_user.php?login='.$login.'&sid='.$sid;
$msgpart["contents.data"] = $stranka;
$msgbody[1] = $msgpart;
$message = imap_mail_compose($envelope, $msgbody);
list($msgheader,$msgbody)=split("\r\n\r\n",$message, 2);
$subject = "Aktivacia registracie";
$to = $email;
$result=imap_mail($to,$subject,$msgbody,$msgheader);
if (!$result)   {
echo "Chyba pri registrácii, skúste to neskôr";
}

 else {
  echo 'Registrácia prebehla úspešne. Na Vašu e-mailovú adresu bol zaslaný potvrdzujúci e-mail. Aktiváciu je potrebné vykonať do 0:00 inak bude zmazaná.';
 }
 }
                      }
                       }
                        mysql_close();
                       }
                      
                  }
        }
        
    } 
  }
  
?>
   </p>
    </div>
    
  
   <div id="ad"><endora></div>
  </body>
</html>

Offline

#8 2012-06-17 18:14:15

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: Jeden malý problém

chyby:
Zkuste si nechat vypsat heslo_check před podmínkou a po ní!

ř. 82...
if ($login=='' OR $heslo=='' OR $heslo_check='' OR $email=='' OR $email_check=='' OR $podmienky=='') {

chybně: $heslo_check=''
správně: $heslo_check==''
mimochodem je to nejčastější chyba, nevěšte hlavu...

    if ($login=='' OR $heslo=='' OR $heslo_check=='' OR $email=='' OR $email_check=='' OR $podmienky=='') {

Trochu krkolomné ověření platné email adresy, ale další chybu jsem prozatím neobjevil...
Zkuste:

 if (ereg('^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$',$email)):
   return 1; // spravna struktura
 else:
   return 0; // chybna struktura
 endif;

1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!

stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM

Problémy spojené s provozem služeb Endora, řešte na tomto fóru.

Offline

#9 2012-06-18 10:18:32

Thenightmare
Člen
Registrován: 2012-06-09
Příspěvky: 13

Re: Jeden malý problém

Ďakujem už to funguje...aj ked nechápem ako som si to nemohol nevšimnúť  lol

Offline

Zápatí

Založeno na FluxBB | CZ a SK