小编Ian*_*Ian的帖子

我如何保护Socket.IO?

我已经和Socket.IO一起工作了几天,这既令人兴奋又令人沮丧.缺乏当前的文档/教程使学习变得非常困难.我终于设法创建了一个基本的聊天系统,但有一个明显的问题.我该如何保护它?

是什么阻止恶意用户复制(或编辑)我的代码并连接到我的服务器?我可以从我的PHP脚本中获取用户名并将其提交给Socket.IO,这样我就可以将它们识别为该用户(当然PHP具有安全性),但是什么阻止某人提交未注册的用户名?

如何确保提交的事件是真实的并且没有被篡改?

我的基本socket.io聊天参考.

服务器:

var io = require('socket.io').listen(8080);
var connectCounter = 0;
io.sockets.on('connection', function (socket) {
connectCounter++;
 console.log('People online: ', connectCounter);

socket.on('set username', function(username) {
socket.set('username', username, function() {
console.log('Connect', username);

    });
});
socket.on('emit_msg', function (msg) {
    // Get the variable 'username'

socket.get('username', function (err, username) {
      console.log('Chat message by', username);
      io.sockets.volatile.emit( 'broadcast_msg' , username + ': ' + msg );
    });

  });

socket.on('disconnect', function() { connectCounter--; });
});
Run Code Online (Sandbox Code Playgroud)

客户:

    <?php session_start() ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta …
Run Code Online (Sandbox Code Playgroud)

javascript security node.js socket.io

31
推荐指数
1
解决办法
3万
查看次数

javascript encodeURIComponent并将空格转换为+符号

我想编码我的URL,但我想将空格转换为加号.

这就是我试图做的......

var search = "Testing this here &";

encodeURIComponent(search.replace(/ /gi,"+"));
Run Code Online (Sandbox Code Playgroud)

从那里得到的输出是Testing%2Bthis%2Bhere%2B%26我想要的是Testing+this+here+%26我尝试用空格替换%20它以将其转换为加号,但这似乎不起作用.谁能告诉我这是什么我在这里做错了?

javascript regex replace encodeuricomponent

17
推荐指数
1
解决办法
2万
查看次数

使用Javascript将iso时间戳转换为日期格式?

这似乎是一个非常简单的问题,但我似乎无法得到答案.如何使用JavaScript转换iso时间戳以显示日期/时间?

示例时间戳:2012-04-15T18:06:08-07:00

感谢任何帮助,谷歌让我失望.谢谢.

javascript jquery iso timestamp date

14
推荐指数
1
解决办法
4万
查看次数

使用箭头键浏览列表?(JavaScript的/ JQ)

我似乎无法找到如何实现这一目标的答案,但这是我多次见过的一个功能.基本上我正在回显列表,我想创建使用箭头键/输入突出显示和选择这些项目的功能.有人可以帮助我了解如何实现这一目标吗?我知道如何使用密钥代码(当然),而不是如何将其转换为功能代码以选择列表中的项目...

我想也许我必须有一些隐藏的单选按钮来将其标记为选中或不...但即使这样我也不知道如何从一个单选按钮跳到另一个上下列表.所以如果有人能帮我一把,我真的很感激.谢谢.

javascript navigation jquery arrow-keys

13
推荐指数
3
解决办法
3万
查看次数

以编程方式根据状态更改UIButton字体颜色

我正在尝试以编程方式创建一个UIButton.但是默认情况下它会变为白色(这是我导航栏的默认颜色,我觉得这是相关的).我希望它只是Apple7在iOS7中的默认蓝色.我已经设法改变它的默认状态的颜色,但是当我选择它时,文本再次变为白色.我无法弄清楚如何保持蓝色.

有人可以向我解释我如何以编程方式创建一个UIButton并使其行为与我在故事板中创建它一样吗?

当前代码:

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
cancelButton.frame = CGRectMake(320 - 150, 0, 140, 40);
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
cancelButton.titleLabel.tintColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
cancelButton.titleLabel.textColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
Run Code Online (Sandbox Code Playgroud)

谢谢.

cocoa-touch objective-c uibutton ios

10
推荐指数
1
解决办法
2万
查看次数

如何使用javascript/jquery从URL中删除get变量和文件名?

我正在调查这个问题,但我找不到任何可靠的答案来达到这个目的.假设我有一个URL ...

http://mysite.com/stuff/index.php?search=my+search

我怎样才能抓住这个URL并删除index.php?search = my + search,这样就可以了http://mysite.com/stuff/?基本上我只是想获取没有文件名的父URL或获取变量...无论URL是什么(所以我不必为我想要使用的每个页面自定义函数)

所以另外一个例子,如果只是......

http://mysite.com/silly.php?hello=ahoy

我只想返回http://mysite.com的根目录

任何人都可以帮我解决这个问题吗?我完全迷失了.

javascript regex variables url jquery

8
推荐指数
1
解决办法
8685
查看次数

强制用户注销会话PHP

我似乎无法找到这个问题的直截了当的答案.有没有办法可以强制登录用户注销?我的登录系统基本上只依赖于包含用户唯一ID(存储在mysql数据库中)的会话.所以基本上只是......

if (isset($_SESSION['user_id'])) {
echo "You're logged in!";
} else {
echo "You need to login!";
}
Run Code Online (Sandbox Code Playgroud)

但是,假设我想要禁止这个用户,我可以将其状态更改为在我的数据库中禁止,但在用户注销并尝试重新登录之前,这将不会执行任何操作...因此,如何强制此用户退出?最好不要每次检查他们查看页面是否他们的状态已被切换为"禁止",因为这似乎是我服务器上的不必要的压力.感谢任何帮助,谢谢.

php session login logout

7
推荐指数
2
解决办法
1万
查看次数

修复了移动safari网站上带有文本字段的标题

我一直在寻找一段时间,我似乎无法找到解决这个问题的方法.当输入字段在移动safari中获得焦点时(尚未检查其他浏览器),由于safari将该元素放入视图(更靠近中心),固定元素将跳转.该错误仅在用户滚动时发生,如果用户仍在页面顶部,则不会发生任何错误.

截图前后

在焦点之前

焦点之后

有没有人知道如何解决这个问题?我遇到的唯一解决方案是在聚焦时滚动回到顶部,然后在模糊滚动回到位置......这看起来像是一个非常草率的解决方案.

这是屏幕截图中的示例网站,非常基本,没有任何规范.

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, scale=1"/> 
    <title>MySite</title>
    <style>
    body{
        height:100%;
        width:100%;
        padding:0;
        margin:0;
        font-size:16px;
        font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
    }
    header, footer {
        background-color:#333;
        padding:10px;
        color:#FFF;
        width:100%;
    }
    header {
        position:fixed;
        top:0;
        left:0;

    }
    input[type=search] {
        position:relative;
        margin-left:20px;
        width:160px;
        font-size:16px;
        height:26px;
    }
    section{
        padding:10px;
    }
    </style>
</head>
<body>
<header>
<b>MySite</b>
<input type='search' placeholder='Search'>
</header>
<section>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, …
Run Code Online (Sandbox Code Playgroud)

javascript css header css-position mobile-safari

6
推荐指数
1
解决办法
706
查看次数

在.each中设置JavaScript/jQuery clearInterval

所以我为每个帖子创建了一个间隔,问题是我加载了新帖子并删除了旧帖子,所以显然我想停止之前帖子的间隔.但是我似乎无法弄清楚如何做到这一点.有人可以向我解释如何正确地做这件事吗?我完全迷失了.

$(".post").each(function(){
    myInterval = setInterval("postStats('"+$(this).attr('id')+"')", 500);
});

function postStats(pid) {
    //do some stuff
}

$(".button").click(function(){
    clearInterval(myInterval);
});
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery setinterval clearinterval

5
推荐指数
1
解决办法
447
查看次数

iOS:具有多个收件人的启动消息应用程序

我正在尝试进行设置,以便我的用户可以将文本发送给一群人。现在使用电子邮件很简单,URL方案就是mailto://firstemail@email.com,secondemail@email.com可以与该openURL方法一起使用的方案。

很自然,当涉及到SMS时,我决定尝试一下,sms://2065555555,2061234567但是这不起作用(它只会添加第一个数字)。在浏览了一下Google之后,我发现一些较旧的线程声称使用URL方法无法向多个收件人发短信。

为了将消息发送给多个人,我继续进行操作并将其添加MessageUI到我的应用程序中,并连接了MFMessageComposeViewControllerDelegate,现在我可以一次将确实要发送的消息发送给多个人。但是只能从我自己的应用程序中进行,这不是我想要的。我希望框架中有一些东西可以让我利用多个收件人功能,然后在默认的Messenger中启动它,但是我找不到任何允许它的东西。

简而言之,有什么办法可以编码我的应用程序,以使用多个收件人填充默认的Messages应用程序?

编辑

实际上,我确定必须有一种方法,我检查了Cobook应用程序,他们允许用户选择联系人,然后启动Messages应用程序发送“ New Group MMS”。

sms cocoa-touch objective-c ios

5
推荐指数
2
解决办法
1779
查看次数

如何向其他用户显示“用户正在输入...”?

我正在开发一个消息系统,我想在用户打字或不打字时显示。我想我会如何做到这一点,只是在我的数据库中有一个名为“打字”的表,其中包含正在打字的人、他们正在打字的人以及时间的列。每次他们在输入字段中按下一个键时,我都会将其发布到数据库(但这似乎会减慢网站速度)。然后我会运行一些 javascript 来检查输入字段中的列是否早于 5 秒,如果不是,则显示该消息,如果是,则将其删除。

这似乎是一种非常直接的方法,但我想知道是否有更好的选择。我对如此频繁地向数据库发布帖子感到不舒服。那么有人知道更好的方法可以实现这一点吗?如有任何帮助,我们将不胜感激,谢谢。

javascript sql jquery chat typing

2
推荐指数
1
解决办法
1881
查看次数

带有node-mysql的nodejs/socket.io 安全混乱

所以我开始研究node-mysql,因为我的整个站点都是用PHP构建的,但是我想使用node/socket.io来顺利进行异步用户端更新.但是我在node-mysql中遇到了一个问题,我还没有得到答案.mysql服务器的登录信息如何不是公共信息?

根据文档https://github.com/felixge/node-mysql你连接到数据库就像这样

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
});

connection.connect();

connection.query('SELECT 1', function(err, rows, fields) {
  if (err) throw err;

  console.log('Query result: ', rows);
});

connection.end();
Run Code Online (Sandbox Code Playgroud)

那么是什么阻止用户将服务器文件放入导航栏并查看mysql服务器的登录信息?我对此非常困惑,有人可以向我解释一下吗?

mysql security node.js socket.io node-mysql

1
推荐指数
1
解决办法
1045
查看次数

iOS:从UIImagePickerController中删除后退按钮文本

我正在尝试自定义我UIImagePickerController的状态栏外观.我有一个自定义图像我用于后退按钮,它正确显示,但我想要做的是删除文本(所以它只是图像).我经常在我的应用程序中执行此操作,但我似乎无法在其中使用它UIImagePickerController.

我想我可以做点什么......

UIImagePickerController *uiipc = [[UIImagePickerController alloc]init];
uiipc.navigationController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不起作用,当选择文件夹,例如"照片"时,我仍然可以获得自定义图像,旁边的文本"照片"为后退按钮.

有人可以帮我删除文字吗?

编辑:值得注意的是自定义图像是在我的应用程序委托中设置的,这就是为什么你在我的例子中没有看到它.

cocoa-touch objective-c uiimagepickercontroller uinavigationcontroller ios

0
推荐指数
1
解决办法
1099
查看次数