这个问题在这里已有答案:
实际上,我有一个javascript变量我把它传递给PHP变量并使用这个变量作为MySQL查询当我提交查询页面被重新加载和javascript变量的值完成因此查询不起作用我只是想要修改在我的代码或有关于我的问题的另一个相关的解决方案然后请帮助我。当回显PHP变量时,一切正常,它向我显示变量唯一的问题是在我的SQL的查询中,在查询中,具有javascript变量的PHP变量不起作用。
<script>
var buttontext="esteem";
<?php
$ff ="<script>document.write(buttontext);</script>";
?>
</script>
<?php
$servername="localhost";
$username="root";
$password="";
$dbname="beelist";
$conn=mysqli_connect($servername,$username,$password,$dbname);
error_reporting(0);
$connDB= mysqli_select_db($conn,'beelist');
if($_POST['sub'])
{
echo $ff;
$code=$_POST['Bid'];
if($code!=""){
$query="SELECT beaconid FROM `customer` WHERE `beaconid` = '$code' && name = '$ff'";
$data = mysqli_query($conn,$query);
$res1=mysqli_fetch_array($data);
if ($res1) {
echo '<script> alert("Beacon found")</script>';
echo '<script> showp();</script>';
}
else {
echo '<script> alert("Beacon ID is wrong!")</script>';}
}else{
echo '<script> alert("Beacon ID is required")</script>';
}
}
?>
正如我在评论中所说
我从哪里开始,客户端和服务器(JS和PHP)是分开的。一个在服务器上运行,一个在客户端计算机上运行。 PHP是第一个,因此只有PHP可以影响JS(因为这是PHP的输出的一部分)JS的状态在PHP中是不可知的,因为它在完全不同的计算机上。基本上,您可以通过页面重新加载(例如表单提交)或AJAX来发出请求,您可以将数据传递回服务器,以便它可以处理它。
基本上你现在拥有的是$ff
字面上是这样的文字:
$ff ="<script>document.write(buttontext);</script>";
而且因为你没有回应它,它实际上从未作为源的一部分传递给客户端。
您的查询是这样的:
$query="SELECT beaconid FROM `customer` WHERE `beaconid` = '$code' && name = '<script>document.write(buttontext);</script>'";
这对我来说太过广泛,无法真正给你一个合适的答案,并且有很多教程可以帮助我更好地对待我。但希望你能理解现在发生的事情。
PS。您可以通过在查询后立即执行echo $query;
来轻松测试。另请注意,您不应将PHP变量直接放在SQL中,否则可能会对您的站点造成SQLInjection类型攻击。例如,如果$_POST['Bid']="' OR 1 --
您的查询将是这样的:
$query="SELECT beaconid FROM `customer` WHERE `beaconid` = '' OR 1 --' && name = '<script>document.write(buttontext);</script>'";
--
是MySQL中评论的开头。所以现在我只是通过将SQL命令注入到Query中来选择整个表,这是一件非常糟糕的事情。
干杯!