Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
O meu sistema de conexão com o banco de dados funciona direitinho, porém, ao criar função para cadastro usando PDO, dá erro no servidor 500
O codigo que ta dando o erro é o seguinte:
require_once ('funcoes/function.php');
//BD::conn();
if(isset($_POST['cadastrar']));
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$sobrenome = filter_input(INPUT_POST, 'sobrenome', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
$senha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING);
if(cadastrar($nome, $sobrenome, $email, $login, $senha)):
echo'cadastrou';
else:
echo'erro ao cadastrar';
endif;
endif;
ele está sendo colocando no topo da index, logo abaixo de:
<?php
session_start();
include_once "defines.php";
require_once('classes/BD.class.php');
e a função é a seguinte:
function.php
<?php
function cadastrar($nome, $sobrenome, $email, $login, $senha){
$pdo = mysql();
try{
$inserir = $pdo->prepare("INSERT INTO usuarios(nome, sobrenome, email, login, senha) VALUES (?,?,?,?,?)");
$inserir->bindValue(1, $nome);
$inserir->bindValue(2, $sobrenome);
$inserir->bindValue(3, $email);
$inserir->bindValue(4, $login);
$inserir->bindValue(5, $senha);
$inserir->execute();
if($inserir->rowCount() == 1):
return true;
else:
return false;
} catch (PDOException $erro){}
echo "Erro ao listar".$erro->getMessage();
}
?>>
erro 500 é só um código genérico
Você precisa ver qual é a mensagem de erro
Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2. Se não aparecer na tela o erro, é possível que esteja sendo salvo em um arquivo de logs dentro do servidor
Usei o codigo:
ini_set('display_errors', true);
error_reporting(E_ALL);
e mesmo assim não me retornou nenhum erro, somente o erro no servidor 500
Verifica se o require esta setando para o local correto.... veja se o script esta na mesma pasta que .. ou se você tem que subir uma pasta...
require_once ('funcoes/function.php');
Coloca isso dentro da function
global $mysql; //su---do que a variavelk $mysql e a tua conexão.
essa require está ok
o engraçado é q se eu tiro a require dá problema e se eu tiro o codigo de inserção tambem da problema, então nçao to sabendo localizar o erro.
Obs.: Iniciando em PDO, apanhando bastante ainda
Se dá erro 500, pode ser erro do PHP ou pode ser erro do servidor web.
Tem que olhar os logs. Não adianta tentar adivinhar. Só vai dar trabalho e perda de tempo. Veja onde estão os logs e veja o que está lá
>
Se dá erro 500, pode ser erro do PHP ou pode ser erro do servidor web.
Tem que olhar os logs. Não adianta tentar adivinhar. Só vai dar trabalho e perda de tempo. Veja onde estão os logs e veja o que está lá
[04-Feb-2016 01:42:52 Europe/Berlin] PHP Notice: Undefined offset: 1 in E:\sites\proig.com.br\classes\BD.class.php on line 18
[04-Feb-2016 01:42:52 Europe/Berlin] PHP Notice: A session had already been started - ignoring session_start() in E:\sites\proig.com.br\sair.php on line 2
[04-Feb-2016 01:42:52 Europe/Berlin] PHP Parse error: syntax error, unexpected 'endif' (T_ENDIF) in E:\sites\proig.com.br\index.php on line 22
[04-Feb-2016 01:42:54 Europe/Berlin] PHP Parse error: syntax error, unexpected 'endif' (T_ENDIF) in E:\sites\proig.com.br\index.php on line 22
O erro da session diz o problema: não pode iniciar a session (com session_start) mais de uma vez.
Todos os outros erros estão explicados neste artigo
olhei todo o codigo, não achei outra iniciação da session_start()
Analisando teu código tem uns errinhos ai... voce abre if e fecha com ; teria que ser : (para fechar com endif;)
equire_once ('funcoes/function.php');
//BD::conn();
if(isset($_POST['cadastrar']));
$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$sobrenome = filter_input(INPUT_POST, 'sobrenome', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
$senha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING);
endif;
if(cadastrar($nome, $sobrenome, $email, $login, $senha)):
echo'cadastrou';
else:
echo'erro ao cadastrar';
endif;olhei todo o codigo, não achei outra iniciação da session_start()
Pode ter um só, mas se der include/require nele duas vezes, vai dar erro
Você pode usar a busca da sua IDE/Editor ou comandos como grep para buscar todas as ocorrências de "session_start()" em seu projeto. Se, realmente, só existir um, esse arquivo está sendo chamado mais de uma vez.
erro 500 é só um código genérico
Você precisa ver qual é a mensagem de erro
Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2. Se não aparecer na tela o erro, é possível que esteja sendo salvo em um arquivo de logs dentro do servidor