1
Good evening, I would like a help in my code. I am trying to enter some data, coming from a form, in the database. Follow code:
insert Register.php
session_start();
include_once("settings.php");
//Verifica se clicou no botão
$enviarCadastro=filter_input(INPUT_POST, 'enviarCadastro', FILTER_SANITIZE_STRING);
if($enviarCadastro){
$nome = $_POST['nome'];
$sobrenome = $_POST['sobrenome'];
$data = $_POST['data'];
$data_int = (int)$data;
$cpf = $_POST['cpf'];
$cpf_int = (int)$cpf;
$email = $_POST['email'];
$pais = $_POST['pais'];
$estado = $_POST['estado'];
$login = $_POST['login'];
$senha = $_POST['senha'];
$rsenha = $_POST['rsenha'];
$inserir = $pdo->prepare("INSERT INTO cadastro(nome, sobrenome, data, cpf, email, pais, estado, login, senha, rsenha) VALUES (:nome, :sobrenome, :data, :cpf, :email, :pais, :estado, :login, :senha, :rsenha)");
$PreparaDados = array(
':nome' => $nome,
':sobrenome' => $sobrenome,
':data' => $data_int,
':cpf' => $cpf_int,
':email' => $email,
':pais' => $pais,
':estado' => $estado,
':login' => $login,
':senha' => $senha,
':rsenha' => $rsenha,
);
$inserir->bindParam(':nome', $nome, PDO::PARAM_STR, 50);
$inserir->bindParam(':sobrenome', $sobrenome, PDO::PARAM_STR, 50);
$inserir->bindParam(':data', $data_int, PDO::PARAM_INT, 50);
$inserir->bindParam(':cpf', $cpf_int, PDO::PARAM_INT, 50);
$inserir->bindParam(':email', $email, PDO::PARAM_STR, 50);
$inserir->bindParam(':pais', $pais, PDO::PARAM_STR, 50);
$inserir->bindParam(':estado', $estado, PDO::PARAM_STR, 50);
$inserir->bindParam(':login', $login, PDO::PARAM_STR, 50);
$inserir->bindParam(':senha', $senha, PDO::PARAM_STR, 50);
$inserir->bindParam(':rsenha', $rsenha, PDO::PARAM_STR, 50);
$inserir->execute($PreparaDados);
if($inserir->execute($PreparaDados)){
echo"Sucesso";
}else{
echo"Falha";
}
}else{
//Dados Não enviado para o banco de dados
$_SESSION ['NãoCadastrado'] = "Cadastro não realizado";
header("Location: cadastro.php");
}
php.
<form action="inserirCadastro.php" method="post" enctype="multipart/form-data" >
<!-- NOME -->
<?php $nome = array_key_exists('nome', $_POST) ? $_POST['nome'] : ''; ?>
<p><input type="text" name="nome" id="nome" placeholder="Nome" class="form-control input-md" maxlength="25" value="<?php echo $nome; ?>" /></p>
<?php
if($_POST) {
$nome = $_POST['nome'];
if ($nome == "") {
echo '<p style="font-family: Microsoft JhengHei Light; color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<!-- SOBRENOME -->
<?php $sobrenome = array_key_exists('sobrenome', $_POST) ? $_POST['sobrenome'] : ''; ?>
<p><input type="text" name="sobrenome" id="sobrenome" placeholder="Sobrenome" class="form-control input-md" maxlength="25" value="<?php echo $sobrenome; ?>"/></p>
<?php
if($_POST) {
$sobrenome = $_POST['sobrenome'];
if ($sobrenome == "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<!-- DATA -->
<?php $data = array_key_exists('data', $_POST) ? $_POST['data'] : ''; ?>
<p><input type="text" name="data" id="data" placeholder="Data de Nascimento" class="form-control input-md" maxlength="10" OnKeyUp="mascaraData(this);" onkeypress='return SomenteNumero(event)' value="<?php echo $data; ?>"/></p>
<script language="JavaScript" type="text/javascript">
function mascaraData(campoData){
var data = campoData.value;
if (data.length == 2){
data = data + '/';
document.forms[0].data.value = data;
return true;
}
if (data.length == 5){
data = data + '/';
document.forms[0].data.value = data;
return true;
}
}
</script>
<script language='JavaScript'>
function SomenteNumero(e){
var tecla=(window.event)?event.keyCode:e.which;
if((tecla>47 && tecla<58)) return true;
else{
if (tecla==8 || tecla==0) return true;
else return false;
}
}
</script>
<?php
if($_POST) {
$data = $_POST['data'];
if ($data== "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<!-- CPF -->
<?php $cpf = array_key_exists('cpf', $_POST) ? $_POST['cpf'] : ''; ?>
<p><input type="text" name="cpf" id="cpf" placeholder="CPF" class="form-control input-md" maxlength="11" value="<?php echo $cpf; ?>"></p>
<?php
function validaCPF($cpf)
{ // Verifiva se o número digitado contém todos os digitos
$cpf = str_pad(preg_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;
}
}
// Verifica se o botão de validação foi acionado
if(isset($_POST['cadastrar']))
{// 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 '';
elseif($cpf_enviado == false)
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> CPF Inválido!</p>';
}
?>
<small><a href="#myModal" data-toggle="modal" data-target="#myModal"><p style="font-size:10px;">Por que o CPF ?</p></a></small>
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title"><center><p style="font-family:Gill Sans MT Condensed; font-size:35px;font-family: Microsoft JhengHei Light;">Por que o CPF ?</p></center></h4>
</div>
<div class="modal-body">
<p style="font-family: Microsoft JhengHei Light;"> Para evitar o "flood" de comentários em nosso site, optamos por pedir o número do CPF para que o usúario possa se cadastrar somente uma vez no site.</p>
<p style="font-family: Microsoft JhengHei Light;">Evitando assim, de qualquer usúario ter duas ou mais contas registradas no site.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<!-- EMAIL -->
<?php $email = array_key_exists('email', $_POST) ? $_POST['email'] : ''; ?>
<p><input type="text" name="email" id="email" placeholder="E-mail" class="form-control input-md" maxlength="50" value="<?php echo $email; ?>"/></p>
<?php
if($_POST){
$email = $_POST['email'];
if ($email == "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<?php
function isMail($email){
$er = "/^(([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}){0,1}$/";
if (preg_match($er, $email)){
return true;
} else {
return false;
}
}
if(isset($_POST['cadastrar']))
$emailvalida = isMail($_POST['email']);
{
if (isMail($email))
{
} elseif (@$emailvalida == false) {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Email inválido!</p>';
}}
?>
<!-- PAIS -->
<?php $pais = array_key_exists('pais', $_POST) ? $_POST['pais'] : ''; ?>
<p><input type="text" name="pais" id="pais" placeholder="País" class="form-control input-md" maxlength="50" value="<?php echo $pais; ?>" /></p>
<?php
if($_POST) {
$pais = $_POST['pais'];
if ($pais == "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<!-- ESTADO -->
<?php $estado = array_key_exists('estado', $_POST) ? $_POST['estado'] : ''; ?>
<p><input type="text" name="estado" id="estado" placeholder="Estado" class="form-control input-md" maxlength="50" value="<?php echo $estado; ?>" /></p>
<?php
if($_POST) {
$estado = $_POST['estado'];
if ($estado == "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<legend style="color:#fff">Social</legend>
<!-- LOGIN -->
<?php $login = array_key_exists('login', $_POST) ? $_POST['login'] : ''; ?>
<p><input type="text" name="login" id="login" placeholder="Login" class="form-control input-md" maxlength="15" value="<?php echo $login; ?>"/></p>
<?php
if($_POST) {
$login = $_POST['login'];
if ($login == "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<!-- SENHA -->
<?php $senha = array_key_exists('senha', $_POST) ? $_POST['senha'] : ''; ?>
<p><input type="password" name="senha" id="senha" placeholder="Senha" class="form-control input-md" value="<?php echo $senha; ?>"/></p>
<?php
if($_POST) {
$senha = $_POST['senha'];
if ($senha == "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
}}?>
<!-- RSENHA -->
<?php $rsenha = array_key_exists('rsenha', $_POST) ? $_POST['rsenha'] : ''; ?>
<p><input type="password" name="rsenha" id="rsenha" placeholder="Confirme a Senha" class="form-control input-md" value="<?php echo $rsenha; ?>"/></p>
<?php
if($_POST) {
$senha = $_POST['senha'];
$senhaConfirma = $_POST['rsenha'];
if ($senha == "") {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
} else if ($senha == $senhaConfirma) {
} else {
echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Senha não confere!</p>';
}
}
?>
<script type="text/javascript">
$(document).ready(function() {
$('#rsenha').bind('cut copy paste', function(event) {
event.preventDefault();
});
});
</script>
<p style="float:right;">
<input type="submit" name="enviarCadastro" value="Cadastrar" class="form-control input-md" />
</form>
Settings.php
<?php
$pdo = new PDO("mysql:host=localhost;dbname=bd_winfo", "root", "");
?>
No error appears, just returns on Else as "Failure"
I added this command line and it’s still the same. Error on line: $insert->execute($Prepare data); In the case there is a Prepare data variable that would be the one of the array I did not post. I don’t know if an array is needed to insert into the database.
– Diego Souza
$Prepared = array( ':first name' => $first name, ':last name' => $last name, ':date' => $date, ':Cpf' => $cpf_int, ':data' => $data_int, ':email' => $email, ':parents' => $parents, ':status' => $status, ':password' => $password, ':rsenha' => $rsenha, );
– Diego Souza
This array has two indexes
":data"
there is the problem, lacked login– Costamilam
It worked! Now no error appeared. I added an if($insert->execute($Preparadados)) to see if it is registering and not this one. I’ll edit to show the code.
– Diego Souza
Two problems: 1) You are running sql twice. 2) You must pass the array at run or use
bindParam()
, either– Costamilam
Personally I prefer to use
bindParam()
, so it is possible to pass the variable, the type and size, working as a further validation– Costamilam
If no error appeared on the screen, it was probably registered, take a look at the database by phpMyAdmin or Mysql Workbench
– Costamilam
Deletes the array and refers to sql would be which line ?
– Diego Souza
I edited my answer with the full code
– Costamilam
It wasn’t. Could it be the $insert line = $Pdo? because it’s double-quote, I don’t know if it has anything to do with it. Returns as Failed again.
– Diego Souza
The only difference between the quotes is that the double allows string interpolation. The variable
$pdo
has a valid connection? The error may be in the connection to the bank and not in the execution– Costamilam
Yes, this all ok, I even made a record in the database with a previous php page.
– Diego Souza
If it helps, I’ll post my form.
– Diego Souza
If everything is ok check the variable names and if they are arriving correctly (use
var_dump($inserir)
) also check data types and sizes (both in php and in the database)– Costamilam
I switched the date and Cpf values to scan the database and made the changes to the code for string and registered. Have any problem if I let register the numeric values as sweep ?
– Diego Souza
No way register as int....
– Diego Souza
Problem does not have, but may not be the most performatic, if you want to register as int should use
bindParam(':cpf', $cpf_int, PDO::PARAM_INT);
– Costamilam