小编HaL*_*eEk的帖子

C#Bitmap对象,颜色显示为透明

我正在使用C#中的程序来截取用户屏幕的一部分.尽管它应该是最有效的,但我最近遇到了一个问题.似乎(至少)一个像素颜色在输出图像中始终显示为透明.颜色#0D0B0C(RGB 13,11,12)的任何实例在保存的png中显示为透明.这是将PixelFormat设置为Format32bppArgb.如果我将其设置为Format32bppRgb或Format24bppRgb,则相同的像素颜色在保存的png中显示为黑色.

我不知道是什么导致这种情况,但我唯一能做的就是"修复"它是在执行CopyFromScreen()之前将图形对象清除为该颜色.出于某些原因,我不愿意这样做.首先,我不知道这是唯一有问题的颜色(使用16,777,216种颜色有很多可能性),其次,我讨厌修复黑客,这似乎是一个黑客修复.

任何人都可以解释可能导致这个问题的原因吗?我在位图创建上搞乱了PixelFormat,在CopyFromScreen方法中使用了CopyPixelOperation,似乎没什么用.将图形对象清除为该颜色"修复"的事实似乎告诉我透明度来自屏幕数据本身,但这没有意义.我一直盯着这个问题太久了,我想我需要对它有一个全新的看法.如果有人知道为什么会发生这种情况,我很乐意听到.谢谢.

c# graphics image bitmap pixelformat

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

使用Twitter登录,并保持登录状态(PHP)

我正在创建一个用户需要注册才能参与的网站.我正处于截止日期,我真的不想写一个完整的用户注册/登录系统,所以我想我会让Twitter API处理它.我已经在Twitter上注册了一个应用程序,并且我有适当的PHP代码,允许用户登录并允许访问我的应用程序.问题是,我不希望用户每次访问网站时都必须登录,我想实现"保持登录状态"选项,我只是在弄清楚如何做到这一点.

我可以简单地将oauth_token和oauth_token_secret存储在cookie中,并在每次有人访问该网站时阅读cookie.这些cookie值的存在(或不存在)将决定该人是否获得Twitter授权.当然,这是一种简单的方法,如果用户决定搞乱cookie,可能会发生不好的事情.

另一种方法是仅在cookie中存储oauth_token,并在我的数据库中保存oauth_token和oauth_token_secret.当用户访问时,我检查cookie值,如果它存在,我检查数据库是否有匹配值并获取秘密令牌,但如果用户得到其他人的oauth_token密钥,事情仍然可能出错.

最后一个选项是将token和token_secret存储在数据库中并生成一个唯一的随机值,也许对它进行一些任意操作以进一步模糊它,可能是md5()它,并将该值存储在cookie中,也可以数据库.

当然,我对这种事情一无所知,这就是我选择不编写自己的用户系统的原因.基本上我只是不希望用户每次都必须登录(甚至每次都必须点击"使用Twitter登录"链接).如果他们已经登录并且已经批准我的应用程序访问他们的帐户,我希望他们能够访问该网站并让它记住它们.最好的方法是什么?

php twitter cookies session oauth

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

MySQL + htaccess mod_rewrite?

我正在使用类似代理的短域与我的网站一起使用.短域是hrci.me,长域是reachchallenges.infectionist.com.hrci.me使用mod_rewrite并且有一个规则,它几乎可以从hrci.me重定向到challengechallenges.infectionist.com,例如:

hrci.me/x/y.php
Run Code Online (Sandbox Code Playgroud)

将重定向到

reachchallenges.infectionist.com/x/y.php
Run Code Online (Sandbox Code Playgroud)

很简单就可以了.在主站点上,我有更多规则可以进一步重写URL,使其美化.一个例子是我网站上的一个脚本challenge.php,它接受一个参数chid,它是链接到数据库中更多信息的挑战ID.作为参数化脚本传递它看起来像这样:/challenge.php?chid=123但是在重写之后它看起来像这样:/challenge/123/Challenge+Title/,Challenge+Title数据库中项目的实际标题.还有一种不同的方式可以调用同一页面,如下所示:/ch123所以实质上你可以通过3种不同的方式访问页面:

1. /challenge.php?chid=123
2. /challenge/123/Challenge+Title/
3. /ch123
Run Code Online (Sandbox Code Playgroud)

这实际上是完美的,我的问题是我希望从hrci.me重定向的URL首先被重写为上面的#2,因此用户将单击hrci.me/ch123并且htaccess文件将读取数据库,获取挑战ID 123的标题,重写网址/challenge/123/Challenge+Title/,然后将其重定向到reachchallenges.infectionist.com.这样的事情可能吗?是否有可能以这种方式使用htaccess从MySQL数据库中读取?

更新:我将此添加到我的httpd.conf文件中:

DBDriver mysql
DBDParams "host=*****,user=*****,pass=*****,dbname=*****"
RewriteMap hrci "dbd:SELECT title FROM challenges WHERE id = %s"
RewriteLog "/home/halo2freeek/rewrite.log"
RewriteLogLevel 3
Run Code Online (Sandbox Code Playgroud)

然后在我的一个子域中添加了一个RewriteRule,我并没有真正使用它(测试它):

RewriteEngine On
RewriteRule ^ch([0-9]{1,4})(/)?$ http://reachchallenges.infectionist.com/challenge/$1/${hrci:$1} [R=301,L]
Run Code Online (Sandbox Code Playgroud)

当我在子域上访问此路径时:

/ ch232

它应该重定向到:

http://reachchallenges.infectionist.com/challenge/232/Challenge+Title

但相反,它重定向到:

http://reachchallenges.infectionist.com/challenge/232/

没有标题.难道我做错了什么?我是否必须RewriteEngine On在httpd.conf文件中指定?

更新2:好的,所以我添加了RewriteEngine On行并保存,当我尝试重新启动Apache时出现此错误:

RewriteMap: file for map hrci not found:/dh/apache2/apache2-ps54462/dbd:SELECT title FROM challenges WHERE id …
Run Code Online (Sandbox Code Playgroud)

mysql apache .htaccess mod-rewrite

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

PHP 会话 ID 唯一性(用于 cookie)

我正在编写一个用户系统,用户将使用 Twitter 的 API 登录,然后我会将信息以及我让用户输入的一些额外内容存储在数据库中。我希望用户能够回来登录后无需再次登录。我决定获取有关用户的所有相关信息,将其保存到数据库中,然后将会话 ID 和用户 ID 保存到另一个表中。最后,我会在用户的计算机上设置一个包含相同会话 ID 的 cookie,以便他们在整个浏览过程中保持登录状态。然后,如果他们关闭浏览器并稍后重新访问该网站,我会读取该 cookie,并进行比较使用会话表,获取用户 ID,并重建会话(使用新的会话 ID 更新会话表)。

我的问题是,会话 ID 的随机性如何?用户是否有可能获得与一周内未访问该网站的用户分配给他们的会话 ID(因此 cookie 仍处于活动状态)相同的会话 ID?如果发生这种情况,服务器可能会将新用户误认为是旧用户。我真的很想避免使用 IP 地址,因为人们可能通过移动浏览器访问该网站,而 IP 可能随时更改。

对此有什么想法吗?我只是想确保用户 A 和用户 B,无论相隔多少时间,都不会获得相同的会话 ID。

php mysql session

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

MySQL WHERE IN结果乱序

我正在使用此查询:

SELECT * FROM `challenges` WHERE id IN (#, #, #, #)
Run Code Online (Sandbox Code Playgroud)

其中#是与单行关联的4个ID号.这很好用,因为它允许我在一个查询中从表中提取4行,但是它有一个奇怪的问题.我不知道它为什么会这样,但结果中行的顺序与我在查询中的顺序不一样.例如:

SELECT * FROM `challenges` WHERE id IN (108, 208, 134, 142)
Run Code Online (Sandbox Code Playgroud)

我希望他们按照这个顺序出来,但他们却这样出来:

108,134,142,208

我注意到的唯一事情是challenge表中的每一行都有一个名为"first_recorded"的字段,来自该查询的行的顺序按该字段按升序排序.有没有办法强制查询按照订购ID的顺序排序结果?

mysql

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

仅使用Cron执行PHP文件

我有一个PHP脚本需要每天执行一次,太平洋时间凌晨3:05.我目前在我的网站的根目录中获得了脚本(例如,http://example.com/script.php),因此,任何在浏览器中导航到它的人都可以执行该脚本.我的服务器布局如下:

/home/[user]/example.com/

example.com文件夹是域的根.我读了另一个关于这个的帖子:

PHP和cron:安全问题

据说我应该将脚本移到公共目录之外,所以在我的情况下我会将它移动到[user]文件夹.目前我的Cron作业命令如下所示:

/ usr/local/php5/bin/php /home/[user]/example.com/script.php

(我当然使用伪名称.)我是否只需移动文件并将命令更改为:

/ usr/local/php5/bin/php /home/[user]/script.php

公众可以正常运行,但公众无法使用吗?由于脚本已经通过Cron运行,它已经使用绝对路径(而不是相对路径)设置到它需要包含的文件,所以这应该是一个简单的移动和编辑,对吧?

php apache shell cron

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

标签 统计

mysql ×3

php ×3

apache ×2

session ×2

.htaccess ×1

bitmap ×1

c# ×1

cookies ×1

cron ×1

graphics ×1

image ×1

mod-rewrite ×1

oauth ×1

pixelformat ×1

shell ×1

twitter ×1