【问题标题】:Create user account in phpMyadmin with PHP code使用 PHP 代码在 phpMyadmin 中创建用户帐户
【发布时间】:2018-02-15 13:07:31
【问题描述】:

我尝试使用以下代码在 phpmyadmin 中创建用户帐户:

<?php
if(isset($_GET['page'])){
    $connection = mysqli_connect('localhost', 'root');
    if(!$connection){
        echo 'MySQL Server Connection Issue';
    }
    else{
        $username = $_POST['username'];
        $password = $_POST['password'];
        $sql = "CREATE USER \'".$username."\'@\'%\' IDENTIFIED VIA mysql_native_password USING \'***\'GRANT ALL PRIVILEGES ON *.* TO \'".$username."\'@\'%\' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0GRANT ALL PRIVILEGES ON `".$username."\\_%`.* TO \'".$username."\'@\'%\'";
        $mysqli_query = mysqli_query($connection, $sql);
        if($mysqli_query){
            echo 'done';
        }
        else{
            echo 'faild';
        }
    }
}
else{
    ?>
    <!DOCTYPE html>
    <html>
     <head>
     </head>
     <body>
      <form action="?page=create_user" method="POST">
       <input type="text" name="username" required>
       <input type="password" name="password" required>
       <input type="submit" value="Create User">
      </form>
     </body>
    </html>
    <?php
}
?>

t 它只是在回显“失败”。为什么? 解释: 当访问者访问网页时,他会得到一个带有两个字段(用户名和密码)和一个提交按钮的 html 表单。如果访问者填写表格并提交,代码必须使用在表格中输入的用户名和密码创建一个 phpmyadmin 用户帐户。我添加了一个代码,如果代码在创建 MySQL 用户时失败,它将回显“失败”。当我尝试提交表单时,它现在显示“失败”字样。这意味着代码中有某种错误。但我无法弄清楚。请帮我解决这个问题......

【问题讨论】:

  • 在您的 SQL 查询中将 \' 替换为 ',因为您不需要在双引号字符串中转义单引号。显示 mysqli 错误消息 echo mysqli_error($connection); 也会很有用。
  • 另外:您的代码容易受到 SQL 注入攻击。你最好使用prepared statements
  • 你需要了解PHP、PHPMyAdmin、MySQL的区别
  • 我对你运行的服务器有两个版本的 PHP 印象深刻 ;)

标签: php phpmyadmin php-7 php-5.3


【解决方案1】:

您使用的不是每个单引号都使用反斜杠。试试这个查询:

$sql = "CREATE USER '" .$username. "' @ '%' IDENTIFIED VIA mysql_native_password USING '***'GRANT ALL PRIVILEGES ON *.* TO '".$username." '@' % ' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0GRANT ALL PRIVILEGES ON `".$username."' _%`.* TO '".$username."'@'%'";

【讨论】:

  • 我没有找到设置密码的 SQL 查询的任何部分。是不是有问题??
  • 我是否需要上传任何基于 Web 的应用程序才能让 MySQL 用户通过它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 2013-06-29
相关资源
最近更新 更多