我已经和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) 我想编码我的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转换iso时间戳以显示日期/时间?
示例时间戳:2012-04-15T18:06:08-07:00
感谢任何帮助,谷歌让我失望.谢谢.
我似乎无法找到如何实现这一目标的答案,但这是我多次见过的一个功能.基本上我正在回显列表,我想创建使用箭头键/输入突出显示和选择这些项目的功能.有人可以帮助我了解如何实现这一目标吗?我知道如何使用密钥代码(当然),而不是如何将其转换为功能代码以选择列表中的项目...
我想也许我必须有一些隐藏的单选按钮来将其标记为选中或不...但即使这样我也不知道如何从一个单选按钮跳到另一个上下列表.所以如果有人能帮我一把,我真的很感激.谢谢.
我正在尝试以编程方式创建一个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)
谢谢.
我正在调查这个问题,但我找不到任何可靠的答案来达到这个目的.假设我有一个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的根目录
任何人都可以帮我解决这个问题吗?我完全迷失了.
我似乎无法找到这个问题的直截了当的答案.有没有办法可以强制登录用户注销?我的登录系统基本上只依赖于包含用户唯一ID(存储在mysql数据库中)的会话.所以基本上只是......
if (isset($_SESSION['user_id'])) {
echo "You're logged in!";
} else {
echo "You need to login!";
}
Run Code Online (Sandbox Code Playgroud)
但是,假设我想要禁止这个用户,我可以将其状态更改为在我的数据库中禁止,但在用户注销并尝试重新登录之前,这将不会执行任何操作...因此,如何强制此用户退出?最好不要每次检查他们查看页面是否他们的状态已被切换为"禁止",因为这似乎是我服务器上的不必要的压力.感谢任何帮助,谢谢.
我一直在寻找一段时间,我似乎无法找到解决这个问题的方法.当输入字段在移动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) 所以我为每个帖子创建了一个间隔,问题是我加载了新帖子并删除了旧帖子,所以显然我想停止之前帖子的间隔.但是我似乎无法弄清楚如何做到这一点.有人可以向我解释如何正确地做这件事吗?我完全迷失了.
$(".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) 我正在尝试进行设置,以便我的用户可以将文本发送给一群人。现在使用电子邮件很简单,URL方案就是mailto://firstemail@email.com,secondemail@email.com可以与该openURL方法一起使用的方案。
很自然,当涉及到SMS时,我决定尝试一下,sms://2065555555,2061234567但是这不起作用(它只会添加第一个数字)。在浏览了一下Google之后,我发现一些较旧的线程声称使用URL方法无法向多个收件人发短信。
为了将消息发送给多个人,我继续进行操作并将其添加MessageUI到我的应用程序中,并连接了MFMessageComposeViewControllerDelegate,现在我可以一次将确实要发送的消息发送给多个人。但是只能从我自己的应用程序中进行,这不是我想要的。我希望框架中有一些东西可以让我利用多个收件人功能,然后在默认的Messenger中启动它,但是我找不到任何允许它的东西。
简而言之,有什么办法可以编码我的应用程序,以使用多个收件人填充默认的Messages应用程序?
实际上,我确定必须有一种方法,我检查了Cobook应用程序,他们允许用户选择联系人,然后启动Messages应用程序发送“ New Group MMS”。
我正在开发一个消息系统,我想在用户打字或不打字时显示。我想我会如何做到这一点,只是在我的数据库中有一个名为“打字”的表,其中包含正在打字的人、他们正在打字的人以及时间的列。每次他们在输入字段中按下一个键时,我都会将其发布到数据库(但这似乎会减慢网站速度)。然后我会运行一些 javascript 来检查输入字段中的列是否早于 5 秒,如果不是,则显示该消息,如果是,则将其删除。
这似乎是一种非常直接的方法,但我想知道是否有更好的选择。我对如此频繁地向数据库发布帖子感到不舒服。那么有人知道更好的方法可以实现这一点吗?如有任何帮助,我们将不胜感激,谢谢。
所以我开始研究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服务器的登录信息?我对此非常困惑,有人可以向我解释一下吗?
我正在尝试自定义我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
javascript ×8
jquery ×5
cocoa-touch ×3
ios ×3
objective-c ×3
node.js ×2
regex ×2
security ×2
socket.io ×2
ajax ×1
arrow-keys ×1
chat ×1
css ×1
css-position ×1
date ×1
header ×1
iso ×1
login ×1
logout ×1
mysql ×1
navigation ×1
node-mysql ×1
php ×1
replace ×1
session ×1
setinterval ×1
sms ×1
sql ×1
timestamp ×1
typing ×1
uibutton ×1
url ×1
variables ×1