【问题标题】:Adding something in the database(mysql / phpmyadmin) with PHP用 PHP 在数据库(mysql / phpmyadmin)中添加一些东西
【发布时间】:2015-02-01 16:42:27
【问题描述】:

我正在做一个网站。它有一个登录表单,当您登录时转移到管理部分。它运行良好,它搜索数据库中的所有内容,一切正常。但是注册链接不能正常工作。 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);
}

【问题讨论】:

    标签: php mysql phpmyadmin sublimetext2


    【解决方案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 变量直接写入 DB。这允许 SQL 注入也就是安全问题!
    • 写个日志函数,尽量做应用日志
    • 如果遇到错误,请检查 phperror.log 是否有错误

    【讨论】:

    • 好的,谢谢帮助!但是 $conexao 是一个连接到数据库的类,其他一切都是这样工作的......'关于数据库中的 $_POST,我不知道,非常感谢!顺便说一句......它根本没有用,奇怪的是,如果我点击全空白的按钮,它甚至不会向我显示错误,,,
    • 您应该检查 phperror.log 或启用如果不可用配置 PHP 的错误日志记录。或者只是启用显示错误:php.net/manual/de/… 关于 $conexao:这不是类,而是一个对象。但这并不重要,因为你还没有通过它。所以这行不通。你正确地得到一个 PHP 致命错误。这就是为什么你得到空白页。致命错误的原因是函数 cadastraUsuario() 的参数计数错误
    • 因此,如果您在 $conexao 中有数据库连接的实例,只需传递它:cadastraUsuario($conexao, $_POST['nome'], $_POST['email'], $_POST[ 'senha']);
    • 好的,刚刚解决了这个问题!更新了功能,一切正常!谢谢!
    猜你喜欢
    • 2013-10-20
    • 1970-01-01
    • 2013-10-20
    • 2021-09-02
    • 2012-08-11
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多