实际上,我有一个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>';
}
}
?>
答案 0 :(得分:1)
正如我在评论中所说
我从哪里开始,客户端和服务器(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命令来选择整个表,这是一件很糟糕的事情。
干杯!