Tag: php

用于Socket.IO实时聊天的nodeJS和PHP(Laravel)集成

目前我有一个网站,我通过Laravel框架写在PHP上。 我用Socket.IO和Express写了一个使用nodeJS的实时聊天,现在我想要做的就是将它集成到我已经写好的Laravel网站中。 问题是聊天必须在主页面,这是目前由Laravel的意见。 目前我正在共享主机上。 问题:这种整合最好的build议是什么? 我知道LAMP堆栈已经在大多数共享域中准备好了,但我完全不知道如何让PHP(Laravel)和我的nodeJS聊天工作在一起。 我已经尝试过的事情: Elephant.IO – 没有任何大的成功,但…

Yii2 DropDownList Onchange更改自动完成Widget的“源”属性?

我已经试过这个: yii2依赖的自动填充小部件 但我不知道为什么它不工作。 这里我的脚本的HTML: <?= $form->field($model, 'lbt_holder_type')->dropDownList(['prompt' => '— Select Holder Type —', 'S' => 'Student', 'E' => 'Employee'], ['onChange' => 'JS: var value = (this.value); if(value == "S"){$(#libraryborrowtransaction-name).autoComplete({source: '. $s_data.');} if(value == "E"){$(#libraryborrowtransaction-name).autoComplete({source: '. $e_data.');} '])?> 自动完成: <?= $form->field($model, 'name')->widget(\yii\jui\AutoComplete::classname(), [ 'options' => ['class' => 'form-control', 'placeholder' => 'Enter Name/ID'], 'clientOptions' => [ 'source' […]

PHP与Node.js – HTML呈现与Jade的Node.js较慢吗?

假设我们每天有数百万个请求。 使用Jade的Node.js中的HTML处理是否比PHP的渲染引擎慢或更快? 或者不重要,因为差别很小? 我使用的是Jade模板引擎的 Node.js ,我非常喜欢它。 但我总是那个担心表演的人。 我从PHP开始我的开发生涯,这很有趣,但是现在Node看起来好多了,所以我决定切换。 我使用Jade渲染HTML,因为node.js本身就缺less它(我知道这听起来有点愚蠢,因为Jade也是节点:P)。 但是因为Jade是Node中的一个模块,所以我有点困惑,也许这会降低渲染过程的速度。

在nodejs中encryption

我试图将以下php代码移植到node.js上的javascript: $mac = hash_hmac('SHA256', 'string', 'secret', true); $coded = base64_encode($mac); 我已经尝试了以下内容: var Crypto = require('crypto'); var code = Crypto.util.bytesToBase64(Crypto.HMAC(Crypto.SHA256, 'string', 'secret', { asBytes: true })); 我得到的错误: TypeError:Object #Object没有方法'HMAC' 我是新来的node.js,我做错了什么? 更新: var code = Crypto.createHmac('SHA256',secret_key).update(to_encode).digest('base64');

将webpack与现有的PHP和JS项目一起使用

我有一个现有的PHP项目与jQuery和引导,不使用任何前端框架。 我正在尝试使用webpack模块打包器来为我的项目资源创build一个入口点,使用节点js包pipe理器来pipe理js依赖关系,运行任务以缩小js css,图像重新大小等等。 并提高加载单个页面所需的浏览器加载时间。 我遇到了webpack的教程,并得到安装它,并安装其开发服务器,但问题是,我不能够了解如何将我所有的当前js脚本和CSS链接在项目中(我有很多用于在项目中提供多个function的jquery和CSS库)使用webpack。 我是否必须以适合webpack的方式来重写所有的JS和CSS文件? 我如何成功迁移? 另外,我无法在webpack dev-server上运行我的当前php应用程序,它是否意味着首先在那里运行? 同时只列出项目的目录。 我创build了一个testingindex.js文件,并使用下面的webpackconfiguration: var path = require('path'); var webpack = require('webpack'); module.exports = { entry: [ './public/js/index.js', 'webpack/hot/dev-server', 'webpack-dev-server/client?http://localhost:8080' ], plugins: [ new webpack.HotModuleReplacementPlugin() ], output: { path: path.join(__dirname, "public/dist/js"), publicPath : "http://localhost:8080/my_proj/public/dist/js", filename: "bundle.js" } }; 我添加bundle.js到我的脚本加载只是为了testing,如下所示,希望应用程序将在webpack开发服务器上运行: <script type="text/javascript" src="public/dist/js/bundle.js"></script> <script type="text/javascript" src="public/js/jquery.min.js"></script> <script type="text/javascript" src="public/js/jquery.migrate.js"></script> […]

无法获取/使用gulp-connect-php

我正在使用gulp-connect-php尝试使用BrowserSync在本地运行一个php服务器。 这是我的gulpconfiguration文件: var gulp = require('gulp'), connect = require('gulp-connect-php'), browserSync = require('browser-sync'); gulp.task('connect-sync', function() { connect.server({}, function (){ browserSync({ server: { baseDir: "app" }, // proxy: '127.0.0.1:8000' }); }); gulp.watch('**/*.php').on('change', function () { browserSync.reload(); }); }); gulp.task( 'default', [ 'connect-sync' ] ) 上面的代码在我的应用程序目录中有一个index.html文件,但是当我用一个index.php文件replace它时,我得到以下消息: 不能获取 / 不完全确定我在这里做错了什么?

PHP + socket.io(会话,授权和安全问题)

我有一个工作的PHP应用程序,我想添加实时支持。 我想使用nodejs / socket.io来添加这种function。 我发现的第一个问题是如何在nodejs端正确授权用户(用户已通过PHP会话在php后端进行身份validation)。 在nodejs端使用socket.handshake.header.cookie我可以parsing和获取PHP会话ID,我可以通过redis / memcache / database(取决于我用来保存会话信息)进行身份validation。 当用户只有一个网站的标签页/窗口打开时,一切看起来很酷 – 当有更多的使用session_regenerate_id() ,在nodejs用户authentication与另一个sessionid键,所以我不能区分两个标签除了他们连接的套接字ID用。 当用户注销时,他不应该在任何选项卡上收到任何消息(因为他已经从该浏览器的每个选项卡/窗口注销)。 所以在注销消息(从浏览器刚刚注销PHP的事情发送),我应该删除所有连接到授权用户ID的套接字连接。 但是,如果用户login在两个设备上(如电脑浏览器和iPad游戏)。 在注销一个设备后,他不应该在他注销的设备上收到任何消息,而不是在每个设备上。 如何区分socket.io中不同设备/浏览器的连接? 当然,不使用session_regenerate_id()会很有效,但是如果我真的想要使用这个function,我该怎么办? 我的另一个问题是安全问题(甚至是问题)。 我们假设应用程序中的授权用户可以看到example.com/user1页面(这是user1的新闻提要),并且看不到example.com/user2 (他没有看到它的权限)。 当用户在example.com/user1上时 ,我想让socket.io向浏览器发送更新消息,当用户在example.com/user2上时 ,当然不会发送更新消息。 在socket.io端我可以读取引用地址(据推测,当用户在user2网站上,他没有得到任何socket.io连接)。 问题是: 我应该比较referer地址与node.js端的身份validation用户的权限? 或者也许引用值在node.js方面是安全的? 在node.js端添加另一个数据库检查会降低速度(因为几乎所有的请求都应该在两边同时进行数据库检查 – PHP和node.js)。 或者,也许整个概念的socket.io + PHP应用程序工作我提出的方式是错误的? UPDATE 我想我find了一个方法来省略第一个问题的问题 – 基本上我只是添加另一个cookie(除了PHPSESSID)fe。 命名为NODESESSID,我在用户授权时生成(使用uniqid())。 现在在node.js端的授权是比较PHPSESSID和NODESESSID(都必须匹配)。 现在,当用户注销时,他将消息注销传递给socket.io,而socket.io将使用NODESESSID断开所有的套接字。 这就像连接重新生成会话ID的好处,而不是重新生成会话ID(但不容易受到会话固定,不是吗?)。

如何从客户端发送数据到redis,然后到laravel

我正在使用laravel和redis进行实时聊天。 我可以从我的laravel发起事件,并将这些数据接收到客户端。 我的问题是我怎么能从客户端发送的东西,然后接收到它redis并将其传递给laravel 例如,我如何检查用户是否已经阅读聊天消息。 代码: var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require( 'socket.io' ).listen( server ); var redis = require('redis'); var port = process.env.PORT || 8888; server.listen(port,'xxxx'); io.on('connection', function (socket) { console.log("Connected"); }); var redisClient = redis.createClient(); redisClient.psubscribe(['get_message','read_message']); redisClient.on("pmessage", function(channel, pattern, message) { console.log(channel); // i […]

configurationpassport-ldap

试图使用这个包: https : //www.npmjs.com/package/passport-ldapauth 我设法find我的公司的ldap设置在一个medawikiserver(php) $wgLDAPDomainNames = array("COMPANY"); $wgLDAPGroupBaseDNs = array("COMPANY"=>"dc=company,dc=se"); $wgLDAPAutoAuthDomain = "COMPANY"; $wgLDAPGroupUseFullDN = array("COMPANY"=>true ); $wgLDAPServerNames = array("COMPANY"=>"dcst.company.se"); $wgLDAPSearchStrings = array("COMPANY" => "COMPANY\\USER-NAME" ); $wgLDAPSearchAttributes = array("COMPANY"=>"sAMAccountName"); $wgLDAPBaseDNs = array("COMPANY"=>"dc=company,dc=se"); $wgLDAPEncryptionType = array("COMPANY" => "ssl" ); $wgMinimalPasswordLength = 1; 我需要将其映射到节点包。 我试过这个: var opts = { server: { url: 'ldaps://dcst.company.se', bindDn: 'dc=company,dc=se', //bindCredentials: […]

我是否需要Python中的node.js,就像使用PHP一样?

我一直在使用PHP一段时间。 而且我一直在考虑学习node.js以配合使用非阻塞的想法来创build在线游戏或应用程序。 有两个一起使用这两个相当多的信息。 使用节点作为游戏后端的一部分可以真正加快游戏的某些方面,特别是如果游戏允许用户实时地相互对战。 那么最近我也一直在研究python(是的,我有很多时间在我手上)。 有很多关于它的function,我真的很喜欢。 但是为了使用node.js来做后台工作,就像我正在考虑用php一样,我根本找不到很多信息。 我也注意到python确实有一些线程特性。 由于我对python的世界还很陌生,我甚至需要python中的node.js吗? python可以处理node.js可以使用的这些特性吗? 或者还是会有利用节点,或者我真的需要它。 作为一个侧面说明,因为我开始查找Python,我也发现扭曲,这似乎是另一个框架像节点。 但是,扭曲是用python编写的。 所以在上述任何一种情况下,扭曲会更好(除了扭曲看起来更长,比节点更稳定的事实)。 我的意思是,一般来说,它是值得使用的,无论是节点还是扭曲。 如果是这样的话,那么一个比Python更好。 对不起,这个大问题,但我只是如此不确定,在这方面n00b。 谢谢。 因此,在阅读有用的答案后,我看到以下选项:1. PHP + JS 2. Python + Twisted 3. Python +睡衣4. Python + node.js 5. Node.js 6. Twisted 我已经知道PHP,并且对它感到满意,现在正在学习JS。 这对我来说是一条可能的路线。 但是我也从PHP到Python,因为我喜欢的语言的一般特征。 我认为这个select可能比#3更合理,使用扭曲来处理networking端口以允许玩家与对方一起玩。 这只是让你不必学习JS。 对我来说,这似乎不是什么大不了的事情。 我已经开始学习了,不难学。 但是就像在一个问题中提到的那样,把事情混在一起, 和{}可能会有一些问题。 像#2,但与node.js. 大多数情况下,我会看到添加节点来处理networking方面,让玩家能够在现场/实时游戏中玩。 而大部分的代码将在Python中。 唯一的节点,js是一个考虑,以及它是单一语言的路线。 但它没有学习和使用Python的同样好处(它是一种通用的脚本语言,我可以使用,也可以不使用网页devise,这是我想学习和使用它的一个重要原因)。 答案作为#5,但我没有考虑一个唯一的路线,直到阅读评论。 虽然看起来似乎有道理,但它并不涉及我想学习的两种语言之一。 Python和节点。 以上似乎是我可以走的主要路线。 现在我还不确定要走哪条路。 […]