相关疑难解决方法(0)

防止mysqli中的sql注入

我之前对 mysqli 很陌生,我正在 mysql 中编写查询,但 mysqli 更高级,所以我是第一次使用它。下面是我的php代码。

    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }

        $email = clean($_POST['email']);
        $password = clean($_POST['password']);
        //$password =md5($password);


    if(empty($res['errors'])) {
        $result = $mysqli->query("SELECT uid FROM users where email='$email' and password = '$password'");
        if($result->num_rows == 1){
            $res['success'] = true;
        }
        else{
            array_push($res['errors'], 'Invalid login details');
            $res['success'] = false;

        }
    }else{
        $res['success'] = false;        
    }
    echo json_encode($res);
}
Run Code Online (Sandbox Code Playgroud)

clean 函数没有按预期工作,因为如果我输入的用户名和密码正确,sql 查询将返回 false。因此,这似乎在 mysqli 情况下无效。

我检查了这个链接PHP MySQLI Prevent SQL Injection …

php mysqli

2
推荐指数
1
解决办法
7749
查看次数

PHP if if条件验证

我正在尝试创建一个激活页面,该页面将从URL获取API和ACT代码.

然后我试图在这些代码上查询数据库以检查它们是否有效.

如果它们无效,我想回应一个错误说明 echo "<strong><font color=red>Your Activation Code has Expired, or Your Activation Code is not Valid!</font></strong>";

如果它有效,那么我想用更新 2nd SQL Query - "UPDATE users SET status='1', date_activated='$Activation_Date', Activation='' WHERE Activation='$Activation' AND API='$API' AND status='0'"

如果URL中没有API和ACT代码,我想回复"内容"

   <?
    require 'admin/config.php';
    require 'Connection.php';
    error_reporting(E_ALL);
    $API = $_REQUEST['api'];
    $Activation = $_REQUEST['act'];

    $sql= mysql_query("SELECT * WHERE Activation='$Activation'");

    if ($sql = 0) { echo"ERROR";}
    else {
    $Activation_Date = date('m-j-y - h-iA');
    $sql = mysql_query("UPDATE users 
                        SET status='1', date_activated='$Activation_Date', Activation='' 
                        WHERE Activation='$Activation' AND API='$API' AND status='0'");
    if($sql …
Run Code Online (Sandbox Code Playgroud)

php mysql

1
推荐指数
1
解决办法
997
查看次数

PHP $stmt-&gt;num_rows 不适用于准备好的语句

我想检查一下if ($numRows >= 1)它应该返回一些东西。

当我使用时$con->mysql("{QUERY}"),它有效。

但当我使用时$stmt = $con->prepare("{QUERY}"),它不起作用。

有人有线索吗?

工作方法

<?php
if ($result = $con->query("SELECT username FROM users WHERE username = 'test'")) {
    $numRows = $result->num_rows;

    echo $numRows;
}
?>
Run Code Online (Sandbox Code Playgroud)

结果:1

不起作用的方法

<?php
$name = 'test';

$stmt = $con->prepare("SELECT username FROM users WHERE username = ?");
$stmt->bind_param('s', $name);

$name = 'test';

$stmt->execute();

$numRows = $stmt->num_rows;

echo $numRows;
?>
Run Code Online (Sandbox Code Playgroud)

结果:0

php mysql oop prepared-statement

1
推荐指数
1
解决办法
3255
查看次数

检查用户名和电子邮件已存在于 php mysql 中

检查用户名和电子邮件已存在于 php mysql 中,我已检查每个输入是否为空,如果没有空则检查用户名和密码是否已在数据库中,如果它不在数据库中,则 echo ALRIGHT,代码工作正常但问题是,当输入新条目时,它的打印效果不佳

这是代码:

<?php
error_reporting(E_ALL & ~E_NOTICE);
require_once('dbcon.php');
if(isset($_POST["create"]))
{
    if (isset($_POST['username']) && !empty($_POST['username'])) {
        $username=mysqli_real_escape_string($conn,trim($_POST['username']));
    }else{
        $empty_username="Username Cannot be empty.";
        echo $empty_username.'<br>';
    }
    if (isset($_POST['email']) && !empty($_POST['email'])) {
        $email=mysqli_real_escape_string($conn,trim($_POST['email']));
    }else{
        $empty_email="Email cannot be empty.";
        echo $empty_email.'<br>';
    }

    if (isset($_POST['category']) && !empty($_POST['category'])) {
        $category=mysqli_real_escape_string($conn,trim($_POST['category']));
    }else{
        $empty_category="Category cannot be empty.";
        echo $empty_category.'<br>';
    }

    if (isset($_POST['password']) && !empty($_POST['password'])) {
        $psw=mysqli_real_escape_string($conn,trim($_POST['password']));
    }else{
        $empty_password="Password cannot be empty";
        echo $empty_password.'<br>';
    }

    if (isset($_POST['re_password']) && !empty($_POST['re_password'])) {
        $repsw=mysqli_real_escape_string($conn,trim($_POST['re_password']));
    }else{ …
Run Code Online (Sandbox Code Playgroud)

php mysql validation

1
推荐指数
1
解决办法
5万
查看次数

如何用PHP检查MySQL中是否已经存在用户

我正在使用以下代码,这对我不起作用.

$con=mysqli_connect("localhost","root","","my_db");
$check="SELECT COUNT(*) FROM persons WHERE Email = '$_POST[eMailTxt]'";
if (mysqli_query($con,$check)>=1)
{
    echo "User Already in Exists<br/>";
}
else
{
    $newUser="INSERT INTO persons(Email,FirstName,LastName,PassWord) values('$_POST[eMailTxt]','$_POST[NameTxt]','$_POST[LnameTxt]','$_POST[passWordTxt]')";
    if (mysqli_query($con,$newUser))
    {
        echo "You are now registered<br/>";
    }
    else
    {
        echo "Error adding user in database<br/>";
    }
}
Run Code Online (Sandbox Code Playgroud)

mysqli_result类的对象无法在C:\ xampp\htdocs\Exp\welcome.php中转换为int

php mysql

0
推荐指数
1
解决办法
7万
查看次数

如果未找到任何记录,则返回默认值

我有这个PHP代码,它选择一个简单的值:

$name = $mysqli->query('SELECT name FROM users WHERE id = ' . $id . ' LIMIT 1')->fetch_object()->name;
Run Code Online (Sandbox Code Playgroud)

现在,如果结果为0,则抛出错误.

如果没有结果,我想要返回一个默认值,如"No name".

有什么建议?

php mysql mysqli

0
推荐指数
1
解决办法
164
查看次数

使用PHP检查用户名是否已存在

我想检查我的数据库中是否已存在用户名.如果是,我想重定向回我的注册页面.我的代码用于添加用户名,但不检查用户名是否存在.请帮忙!!!这是register.php页面的代码.代码完全跳过检查"用户名"并插入数据库(如果存在或不存在).

    <?php  
         error_reporting (E_ALL ^ E_NOTICE);    
         include ('dbconn.php');
         session_start();

         $GLOBALS[$error_message];
         $GLOBALS[$username];

         if(isset($_POST['submit']))
           {     
               $error = array();        
               if(empty($_POST['username']))
                 {
                   $error[] = 'Please enter a username. ';
                 }
               else 
                 {
                   $username = mysqli_real_escape_string($connection, $_POST['username']);
                 }

               if(empty($_POST['password']))
                 {
                   $error[] = 'Please enter a password. ';
                 }
               else
                 {
                   $password = mysqli_real_escape_string($connection,$_POST['password']);   
                 }

               if(empty($_POST['cpassword']))
                 {
                   $error[] = 'Please confirm password. ';
                 }
               else
                 {
                   $cpassword = mysqli_real_escape_string($connection,$_POST['cpassword']);
                 }

               if($password == $cpassword)
                 {
                   $mainpassword= $password;
                 }
               else
                 {
                   $error[] = 'Your passwords do not match. …
Run Code Online (Sandbox Code Playgroud)

php mysql username

-1
推荐指数
1
解决办法
5592
查看次数

如何使用PDO连接MySQLi数据库?

我正在创建一个登录表单,但我没有成功登录时遇到问题.我的表单看起来像这样

<form method="post" action="phpScripts/loginProcess.php">

    <input type="text" name="uname" value="" placeholder="Username">

    <input type="password" name="pass" value="" placeholder="Password">

    <input id="submit" type="submit" value="submit">

</form>
Run Code Online (Sandbox Code Playgroud)

我已经检查过,我正在连接数据库,我的uname和pass都是正确的.我经过多次双重检查.问题在我的查询中.这是loginProcess.php文件

<?php

    require_once ('dbconn.php');



    if(isset($_POST['login'])){

        $uname  = mysqli_real_escape_string($_POST['uname']);
        $pass   = mysqli_real_escape_string($_POST['pass']);

        $query  = mysql_query ("SELECT * FROM staff WHERE uname='$uname'");
        $numrows = mysql_num_rows($query);

        if ($numrows !=0){
            die("Success!!");
        }
        else{
            die("That user doesnt exist");
        }

    }
    else{
        echo "Username or Password incorrect";
    }
?>
Run Code Online (Sandbox Code Playgroud)

Fred-ii的帮助下,我能够找出错误并真正快速解决登录问题!我想提供我用来登录的代码,以防其他人遇到这个问题.

这是我用来登录的代码.我觉得我可以使用execute和$ userSql/$ pwSql减少冗余.任何建议清理这一点将不胜感激!

<?php
ini_set('display_errors', 1); error_reporting(E_ALL);


require_once ('dbconn.php');


$uname = $_POST['uname'];
$pass …
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli

-1
推荐指数
1
解决办法
104
查看次数

使用mysqli数据库检查提交表单输入

当我在我的表单中键入代码时,我希望我的PHP代码检查提交代码存在于数据库中然后运行MySqli查询.我试图这样做,但我得到错误Cannot use isset() on the result of an expression (you can use "null !== expression" instead)我已经搜索了问题但没有一个确实帮助我解决或理解我的问题.

形成

<p><b>Skriv in din laddkod nedan och tryck på "Ladda"</b></p>
<form action="laddaklar.php" method="post">
<input type="text" name="laddkod"/>
<input type="submit" name="submit" value="Ladda" />
</form>
Run Code Online (Sandbox Code Playgroud)

PHP

<?php 

session_start();

    $mysqli = NEW MySQLI ('localhost', 'root', '', 'ph');

    $laddkod = isset($_POST['laddkod']) ? $_POST['laddkod'] : '';



    $kod= "SELECT refill from card_refill"; 
    $result = $mysqli->query($kod);


    if(isset($_POST['submit'] && $laddkod==$result)){


     $resultSet = $mysqli->query ("UPDATE card_credit SET value= value + (select credit …
Run Code Online (Sandbox Code Playgroud)

html php mysqli

-1
推荐指数
1
解决办法
212
查看次数

标签 统计

php ×9

mysql ×7

mysqli ×4

html ×1

oop ×1

prepared-statement ×1

username ×1

validation ×1