Nejste přihlášeni
Stránky 1
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
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
<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
Zdrojový kód | Změř si rychlost webu
Offline
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
č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
Offline
<?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
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
Ďakujem už to funguje...aj ked nechápem ako som si to nemohol nevšimnúť
Offline
Stránky 1