Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用$\u会话传递值_Php_Database_Session - Fatal编程技术网

Php 使用$\u会话传递值

Php 使用$\u会话传递值,php,database,session,Php,Database,Session,通过$\u会话 <?php session_start(); ?> <?php echo "<table>"; $con = mysql_connect("localhost","root","") or die ("problem"); mysql_query("SET NAMES 'utf8'", $con); mysql_select_db("dedomena"); $query = mysql_query("SELECT * FROM

通过
$\u会话

<?php
  session_start();
?>
<?php
  echo "<table>";
  $con = mysql_connect("localhost","root","") or die ("problem");
  mysql_query("SET NAMES 'utf8'", $con);
  mysql_select_db("dedomena");
  $query = mysql_query("SELECT * FROM posts");

  $i = 1;

  while($query_row = mysql_fetch_assoc($query)) {

    echo  "<tr><td onclick='myFunction($i)'><a
           href='page.php'>".$query_row['title']."</a></td><td>$i</td>";
    $i = $i + 1;    
  };

  echo "</table>";
?>
<script>
  function myFunction($i) {
    alert(x);
    <?php
      $_SESSION["id"] = $i;
    ?>
  }
</script>


函数myFunction($i){
警报(x);
}
您试图在javascript中包含php代码,并认为当发生单击事件时,您将在客户端更改php全局变量。这不是正确的方法

会话用于保存会话变量。您正在使用会话将GET参数传递给服务器。无法从客户端更新会话变量,因为它们未向客户端公开

PHP中的会话: 无法更改超全局会话的内容。它位于服务器上,客户端无法访问它


但是,会将会话id传递给客户端,以便当客户端与服务器联系时,服务器知道要使用哪个会话。此值可以更改,从而允许用户使用其他人的会话。

正如暴力所述,问题是

<?php
$_SESSION["id"] = $i;
?>

在将页面发送给用户之前,此代码在服务器端执行。这就是PHP和javascript之间的区别:javascript是在运行时执行的,而页面是加载的,但是页面中的PHP是为了加载页面而执行的,因此在while循环中将
SESSION[“id”]
设置为10,然后在所提到的代码段中,将其放入
SESSION
变量中。
为了在运行时在会话中获取变量,必须在服务器上创建对PHP脚本的请求,然后将其放入
会话
。看看(jQuery)ajax,这是本例中最简单的解决方案。

但是您想做什么?php是服务器端语言,javascript是客户端语言。必须执行ajax调用才能传递值ID。

不能通过JS在客户端执行服务器端代码。对于您的问题,您可以通过字符串查询将其发送到php

**这个问题的最佳解决方案是字符串查询**

while($query_row = mysql_fetch_assoc($query)) {

    echo  "<tr><td><a
    href='page.php?id='.$i>".$query_row['title']."</a></td><td>$i</td>";
    $i = $i + 1;    
    }
while($query\u row=mysql\u fetch\u assoc($query)){
回音“$i”;
$i=$i+1;
}
page2.php

<?php
id=$_REQUEST['id'];
echo $id;
?>
<?php
session_start();
$_SESSION['id']=$_POST['jsvar'];
?>

或者,如果严格要求使用ajax。下面是一个使用iframe(不使用ajax)的作弊解决方案


function myFunction($i){alert(x);}这太错误了!!您希望在第2页上打印什么
id
?是否取决于点击的标题?请;
mysql.*
函数已经过时,而且不安全。使用或。查找关于ajax的教程。您能推荐一种最简单的方法将$i值传递到另一个页面吗?将GET param传递到href:echo“$i”;在page2.php中,根据SO指南,以$u GET['id']的形式访问它,它应该是一条评论,您在回答中发布了什么
<?php
id=$_REQUEST['id'];
echo $id;
?>
<?php
echo "<table>";
$con = mysql_connect("localhost","root","") or die ("problem");
mysql_query("SET NAMES 'utf8'", $con);
mysql_select_db("dedomena");
$query = mysql_query("SELECT * FROM posts");

$i = 1;

while($query_row = mysql_fetch_assoc($query)) {

echo  "<tr><td onclick='myFunction(i)'><a
href='page.php'>".$query_row['title']."</a></td><td>$i</td>";
$i = $i + 1;    
}

echo "</table>";
?> 
function myFunction(i) {
alert(i);
var html='';
    html +='<div id="fakeDiv">';
    html +='<form action="setSession.php" method="post"  id="fakefrm" target="ifk">';
    html +='<input type="hidden" name="jsvar" id="jsvar" value="'+val+'"/>';
    html +='</form>';
    html +='</div>';
    html +='<iframe name='ifk'style='display:none;></iframe>';
    var c=document.createElement('div');
    document.body.innerHTML += html;
    document.getElementById('fakefrm').submit();
    document.body.removeChild(document.getElementById('fakeDiv'));
}
<?php
session_start();
$_SESSION['id']=$_POST['jsvar'];
?>