【发布时间】:2018-03-04 10:51:48
【问题描述】:
欢迎大家, 在我的项目中,我用 PHP 制作了一个社交网络,并使用 websocket 和 node.js 进行了聊天
我遇到的问题是我无法将消息保存在我的数据库中,因为我无法从输入表单中获取消息。
服务器端有node.js(仅限js) 客户端接受js,和php(.php扩展名)
我试图将消息保存在服务器端,但我不能,因为该项目在 php 中有每个用户的会话,所以..
我试图将消息保存在 .php 扩展名中的客户端内,
我尝试过的是将输入保存在我写消息的地方,
我会留下客户端代码:
<?php
session_start();
if(!isset($_SESSION["user"])){
header("location:../login.php");
}
require "../config.php";
$conn = mysqli_connect($hostname,$username,$passw,$database);
$user=mysqli_real_escape_string($conn,$_SESSION["user"];
$q1 = mysqli_query($conn,"SELECT * FROM usuario2 WHERE Usuario = '".$user."'");
while($row = mysqli_fetch_assoc($q1)){
$id = mysqli_real_escape_string($conn, $row['ID']);
}
$query1 = mysqli_query($conn,"SELECT * FROM `chat1` WHERE id_em='$id' OR id_rec='$id'");
while($row = mysqli_fetch_array($query1)){
$row["id_em"];
}
$codroom=$_POST["user3"];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php
header("Access-Control-Allow-Origin: *");
?>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
<title>Chat con nodejs + socket.io</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<style>
h2 {
margin-top: 20px;
}
.input-group-addon{
background-color: rgb(2, 117, 216);
color: #efefef;
}
#messages {
padding: none;
}
.chat-window {
height: 500px;
border: 1px solid #cccccc;
margin-bottom: 10px;
padding: 1rem;
overflow-y: scroll;
}
.msg {
margin-bottom: 1rem;
}
.id{
font-weight: bolder;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<h2>Websocket & Socket.io Chat</h2>
</div>
<script type="text/javascript">
var socket = io.connect( 'http://localhost:1334' );
$(function(){
$("form").submit(function(){
var mensaje = $("#msg").val();
if(mensaje=='') return false;
if(mensaje==' ') return false;
//evento message en el server nodejs
console.log(mensaje)
socket.emit('message',mensaje);
$("#msg").val('').focus();
return false;
});
$("#channel").change(function(){
socket.emit('change channel',$("#channel").val());
});
});
socket.on('message',function(msg){
$('#message').append($('<p><strong>' + '<?echo $_SESSION["user"]?>' + ': </strong>' + msg + '</p>'));
$('.chat-window').scrollTop($('#message').height());
socket.on('change channel',function(channel){
$("#message").html('').append($('<li>').text('system : Bienvenido al Canal '+channel+' !'));
});
</script>
<div class="col-md-12">
<div class="chat-window">
<div id="message"></div>
</div>
<div id="controls">
<form action="" method="post">
<select name="channel" id="channel">
<option value="<?echo $codroom?>">Channel A</option>
<option value="<?echo $codroom?>">Channel B</option>
</select>
<div class="col-md-12">
<div class="input-group enter-chat-message">
<input type="text" id="msg" name="a" class="form-control" placeholder="Chat Message...">
<input class="input-group-addon submit-chat-message" type="submit" id="btn" name="submit" value="Enviar">
</div>
</div>
</div></div>
</form>
</div></div></div></div>
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
我试图获取名称为“a”的输入表单消息:
if(isset($_POST['submit'])){
$aa=$_POST['a'];
$sql4 = "INSERT INTO as3 (aa1) VALUES('$aa')";
$resultado = mysqli_query($conn, $sql4); // Realizamos la consulta. mysqli_query() parámetros: conexión, consulta
}
或低于 $("form").submit(function(){
试图在 PHP 变量中获取消息以将其插入数据库。
也许我尝试的东西很简单,但是在 node.js 和 php 中使用它有点困难,因为我是使用 node.js 的初学者
对不起,如果我的英语不完美, 希望您能帮帮我,谢谢!
【问题讨论】:
标签: javascript php node.js forms websocket