小编Car*_*ers的帖子

安全地处理PHP中的客户端"会话"

我(到目前为止)已经使用客户端cookie和数据库条目处理用户会话.

当用户登录时,我生成一个guid并将其放在客户端计算机上的cookie中.然后我在'sessions'表中创建一个条目,并在那里添加guid,ip地址,用户名,权限等.然后当用户访问页面时,我检查是否有会话cookie.如果是这样,我检查数据库中的guid在cookie中,并确保IP地址匹配.如果是,则用户使用db表中的其余信息登录.如果出现问题(错误的IP地址,过期的会话等),我删除数据库条目并删除guid cookie.

我之前从未使用过$ _SESSION全局.

我的方式是好的做法还是我需要重新思考我是如何处理这个?

php session

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

如何创建正常的win32编辑控件?

我正在尝试创建一个带有常规3D边框的编辑控件(无论如何都采用经典的Windows风格),但它周围只有1px的黑色边框.这是我的CreateWindowEx电话:

return CreateWindowEx(0, "EDIT", "E:\\bk",
                      WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT,
                      87, 81, 150, 17,
                      main_window.hwnd,
                      (HMENU)5, hInstance, NULL);
Run Code Online (Sandbox Code Playgroud)

如果我排除WS_BORDER那么它只是一个白色的盒子.关于这里有什么问题的任何想法?

更新

WS_EX_CLIENTEDGE做了伎俩.我对清单文件一无所知,或者如何使窗口使用更现代的Windows主题(例如XP),而不是粗糙的3D边框.但是,当我确实学到这一切时,WS_EX_CLIENTEDGE会让他们使用这些主题,还是会强制执行3D外观?

c winapi

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

此页突出显示哪些编程错误?

http://dspace.dial.pipex.com/town/green/gfd34/art/bloopers.html

第一个似乎很简单;

return strcpy(malloc(strlen(s)), s);
Run Code Online (Sandbox Code Playgroud)

malloc可能会返回null,并strcpy可能尝试将数据复制到内存地址0.或者s可能是指向字符串(而不是数组)malloc的指针,并且只会为指针分配足够的空间,并尝试将字符串复制到其中.(我认为).

那第二个怎么样?

当他写下ch = toupper(ch)时,他没有给无符号字符添加ch,真是太遗憾了;

你为什么要投chunsigned char你写的ch = toUpper(ch);

c

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

jQuery中class和id有什么区别?

jQuery中class和id有什么区别?例如:

<span class="lalal"></span>
Run Code Online (Sandbox Code Playgroud)

<span id="lalal"></span>
Run Code Online (Sandbox Code Playgroud)

因为一个适用于jQuery而另一个不适用.谢谢.

html jquery

4
推荐指数
2
解决办法
5733
查看次数

在Apache/Windows中使用像PHP这样的Python

我知道我应该使用mod_wsgi来运行Python,并且我一直试图设置它,但我对此感到困惑:

这是我为web.py找到的示例配置:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /appname /var/www/webpy-app/code.py/

Alias /appname/static /var/www/webpy-app/static/
AddType text/html .py

<Directory /var/www/webpy-app/>
    Order deny,allow
    Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

所以...我明白我必须配置我的Web服务器指向python应用程序?有没有办法像PHP一样使用它,当你请求.py文件时,Python会解释它?如何让我的Web服务器进入非常基本的状态,我可以上传包含的文件print "Hello World",请求它,并让它说"Hello World"?

python apache configuration

4
推荐指数
2
解决办法
2128
查看次数

如何使这个简单的列表理解?

我是python的新手,我正在努力更好地了解列表推导.
我甚至不确定列表理解是否是我正在寻找的词,因为我没有生成列表.但我正在做类似的事情.

这就是我想要做的:

我有一个数字列表,其长度可以被三整除.

所以说我nums = [1, 2, 3, 4, 5, 6] 想要迭代列表并获得每组三位数的总和.目前我这样做:

for i in range(0, len(nums), 3):
    nsum = a + b + c for a, b, c in nums[i:i+3]
    print(nsum)
Run Code Online (Sandbox Code Playgroud)

我知道这是错的,但是有办法做到这一点吗?我确信我忽略了一些非常简单的事情......但我想不出另一种方法可以做到这一点.

python list-comprehension

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

如果sqlite3满足条件,则插入表中

如果我有两个表:files(id, owner)并且share(file_id, user),所有者和用户将是理论用户表的主要ID,那么share只有在进行共享的用户拥有该文件时,如何插入条目?

这是一个简化的示例,因此我只使用文字作为执行共享操作的文本 - 通常此值将来自会话.所以,如果我有:

files:
id: 1, owner: 1

并且用户2想要查看文件1,我会使用此查询:

insert into share values (1, 2)
Run Code Online (Sandbox Code Playgroud)

但这是不允许的 - 用户2不拥有文件1,用户1没有.我试图在一个查询中执行此操作,但我无法弄明白.我试过了:

case when (select owner from files where id=1) is 2
    then (insert into share values (1, 2));

case (select owner from files where id=1) is 2
    then (insert into share values (1, 2));

insert into share values (1, 2)
    where 2 not in (select owner from files where id=1)
Run Code Online (Sandbox Code Playgroud)

它们都是语法错误.我是从Python做的,所以在这个查询之后,我只是检查Cursor.rowcount它是否为1或0,如果它是0,那么用户没有权限来完成操作.

如何正确编写此查询?

sqlite conditional insert

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

试着开始使用git

我正在尝试开始使用git,但我马上遇到了一些麻烦.我正在使用Git GUI for Windows.请记住,我之前从未使用过版本控制,也不知道它是如何工作的.

我所拥有的是我的笔记本电脑硬盘上的文件夹中的Code :: Blocks C项目.我打开Git并在USB硬盘上创建了一个新的存储库.我想,我可以创建一个分支,它导致我的项目已经存在的目录,然后将其中的所有代码提交到存储库.然后,每次我想要处理这个项目时,我都可以查看我的代码,打开Code :: Blocks项目并进行编辑.然后进入不同的分支和东西,你知道,所有的爵士乐.

所以我创建了这个存储库,然后从菜单中创建了一个分支.我收到了这个对话框,要求我提供分支名称,或者"匹配跟踪分支名称(无论这意味着什么)".然后,在"正在开始修订"下,它有几个选项.一个是文本框旁边的"修订表达式",无论我输入什么,它都是无效的修订表达式.所以我尝试了其他选项,"Local Branch","Tracking Branch"和"Tag".这些启用了另一个文本框,但即使未选择"修订表达式",它仍然表示我输入了一个无效的文本框.什么是修订表达式?我如何只是检查代码到我硬盘上的目录?

哦,然后,有一个"选项"部分,其中包含"更新现有分支:[]否[x]仅限快进[]重置",
以及两个复选框,"获取跟踪分支"和"创建后检出"(此一个是显而易见的." 所有这些意味着什么?什么是跟踪分支?"仅限快进"和"重置"是指什么?我不知道我在做什么,或者我已经把自己弄到了什么地方.

git version-control

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

如何阻止命令提示符出现在Win32 C应用程序中?

我真的不知道为什么会发生这种情况......我在emacs中创建了一个win32应用程序,每当我创建并运行它(而不是通过命令提示符)时,窗口下会弹出一个命令提示符窗口.如果我在Code :: Blocks中构建一个win32应用程序,并只运行其默认模板,那么它将在没有命令提示符窗口的情况下运行.我查看了两者的代码,无法弄清楚可能导致这种情况的原因......

我以为是因为我在那里包含了一些printf()语句,但我不希望它们留在那里(它们用于调试),所以我写了一个宏:

#define DEBUG
Run Code Online (Sandbox Code Playgroud)

在main.c中,和

#ifdef DEBUG
#include<stdio.h>
#define DBG printf
#else
#define DBG
#endif
Run Code Online (Sandbox Code Playgroud)

在标题中(#define DEBUG当然包括在内).

当我unf'd DEBUG时,窗口仍然出现......我不知道我在做什么来实现它,有什么样的东西导致命令提示窗口显示在win32应用程序中?我尝试使用所有的****Ex()Windows功能而不仅仅是CreateWindow()等等,但这并没有改变任何东西.我检查并重新检查了类的定义和注册,但无济于事,并确保我没有忘记printf()语句(即使我这样做也会导致错误,因为stdio.h除非定义了DEBUG ,否则不会包括).

这是我包括的内容:

#include<windows.h>
#include<windowsx.h>
#include"main.h"
#include"windowproc.h"
Run Code Online (Sandbox Code Playgroud)

有谁知道这会导致什么?我甚至评论了我所有的stdio,DBG,printf垃圾,它仍然出现了,我发誓我的代码和Code :: Blocks生成的代码之间没有区别,除了我使用HANDLE_MSG和一些额外的功能拆分代码.

更新

我正在使用MinGW 3.4.5.使用-mwindows开关工作,谢谢

c winapi command-prompt

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

是否可以单独包装PHP库函数来更改名称?

我将在今年夏天开始一个相当大的PHP应用程序,我将成为唯一的开发人员(所以我没有任何编码约定,以符合我自己的).

尽管有愚蠢的命名空间令牌,PHP 5.3仍然是一种不错的语言IMO.但有一件事总是让我困扰的是标准库和缺乏命名约定.

所以我很好奇,在我自己的函数/类中包含一些最常见的标准库函数以使名称更好一点,这是非常糟糕的做法吗?我想在某些情况下它也可以添加或修改某些功能,虽然目前我没有任何示例(我想我会找到方法让它们成为OO或让它们在我工作时有点不同).

如果你看到一个PHP开发人员这样做,你会想到"伙计,这是一个劣质的开发人员吗?"

另外,我对PHP是否/如何优化知之甚少(或任何事情),我知道通常PHP性能无关紧要.但是这样做会对我的应用程序的性能产生显着影响吗?

php standard-library

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