Добавление чего-либо в базу данных (mysql / phpmyadmin) с переполнением стека

Я делаю сайт. У него есть форма входа в систему, которая передается в раздел администратора, когда вы вошли в систему. Она отлично работает, она ищет все в базе данных, все в порядке. Но ссылка на регистрацию не работает должным образом. cadastro.php файл должен сделать регистр к cadastra_usuario.php и перенести права на страницу входа, если все прошло нормально. Это также должно принести предупреждение, если пароль не совпадает или если не хватает места. Он даже не регистрируется в базе данных и ничего с этим не делает. Вот коды:

Включить и форма cadastro.php:

<body>
<div class="container container-twelve">
<div class="four columns offset-by-four">
<h1 class="titles">Cadastro</h1>
<?php if(isset($_SESSION["success"])) {?>
<p><?= $_SESSION["success"] ?></p>
<?php }?>
<?php unset($_SESSION["success"]); ?>
</div>
<div class="four columns offset-by-four" id ="login">
<form action="cadastra_usuario.php"  method="post">
<label for="nome">Nome</label>
<input type="text" name="nome" placeholder="Digite seu nome">
<label for="email">Email de usuário </label>
<input type="text" name="email" placeholder="Seu email para login">
<label for="senha">Senha</label>
<input type="password" name="senha" placeholder="Sua senha">
<label for="senha2">Repita sua senha</label>
<input type="password" name="senha2" placeholder="Repita sua senha">
<input type="submit" value="Cadastrar">
</form>

<p><a href="index.php"> << Voltar para o site</a></p>
<p><a href="login.php"> Já tenho um cadastro >> </a></p>
</div>
</div>
</body>

cadastra_usuario.php:
<?php
include('conecta.php');
include('functions.php');
include('function_usuario.php');

$senha = $_POST['senha'];
$senha2 = $_POST['senha2'];

$cadastra = cadastraUsuario();

if($senha != $senha2){
$_SESSION["danger"] = "As senhas não conferem!";
header("Location: cadastro.php");
}
if($cadastra == null){
$_SESSION["danger"] = "Complete todos os campos!";
header("Location: cadastro.php");
} else {
$_SESSION["success"] = "Usuário cadastrado com sucesso.";
header("Location: login.php");
}
?>

и функция:

function cadastraUsuario($conexao, $nome, $email, $senha){
$nome = $_POST['nome'];
$email = $_POST['email'];
$senha = $_POST['senha'];

$conexao = mysqli_connect('mysql.hostinger.com.br','u374984363_ozzy','ozzy@123', 'u374984363_ncars');
$query = "insert into usuarios (nome, email, senha) values ('{$nome}', '{$email}', '{$senha}')";
return mysqli_query($conexao, $query);
}

-1

Решение

Трудно сказать, но:

function cadastraUsuario($conexao, $nome, $email, $senha)

ожидает $ conexao, который должен быть соединением с БД, верно? Но когда вы вызываете функцию, вы не указываете соединение:

$cadastra = cadastraUsuario($_POST['nome'], $_POST['email'], $_POST['senha']);

Это не сработает.

Может быть, это решение:

function cadastraUsuario($nome, $email, $senha) {
$query = "insert into usuarios (nome, email, senha) values ('{$nome}', '{$email}', '{$senha}')";

$mysqli = new mysqli("example.com", "user", "password", "database");

if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query($query)) {
echo "Insert failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
}

Несколько советов от разработчика:

  • Никогда не записывайте переменные $ _POST непосредственно в БД. Это позволяет SQL-инъекцию или проблему безопасности!
  • Напишите функцию журнала и делайте журналы приложения как можно больше.
  • Проверьте phperror.log на наличие ошибок, если вы столкнулись с ошибкой
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]