【发布时间】:2023-03-22 01:45:02
【问题描述】:
我有一个 Index.php,它有一个用于在提交该表单时获取用户详细信息的表单,它会将数据触发到一个新的 program.php 以在 program.php 中进行验证我已经链接了我已经链接的 db.php连接数据库,db.php的代码如下:
<?php
$link=mysql_connect('localhost', 'root', '') or die ("mysql_connect_error()");
$dbselect=mysql_select_db('test',$link) or die ("Error while connecting the database");
?>
因为使用这种方式可以进行 sql 注入,所以我尝试将其更改为下面给出的代码:
<?php
$hostname='localhost';
$username='root';
$password='';
try
{
$dbh = new PDO("mysql:host=$hostname;dbname=test",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
但是当我连接提交表单时出现错误。在我的 program.php 中,我通过 include "db.php"; 调用了 db.php。由于我是 PDO 的新手,我不确定我哪里出错了。
更新 program.php 代码
<?php
if($_POST)
{
include "link_db.php";
if ($_POST[admin_sign_up])
{
$fname=$_POST[fname];
$lname=$_POST[lname];
$id =$_POST[id];
$id_pass=$_POST[id_pass];
$sql="insert into admin_database(fname, lname, id, id_pass)
value ('$fname','$lname','$id','$id_pass')";
mysql_query($sql);
$error=mysql_error();
if(empty($error))
{
echo "<script>alert('Registration Successful...')</script>";
header("Location:index.php",true);
}
else
{
echo "Registration Failed...<br> Email Id already in use<br>";
echo "<a href='failed.php'>Click to SignUp again</a>";
}
}
if ($_POST[admin_login])
{
$id =$_POST[id];
$id_pass=$_POST[id_pass];
$sql="select * from admin_database where id = '$id' and id_pass= '$id_pass'";
$result=mysql_query($sql);
echo mysql_error();
$row=mysql_fetch_array($result);
$rowcnt=mysql_num_rows($result);
if($rowcnt==1)
{
session_start();
$_SESSION['id']=$id;
$_SESSION['fname']=$row['fname'];
$_SESSION['lname']=$row['lname'];
$_SESSION['varn']="Y";
echo "Login Successfully....";
header("Location:home.php",true);
}
else
{
$id =$_POST[id];
$id_pass=$_POST[id_pass];
$sql="insert into adminfailure(id, id_pass, date_time)
value ('$id','$id_pass',NOW())";
mysql_query($sql);
$error=mysql_error();
if(empty($error))
{
Echo "Invalid Login ID or Password....";
header("Location:fail.php",true);
}
else
{
echo "incorrect details";
}
}
}
if ($_POST[logout])
{
header("location:destroy.php",true);
}
}
?>
我得到的更新错误
注意:使用未定义的常量 test_sign_up - 在第 6 行的 B:\XAMPP\htdocs\test\program.php 中假设为“test_sign_up”
注意:未定义索引:第 6 行 B:\XAMPP\htdocs\test\program.php 中的 test_sign_up
注意:使用未定义的常量 test_login - 在第 32 行的 B:\XAMPP\htdocs\test\program.php 中假设为“test_login”
注意:使用未定义的常量 id - 在第 35 行的 B:\XAMPP\htdocs\test\program.php 中假定为“id”
注意:使用未定义的常量 id_pass - 在第 36 行的 B:\XAMPP\htdocs\test\program.php 中假定为“id_pass” 没有选择数据库 警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在第 41 行的 B:\XAMPP\htdocs\test\program.php 中给出
警告:mysql_num_rows() 期望参数 1 是资源,布尔值在第 42 行的 B:\XAMPP\htdocs\test\program.php 中给出
注意:使用未定义的常量 id - 在第 56 行的 B:\XAMPP\htdocs\test\program.php 中假定为“id”
注意:使用未定义的常量 id_pass - 在第 57 行的 B:\XAMPP\htdocs\test\program.php 中假定为“id_pass” 不正确的细节 注意:使用未定义的常量注销 - 在第 73 行的 B:\XAMPP\htdocs\test\program.php 中假设为“注销”
注意:未定义索引:第 73 行 B:\XAMPP\htdocs\test\program.php 中的注销
【问题讨论】:
-
你得到的错误是什么?
-
$hostname = 'localhostis missing';这是仅此 sn-p 中的错字还是您复制了真实代码? -
@Jite 抱歉,在添加被错误删除的空格时更新了代码
-
@donald123 我遇到了很多错误,我无法在此处复制粘贴,也没有关于连接的错误,但它与从数据库中获取文件有关,我猜连接有效,但因为它是在外部完成的是不是有点问题
标签: php mysql pdo mysqli connection