如何在不使用 $_SESSION["name"] = "<script>document.write(name)</script>";
Posted
技术标签:
【中文标题】如何在不使用 $_SESSION["name"] = "<script>document.write(name)</script>"; 的情况下将 js 变量存储到 php 中?【英文标题】:How to store js variable into php without using $_SESSION["name"] = "<script>document.write(name)</script>";? 【发布时间】:2016-06-04 06:45:08 【问题描述】:我尝试使用 $_SESSION["name"] = "document.write(name)";如果我回应它,它就会起作用。但是如果我要将此 SESSION 变量显示到文本框中或使用它来执行 SQL,它会显示 document.write(name)。如何正确地将其存储到 php 变量中?我搜索过,很多人说你不能转换它。但肯定有某种方式我可以使用 javascript 变量(名称)在文本框中显示它或在 SQL 中使用它。
带有变量名的javascript代码。
<script>
var name;
$(document).ready(function()
$('#info tr #name').click(function()
name = $(this).text();
alert(name);
window.location = 'CV.php';
);
);
</script>
对于 SQL,我的代码是这样的,
<?php $_SESSION["name"] = "<script>document.write(name)</script>";
echo $_SESSION["name"];
$connect = mysqli_connect("localhost", "root", "","test1");
$sql = "SELECT Name, Number, Expertise, Status, Remarks FROM particulars WHERE Name ='". $_SESSION["name"]."'";
$result = mysqli_query($connect, $sql);
while($row= mysqli_fetch_array($result))
$name = $row['Name'];
$number =$row['Number'];
$Expertise =$row['Expertise'];
$status =$row['Status'];
$remarks =$row['Remarks'];
?>
下面是我的代码,试图将我在会话中存储的变量显示到文本框中。
<input type='text' value='" .htmlspecialchars($_SESSION['name']) . "'/>
【问题讨论】:
PHP 是服务器端,document.write 是 JS,客户端。 PHP 不会对其进行解析,而是将其作为字符串回显。当您回显它时它会起作用,因为您的浏览器会这样做。但是当你把它放在文本值中时,浏览器会将它视为一个值(字符串不是要呈现的函数) 【参考方案1】:<script>
var name;
$(document).ready(function()
$('#info tr #name').click(function()
name = $(this).text();
alert(name);
window.location = 'CV.php?name=' + name; // send in link
);
);
</script>
CV.PHP 内部
if(isset($_GET['name']))
$name = $_GET['name']; // Get it from URL
$_SESSION["name"] = $name;
else
$name = $_SESSION['name']; // Get it from session
$connect = mysqli_connect("localhost", "root", "","test1");
$sql = "SELECT Name, Number, Expertise, Status, Remarks FROM particulars WHERE Name ='". $_SESSION["name"]."'";
$result = mysqli_query($connect, $sql);
while($row= mysqli_fetch_array($result))
$name = $row['Name'];
$number =$row['Number'];
$Expertise =$row['Expertise'];
$status =$row['Status'];
$remarks =$row['Remarks'];
?>
在输入框中显示:
<input type='text' value='" .$name . "'/> // echo value as string
<input type='text' value='" .$_SESSION['name']. "'/> // if it's a page that is not CV.php
【讨论】:
NP :)。像这样的问题让我怀念我第一次编程的日子:') 嗨@MoussaKhalil!你给我的代码有效!但是,在我进入 CV.php 页面后,我有一个更新按钮,用于刷新我的页面,并且 $name = $_GET['name'] 将无法被检测到。我认为原因是因为该页面不是来自select.php。它是从 CV.php 到 CV.php。因此,您有什么方法可以让我仍然能够在某处捕获和存储名称,这样即使我刷新页面,名称也不会被刷新。谢谢!:) 天哪,你真的帮了我这么多!你认为你能再次帮助我吗?哈哈,因为现在我在做更新按钮时遇到了麻烦。好像不能更新了我的更新代码是: if(isset($_POST['update'])) $UpdateQuery = "UPDATE details SET Name = '$_POST[name]', Number= '$_POST[number]', " . “专业知识='$_POST[expertise]',状态='$_POST[status]',备注='$_POST[remark]' WHERE Name ='$_POST[hidden]'”; mysqli_query($connect, $UpdateQuery); cant.. 当我全部更改为那个时,他们会给我一个错误 @Samuel 等等,这完全是错误的。试试这个并告诉我错误(如果有的话)$UpdateQuery = "UPDATE details SET Name = '"。 $_POST['name']."', Number= '"。 $_POST['number']." ', " . "Expertise= '".$_POST['expertise']." ', Status= '".$_POST['status']." ', Remarks= '".$_POST['remark']." ' WHERE 名称= '".$_POST['隐藏']." '"; mysqli_query($connect, $UpdateQuery);以上是关于如何在不使用 $_SESSION["name"] = "<script>document.write(name)</script>"; 的主要内容,如果未能解决你的问题,请参考以下文章
如何正确发送 $_FILES 到 $_SESSION 变量?