проверка-catpha

systems

Registered
Добър вечер опитвам да си направя собствена catpha но срещам проблем
с изпълнението и като натисна бутона и полето е празно ми казва че полето е пълно как трябва да стане нямам си на представа моля помогнете:

ето ми формата:
HTML:
echo '<form name="register" method="POST">
<span>Коя  е столицата на българия:</span><br />
 <input type="text" name="register"><br> 
 <input type="submit" name="register" value="Създай акаунт" />
 </form>';

а ето и пхп кода ми:
PHP:
if($_POST['register'])
 { 
$str = $_POST['register'];
 if(isset($str) && $str = "София") {
                       echo 'answer is ok';
              }else {
                       echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";
              }

по принцип така работи:


PHP:
<?php
            $answer = $_POST['captcha'];
             if(isset($answer) && $answer == 681) {
                       echo 'answer is ok';
              }else {
                       echo "answer fail!";
              }
?>

но идеята ми е ако може да стане със букви отговора.
 
Код:
<input type="text" name="register"><br> 
 <input type="submit" name="register" value="Създай акаунт" />

Не може и двата елемента да имат едно и също име (или поне не трябва).

Отделно от това и присвояваш стойност в PHP кода, вместо да сравняваш.

Пробвай следното:

PHP:
echo '<form name="register_form" method="POST">
<span>Коя  е столицата на българия:</span><br />
 <input type="text" name="register"><br> 
 <input type="submit" name="register_button" value="Създай акаунт" />
 </form>';


PHP:
if($_POST['register_button'])
 { 
$str = $_POST['register'];
 if(isset($str) && $str == "София") {
                       echo 'answer is ok';
              }else {
                       echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";
              }
 
Пробвай така.
PHP:
if(isSet($_POST['register']))
{ 
	$str = $_POST['register'];
	if($str == "София") 
	{
		echo 'answer is ok';
	}
	else
	{
		echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";
	}
}
 
пич, това няма как да мине

<input type="text" name="register"><br>
<input type="submit" name="register" value="Създай акаунт" />

имаш два инпута с еднакви имена register дори да вкараш отговора винаги се замества от Създай акаунт

PHP:
echo '<form name="register" method="POST">
<span>Коя  е столицата на българия:</span><br />
 <input type="text" name="register"><br> 
 <input type="submit"  value="Създай акаунт" />
 </form>';



if(isset($_POST['register']) && !empty($_POST['register'])){ 
        $str = trim(stripslashes($_POST['register']));
        if($str == "капча") {
                //заявка за регистрация
        }else{
                echo "<div class='error'>Съжалявам но не сте отговорили на въпроса</div>";
        }
}
 
Да но се регистрирам независимо дали е попълнено полето или не
може и аз да греша някъде ето целия код:
PHP:
<?php
 mysql_connect ("localhost", "dbuser","dbpass") or die 
 (mysql_error());
 mysql_select_db ("db");
 echo '<form name="register" method="POST">
 <span>Потребителско име:</span><br />
 <input type="text" class="txt" name="user" /><br />
 <span>Парола:</span><br />
 <input type="password" class="txt" name="password" /><br />
 <span>Повтори парола:</span><br />
 <input type="password" class="txt" name="cpassword" /><br />
 <span>E-Mail:</span><br />
 <input type="text" class="txt" name="email" /><br /> 
 <span>Коя  е столицата на българия:</span><br />
 <input type="text" name="regs"><br> 
 <input type="submit" name="register" value="Промени парола" />
 </form>';
 if($_POST['register'])
 { 
$str = $_POST['regs'];
 if(isset($str) && $str == "София") {
                       echo;
              }else {
                       echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";
              }
$password = $_POST['password'];
$cpassword = $_POST['cpassword'];
if($password != $cpassword) {
echo "<div class='error'>Паролите не съвпадат</div>";
}else{
$password = pvpgn_hash($password);
$email = addslashes(htmlspecialchars($_POST['email']));
$user = addslashes(htmlspecialchars($_POST['user']));
if($user == NULL ||$oldpass == NULL ||$password == NULL ||$cpassword
== NULL || $email == NULL){
echo "<div class='error'>Съжалявам, но не сте попълнили всички полета</div>";
}else{
$query = mysql_query("SELECT * FROM `pvpgn_BNET` WHERE `acct_username` = '$acct_username'") or die (mysql_error());
$pvpgn_r = mysql_num_rows($query); // Проверява дали има нещо в базата данни
if ($pvpgn_r == 0) {
 echo "<div class='error'>Вече има регистриран потребител с това име в нашата база с данни</div>!";
}else{
$uid = "SELECT uid, MAX(uid) FROM pvpgn_BNET";
$acct_userid = mysql_query($uid) or die(mysql_error());
while($row = mysql_fetch_array($acct_userid)) {
$acct_userid = "". $row['type']. "" .$row['MAX(uid)'] +1;
}
$acct_passhash1 = pvpgn_hash($password);
$acct_reg_ip = $_SERVER['REMOTE_ADDR'];
$webacct_creation_time = time();
$time = time();
$nq1 = mysql_query ("INSERT INTO pvpgn_BNET (uid,acct_username, username, acct_userid,acct_passhash1,acct_email,acct_reg_ip,webacct_creation_time) VALUES
('$uid', '$user', '$user', '$acct_userid', '$password', '$email','$acct_reg_ip', '$time'") or die (mysql_error());
}
echo "<div class='success'>$_POST[user].Вие успешно регистрирахте вашия акаунт-паролата на вашия акаунт е: $_POST[password].</div>";
}
}
}
}
?>
 
Ами сложи логиката за създаване на потребител в if($str=='София')

В момента е след проверката и се създава независимо от нея.
 
Пробвай така но само си нагоди базата и прочие. Имаше някаква незнайна променлива $oldpass която махнах, паролата преминава през някаква фупкция $password = pvpgn_hash($password); която оставих незнам само от къде е щом не е инклудната и това е.
PHP:
<?php
mysql_connect ("localhost", "dbuser","dbpass") or die (mysql_error());
mysql_select_db ("db");
//Проверка за натиснат бутон сюбмит. 
if(isSet($_POST['submit']))
{ 
	$eror = 0;
	$str = addslashes(htmlspecialchars($_POST['regs']));
	$password = addslashes(htmlspecialchars($_POST['password']));
	$cpassword = addslashes(htmlspecialchars($_POST['cpassword']));
	$email = addslashes(htmlspecialchars($_POST['email']));
	$user = addslashes(htmlspecialchars($_POST['user']));
	if(empty($str))
	{
		echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";
		$eror++;
	}
	if(empty($password))
	{
		echo "<div class='error'>Въведете парола</div>";
		$eror++;
	}
	if(empty($cpassword))
	{
		echo "<div class='error'>Въведете паролата повторно</div>";
		$eror++;
	}
	if(empty($email))
	{
		echo "<div class='error'>Въведете eмайл</div>";
		$eror++;
	}
	if(empty($user))
	{
		echo "<div class='error'>Въведете потребител</div>";
		$eror++;
	}
	if($password != $cpassword) 
	{
		echo "<div class='error'>Паролите не съвпадат</div>";
		$eror++;
	}
	if($str != "София") 
	{
        echo "<div class='error'>Това не е столицата на България</div>";
		$eror++;
    }
	if($eror == 0)
	{
		$password = pvpgn_hash($password); // ????
		$query = mysql_query("SELECT * FROM `pvpgn_BNET` WHERE `acct_username` = '$acct_username'") or die (mysql_error());
		$pvpgn_r = mysql_num_rows($query); // Проверява дали има нещо в базата данни
		if ($pvpgn_r == 0) 
		{
			echo "<div class='error'>Вече има регистриран потребител с това име в нашата база с данни</div>!";
		}
		else
		{
			$uid = "SELECT uid, MAX(uid) FROM pvpgn_BNET";
			$acct_userid = mysql_query($uid) or die(mysql_error());
			while($row = mysql_fetch_array($acct_userid)) 
			{
				$acct_userid = "". $row['type']. "" .$row['MAX(uid)'] +1;
			}
			$acct_passhash1 = pvpgn_hash($password);
			$acct_reg_ip = $_SERVER['REMOTE_ADDR'];
			$webacct_creation_time = time();
			$time = time();
			$nq1 = mysql_query ("INSERT INTO pvpgn_BNET (uid,acct_username, username, acct_userid,acct_passhash1,acct_email,acct_reg_ip,webacct_creation_time) VALUES
			('$uid', '$user', '$user', '$acct_userid', '$password', '$email','$acct_reg_ip', '$time'") or die (mysql_error());
		}
		echo "<div class='success'>$user .Вие успешно регистрирахте вашия акаунт-паролата на вашия акаунт е: $password.</div>";
		
	}
}
?>
 <form name="registerform" method="POST">
 <span>Потребителско име:</span><br />
 <input type="text" class="txt" name="user" /><br />
 <span>Парола:</span><br />
 <input type="password" class="txt" name="password" /><br />
 <span>Повтори парола:</span><br />
 <input type="password" class="txt" name="cpassword" /><br />
 <span>E-Mail:</span><br />
 <input type="text" class="txt" name="email" /><br /> 
 <span>Коя  е столицата на българия:</span><br />
 <input type="text" name="regs"><br> 
 <input type="submit" name="submit" value="Промени парола" />
 </form>
 
Сега работи но немога да разбера в старата форма а и в тази като е така:
ми казва като опитам да регна потребител че името е регистрирано вече и нерегистрира но иначе въпроса работи както трябва:
PHP:
if(isSet($_POST['submit']))

{ 

	$eror = 0;

	$str = addslashes(htmlspecialchars($_POST['regs']));

	$password = addslashes(htmlspecialchars($_POST['password']));

	$cpassword = addslashes(htmlspecialchars($_POST['cpassword']));

	$email = addslashes(htmlspecialchars($_POST['email']));

	$user = addslashes(htmlspecialchars($_POST['user']));

	if(empty($str))

	{

		echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";

		$eror++;

	}

	if(empty($password))

	{

		echo "<div class='error'>Въведете парола</div>";

		$eror++;

	}

	if(empty($cpassword))

	{

		echo "<div class='error'>Въведете паролата повторно</div>";

		$eror++;

	}

	if(empty($email))

	{

		echo "<div class='error'>Въведете eмайл</div>";

		$eror++;

	}

	if(empty($user))

	{

		echo "<div class='error'>Въведете потребител</div>";

		$eror++;

	}

	if($password != $cpassword) 

	{

		echo "<div class='error'>Паролите не съвпадат</div>";

		$eror++;

	}

	if($str != "София") 

	{

        echo "<div class='error'>Това не е столицата на България</div>";

		$eror++;

    }

	if($eror == 0)

	{

		$password = pvpgn_hash($password); // ????

		$query = mysql_query("SELECT * FROM `pvpgn_BNET` WHERE `acct_username` = '$acct_username'") or die (mysql_error());

		$pvpgn_r = mysql_num_rows($query); // Проверява дали има нещо в базата данни

		if ($pvpgn_r == 0) 

		{

			echo "<div class='error'>Вече има регистриран потребител с това име в нашата база с данни</div>!";

		}

		else

		{


а така регистрира но проверката коя е столицата на българия неработи
тоест с нея без нея правя регистрация:

PHP:
if(isSet($_POST['submit']))

{ 

	$eror = 0;

	$str = addslashes(htmlspecialchars($_POST['regs']));

	$password = addslashes(htmlspecialchars($_POST['password']));

	$cpassword = addslashes(htmlspecialchars($_POST['cpassword']));

	$email = addslashes(htmlspecialchars($_POST['email']));

	$user = addslashes(htmlspecialchars($_POST['user']));

	if(empty($str))

	{

		echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";

		$eror++;

	}

	if(empty($password))

	{

		echo "<div class='error'>Въведете парола</div>";

		$eror++;

	}

	if(empty($cpassword))

	{

		echo "<div class='error'>Въведете паролата повторно</div>";

		$eror++;

	}

	if(empty($email))

	{

		echo "<div class='error'>Въведете eмайл</div>";

		$eror++;

	}

	if(empty($user))

	{

		echo "<div class='error'>Въведете потребител</div>";

		$eror++;

	}

	if($password != $cpassword) 

	{

		echo "<div class='error'>Паролите не съвпадат</div>";

		$eror++;

	}

	if($str != "София") 

	{

        echo "<div class='error'>Това не е столицата на България</div>";

		$eror++;

    }

	if($eror == 0)

	{
               }

		else

		{
		$password = pvpgn_hash($password); // ????

		$query = mysql_query("SELECT * FROM `pvpgn_BNET` WHERE `acct_username` = '$acct_username'") or die (mysql_error());

		$pvpgn_r = mysql_num_rows($query); // Проверява дали има нещо в базата данни

		if ($pvpgn_r == 0) 

		{

			echo "<div class='error'>Вече има регистриран потребител с това име в нашата база с данни</div>!";

наи интересното е че немога да схвана защо ми създава проблеми проверката за регистриран потребител.
 
Замени
$query = mysql_query("SELECT * FROM `pvpgn_BNET` WHERE `acct_username` = '$acct_username'") or die (mysql_error());
с
$query = mysql_query("SELECT * FROM `pvpgn_BNET` WHERE `acct_username` = '$user'") or die (mysql_error());
 
Така става ли?
PHP:
<?php
mysql_connect ("localhost", "dbuser","dbpass") or die (mysql_error());
mysql_select_db ("db");
//Проверка за натиснат бутон сюбмит. 
if(isSet($_POST['submit']))
{ 
        $eror = 0;
        $str = addslashes(htmlspecialchars($_POST['regs']));
        $password = addslashes(htmlspecialchars($_POST['password']));
        $cpassword = addslashes(htmlspecialchars($_POST['cpassword']));
        $email = addslashes(htmlspecialchars($_POST['email']));
        $user = addslashes(htmlspecialchars($_POST['user']));
		function verifyUsername($user) 
		{        
			$chek = mysql_query("SELECT * FROM `pvpgn_BNET` WHERE `acct_username` = '{$user}';")or die(mysql_error());        
			return mysql_num_rows($chek)? 1 : 0; 
		}
        if(empty($str))
        {
                echo "<div class='error'>Съжалявам но не сте попълнили въпроса</div>";
                $eror++;
        }
        if(empty($password))
        {
                echo "<div class='error'>Въведете парола</div>";
                $eror++;
        }
        if(empty($cpassword))
        {
                echo "<div class='error'>Въведете паролата повторно</div>";
                $eror++;
        }
        if(empty($email))
        {
                echo "<div class='error'>Въведете eмайл</div>";
                $eror++;
        }
        if(empty($user))
        {
                echo "<div class='error'>Въведете потребител</div>";
                $eror++;
        }
        if($password != $cpassword) 
        {
                echo "<div class='error'>Паролите не съвпадат</div>";
                $eror++;
        }
        if($str != "София") 
        {
			echo "<div class='error'>Това не е столицата на България</div>";
            $eror++;
		}
		//Викане на функцията за проверка на съществуващ потребител.
		if(VerifyUsername($user) == 1) 
		{
			echo "<div class='error'>Вече има регистриран потребител с това име в нашата база с данни</div>!";
            $eror++;
		}
        if($eror == 0)
        {
                $uid = "SELECT uid, MAX(uid) FROM pvpgn_BNET";
                $acct_userid = mysql_query($uid) or die(mysql_error());
                while($row = mysql_fetch_array($acct_userid)) 
                {
                    $acct_userid = "". $row['type']. "" .$row['MAX(uid)'] +1;
                }
                $acct_passhash1 = pvpgn_hash($password);
                $acct_reg_ip = $_SERVER['REMOTE_ADDR'];
                $webacct_creation_time = time();
                $time = time();
                $nq1 = mysql_query ("INSERT INTO pvpgn_BNET (uid,acct_username, username, acct_userid,acct_passhash1,acct_email,acct_reg_ip,webacct_creation_time) VALUES
                ('$uid', '$user', '$user', '$acct_userid', '$password', '$email','$acct_reg_ip', '$time'") or die (mysql_error());
                echo "<div class='success'>$user .Вие успешно регистрирахте вашия акаунт-паролата на вашия акаунт е: $password.</div>";
                
        }
}
?>
 <form name="registerform" method="POST">
 <span>Потребителско име:</span><br />
 <input type="text" class="txt" name="user" /><br />
 <span>Парола:</span><br />
 <input type="password" class="txt" name="password" /><br />
 <span>Повтори парола:</span><br />
 <input type="password" class="txt" name="cpassword" /><br />
 <span>E-Mail:</span><br />
 <input type="text" class="txt" name="email" /><br /> 
 <span>Коя  е столицата на българия:</span><br />
 <input type="text" name="regs"><br> 
 <input type="submit" name="submit" value="Промени парола" />
 </form>
Изтрий потребителя ако вече е регистриран в базата.
 
Ти изобщо следиш ли си полетата и какви глупости пишеш в кода? Преди мен ти дадоха насоки,пренаписах ти цялата система и накрая пак си омешал всичко... Копираш на посоки без явно да вникваш в кода, който ти се праща.
 
аз от самото начало го бях направил в този му вид но ми даде бял екран веднага щом смених проверката за регистриран потребител
извинявам се че още в самото начало не го дадох в този вид
в които аз съм го направил.
 

Back
Горе