Hello, I have a simple registration form, where repeated records can not exist in the cpf
field and also in the resposta(cupom)
field. The validation of cpf
is ok and the data does not duplicate in MySQL, but the verification and return of the errors is faulty. Here is the code:
<?php require_once('Connections/conecta.php'); ?>
<?php
ini_set('display_errors', 0 );
error_reporting(0);
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
$data = date("Y-m-d");
function validaCPF($cpf)
{ // Verifiva se o número digitado contém todos os digitos
$cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);
// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
{
return false;
}
else
{ // Calcula os números para verificar se o CPF é verdadeiro
for ($t = 9; $t < 11; $t++) {
for ($d = 0, $c = 0; $c < $t; $c++) {
$d += $cpf{$c} * (($t + 1) - $c);
}
$d = ((10 * $d) % 11) % 10;
if ($cpf{$c} != $d) {
return false;
}
}
return true;
}
}
$cpf = $_POST['cpf'];
$resposta = $_POST['resposta'];
$search = mysql_query("SELECT * FROM membros WHERE cpf = '$cpf' OR resposta = '$resposta'");
if(@mysql_num_rows($search) >= 1){
echo '<p align="center">Registro não efetuado!<br /> Cada CPF ou Cupom, só pode ser cadastrado uma vez. O CPF precisa ser válido.</p>';
}
elseif ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
if(isset($_POST['btvalidar']))
{// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima
$cpf_enviado = validaCPF($_POST['cpf']);
// Verifica a resposta da função e exibe na tela
if($cpf_enviado == true) {
echo "CPF Válido";
$insertSQL = sprintf("INSERT INTO membros (id, nome, cpf, email, resposta, data) VALUES (%s, %s, %s, %s, %s, NOW())",
GetSQLValueString($_POST['id'], "int"),
GetSQLValueString($_POST['nome'], "text"),
GetSQLValueString($_POST['cpf'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['resposta'], "text"),
GetSQLValueString($_POST['data'], "date"));
mysql_select_db($database_conecta, $conecta);
$Result1 = mysql_query($insertSQL, $conecta) or die(mysql_error());
echo '<p align="center">Registro efetuado com sucesso!</p>';
}
elseif($cpf_enviado == false)
echo "CPF Inválido.";
}
}
// Verifica se o botão de validação foi acionado
/*function srange ($s) {
//preg_match_all("/([0-9]{1,2})-?([0-9]{0,2}) ?,?;?/", $s, $a);
$n = array ();
foreach ($a[1] as $k => $v) {
$n = array_map(function($n) { return sprintf('RS%03d', $n); }, range(0000001, 1000000));
}
return ($n);
}
$s = 'RS0000001-RS1000000';
print_r(srange($n));*/
//$k = array(range(1000000,9000000));
// print_r($k);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>
<body>
<script type="text/javascript">
function validaCampo()
{
if(document.form1.nome.value=="")
{
alert("O Campo nome é obrigatório!");
return false;
}
else
if(document.form1.cpf.value=="")
{
alert("O Campo CPF é obrigatório!");
return false;
}
else
if(document.form1.email.value=="")
{
alert("O Campo email é obrigatório!");
return false;
}
else
if(document.form1.resposta.value=="")
{
alert("O Campo Cupom é obrigatório!");
return false;
}
else
if(document.form1.telefone.value=="")
{
alert("O Campo Telefone é obrigatório!");
return false;
}
else
if(document.form1.bairro.value=="")
{
alert("O Campo Bairro é obrigatório!");
return false;
}
else
if(document.form1.pais.value=="")
{
alert("O Campo país é obrigatório!");
return false;
}
else
if(document.form1.login.value=="")
{
alert("O Campo Login é obrigatório!");
return false;
}
else
if(document.form1.senha.value=="")
{
alert("Digite uma senha!");
return false;
}
else
return true;
}
<!-- Fim do JavaScript que valida os campos obrigatórios! -->
</script>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1" onsubmit="return validaCampo(); return false;">
<table align="center">
<tr valign="baseline">
<td nowrap="nowrap" align="right">Nome:</td>
<td><input type="text" name="nome" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Cpf:</td>
<td><input type="text" name="cpf" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Email:</td>
<td><input type="text" name="email" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Resposta:</td>
<td><input type="text" name="resposta" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td><input name="btvalidar" type="submit" id="btvalidar" value="Inserir registro" /></td>
</tr>
</table>
<input type="hidden" name="id" value="" />
<input type="hidden" name="data" value="" />
<input type="hidden" name="MM_insert" value="form1" />
</form>
<p> </p>
<?php
?>
</body>
</html>
And the MySQL table:
--
-- Estrutura para tabela 'membros'
--
CREATE TABLE IF NOT EXISTS 'membros' (
'id' int(5) NOT NULL AUTO_INCREMENT,
'nome' varchar(255) NOT NULL,
'email' varchar(255) NOT NULL,
'cpf' varchar(11) NOT NULL,
'data' date NOT NULL,
'resposta' varchar(255) NOT NULL,
PRIMARY KEY ('id'),
UNIQUE KEY 'cpf' ('cpf'),
UNIQUE KEY 'resposta' ('resposta')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
--
-- Fazendo dump de dados para tabela 'membros'
--
INSERT INTO 'membros' ('id', 'nome', 'email', 'cpf', 'data', 'resposta') VALUES
(32, 'Marcos Felipe', '[email protected]', '22554477889', '2014-09-26', 'RS0000001'),
(33, 'Marcos Felipe', '[email protected]', '02545596985', '2014-09-26', 'RS0000002');