Проблем с код за сигурност

Dizasterr

Registered
Здравейте! Написах си този код, но и да сгреша кода ми изписва Правилен код. Къде ми е грешката ?
Код:
<?php
	require_once("connection.php");
	mysql_query("SET NAMES cp1251");
	session_start();
	
	for($i = 0; $i < 5; $i++) {
	
		$string = (int)rand(10000, 99999);
		$_SESSION['captcha']=$string;
		
	}
	
	print $string;
	
	echo "<form method='post' action=''>";
	echo "<input type='text' name='captcha'>";
	echo "<br/>";
	echo "<input type='submit' name='submit' value='Провери'>";
	echo "<br/>";
	echo "</form>";
	
	if(isset($_POST['submit'])) {
	$code=$_POST['captcha'];
	
	if(empty($code)) {
	die("Не сте попълнили кода!");
	}
	
	if($code == $_SESSION['captcha']) {
	echo "Грешен код!";
	}else{
	echo "Правилен код!";
	}
	}
?>
 
<?php
require_once("connection.php");
mysql_query("SET NAMES cp1251");
session_start();

for($i = 0; $i < 5; $i++) {

$string = (int)rand(10000, 99999);
$_SESSION['captcha']=$string;

}

print $string;

echo "<form method='post' action=''>";
echo "<input type='text' name='captcha'>";
echo "<br/>";
echo "<input type='submit' name='submit' value='Провери'>";
echo "<br/>";
echo "</form>";

if(isset($_POST['submit'])) {
$code=$_POST['captcha'];

if(empty($code)) {
die("Не сте попълнили кода!");
}

if($code == $_SESSION['captcha']) {
echo "Правилен код !";
}else{
echo "Грешен код !";
}
}
?>
 
Стана, но и да въвеждам правилен код, ми изписва грешен. Това става заради сесията. При всеки рефреш тя взема стойността на променливата string, а въведеното в полето е стария код.
 
Код:
<?php
   require_once("connection.php");
   mysql_query("SET NAMES cp1251");
   session_start();
   if(isset($_POST['submit'])) {
   $code=$_POST['captcha'];
   
   if(empty($code)) {
   die("Не сте попълнили кода!");
   }
   
   if($code == $_SESSION['captcha']) {
   echo "Правилен код!";
   }else{
   echo "Грешен код!"; 
   }
   echo "<br />\n";
   }
    $string = (int)rand(10000, 99999);
    $_SESSION['captcha']=$string;

   print $string;
   
   echo "<form method='post' action=''>";
   echo "<input type='text' name='captcha'>";
   echo "<br/>";
   echo "<input type='submit' name='submit' value='Провери'>";
   echo "<br/>";
   echo "</form>";
   

?>
Дава ти че е грешен кода защото ти първо предефинираш сесията пък после проверяваш дали ти е верен кода
 
marian каза:
Код:
<?php
   require_once("connection.php");
   mysql_query("SET NAMES cp1251");
   session_start();
   if(isset($_POST['submit'])) {
   $code=$_POST['captcha'];
   
   if(empty($code)) {
   die("Не сте попълнили кода!");
   }
   
   if($code == $_SESSION['captcha']) {
   echo "Правилен код!";
   }else{
   echo "Грешен код!"; 
   }
   echo "<br />\n";
   }
    $string = (int)rand(10000, 99999);
    $_SESSION['captcha']=$string;

   print $string;
   
   echo "<form method='post' action=''>";
   echo "<input type='text' name='captcha'>";
   echo "<br/>";
   echo "<input type='submit' name='submit' value='Провери'>";
   echo "<br/>";
   echo "</form>";
   

?>
Дава ти че е грешен кода защото ти първо предефинираш сесията пък после проверяваш дали ти е верен кода
Благодаря! И преди да ти дам точката искам да попитам за explode разделих си няколко имена от базата данни, но има ли начин да ги извежда без Array( [0] => Име) и така нататък ?
 
Код:
<?php
$imena = "Ivan Pesho Kire";
$imena = explode(" ",$imena);
echo implode("<br />\n",$imena);
echo "<br />\n2ri variant<br />\n";
for ($i=0;$i<count($imena);$i++) {
echo $imena[$i];
if ($i!==count($imena)-1) echo "<br />\n";
}
?>
Нещо такова ли?
 
marian каза:
Код:
<?php
$imena = "Ivan Pesho Kire";
$imena = explode(" ",$imena);
echo implode("<br />\n",$imena);
echo "<br />\n2ri variant<br />\n";
for ($i=0;$i<count($imena);$i++) {
echo $imena[$i];
if ($i!==count($imena)-1) echo "<br />\n";
}
?>
Нещо такова ли?
Отново благодаря! Не се бях сетил да изпозлвам implode +1. :?:
 

Back
Горе