不同的Web浏览器,不同的平台不能共享相同的字符串变量,它从null开始 我想要一个像聊天室这样的功能。
note.php
CC = gcc -std=c++0x
使用文件methord可以保存变量。
<?php
session_start();
$_SESSION['note']=$_POST['text'].'<br>'.$_SESSION['note'];
?>
<html>
<body>
<title>Note</title>
<form method="post" action="note.php" name=form1>
<input type="text" name="text" size=150 required>
<input type="submit" value="submit" name="B1">
<input type="reset" value="reset" name="B2">
</form>
<?php
echo $_SESSION['note'];
?>
</body>
</html>
但服务器(sinaapp.com)不允许:fopen(notes.txt)[function.fopen]:无法打开流:权限被拒绝。
但sinaapp.com提供memcache来保存临时变量,并且不收取20MB以下的费用。
<html>
<body>
<title>NoteF</title>
<form method="post" action="notef.php" name=form1>
<input type="text" name="text" size=100>
<input type="submit" value="submit" name="B1">
<input type="reset" value="cancel" name="B2">
</form>
<?php
$file='notes.txt';
$fr='';
if(file_exists($file)){
$fr=file_get_contents($file);
}
if($_POST['text']==''){
echo $fr;
}else{
$fw=$_POST['text'].'<br>'.$fr;
$myfile = fopen($file, "w") or die("Unable to open file!");
fwrite($myfile, $fw);
fclose($myfile);
echo $fw;
}
?>
</body>
</html>
答案 0 :(得分:3)
会话的工作方式是会话ID在服务器的响应中作为cookie发送。然后,浏览器存储该id,并在每次后续请求时将该信息发送回服务器。如果您使用其他浏览器,或者使用具有不同配置文件的相同浏览器,则该会话ID将不同。
服务器使用该会话ID来查找为该请求存储的所有会话变量。如果要跨多个浏览器共享数据,则必须将该信息存储在某种形式的永久存储(文件或数据库)中。
您还需要一些唯一标识符来链接2个浏览器。类似于帐户ID(在注册和身份验证后授予)。
作为一个基本的例子,想象一下你有一个像这样的表的mysql数据库:
id | chat_id |注意
1 | 1 |你好
2 | 1 |再见
然后,如果您的网址为note.php?chat_id=1
,那么您可以使用$chatId = $_GET['chat_id']
从网址抓取chat_id,并使用chat_id查询您的数据库中的所有笔记。然后任何浏览器都可以访问该网址,他们都会看到同样的事情。
在开发之前,你需要获得更基本的php知识......在你深入研究之前我会找到一个教程。
答案 1 :(得分:0)
这就是你需要的东西
session_start();
if(isset($_POST['text']))
{
$_SESSION['note']=$_POST['text'].'<br>'.$_SESSION['note'];
}
但是,会话ID在不同浏览器上会有所不同
答案 2 :(得分:0)
这可以使用session_id()函数完成,但由于恶意用户可能生成随机会话ID并劫持会话,因此非常不安全。最好将此信息存储在数据库中并创建API以与您的应用程序进行交互。
更新的前沿方法是使用angularJS和socket.io。这将成为一个完美的聊天室应用程序。