我们是一个不断发展的网络,但我们认为我们希望保持用户只需要一个帐户才能访问网络不同的网站.(类似于Stackoverflow的登录,如果您登录到另一个"站点",则使用您的帐户凭据,而不是您的帐户已创建).我们想要自己的登录系统(用户名,密码)而不是OpenId,因为我们将来可能会有这样的,但现在主要关注的是全局登录.
我怎样才能做到这一点?做一个Curl请求并发回一个cookie?有一个"数据库"只是为登录程序和首次登录也在站点指定的数据库中创建一个新的"用户"?
建议?
我需要一种方法来存储JavaScript中PHP变量的HTML.
var contents = "{{ $template }}";
Run Code Online (Sandbox Code Playgroud)
然而,这会产生错误.我想这是因为它没有正确转义,所以它弄乱了网络浏览器,因为JS无法正确存储...我已经尝试过Laravel转义
var contents = "{{ e($template) }}";
Run Code Online (Sandbox Code Playgroud)
没有任何成功.
最终目标是: $('#preview-iframe').contents().find('html').html(contents);
我怎么能做到这一点?
//Example data
$current_time = 1318075950;
$unbanned_time = $current_time + strtotime('+1 minute');
if ($unbanned_time > $current_time) {
$th1is = date('Y-m-d H:i:s', $unbanned_time) - date('Y-m-d H:i:s', $current_time);
echo date('Y-m-d H:i:s', $th1is);
Run Code Online (Sandbox Code Playgroud)
我试图输出多长时间,直到用户被取消...年月,日,小时,分钟和秒......但这给了我一些奇怪的结果..
我需要在每个请求上运行一些代码,总是取决于用户是否登录.
我在哪里放这个代码?
有没有可能我可以传递数据,这段代码:
public function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->load->library('security');
$this->load->library('tank_auth');
$this->lang->load('tank_auth');
$this->load->model('users_model');
if ($this->tank_auth->is_logged_in())
{
$data = $this->users_model->get_userinfo($this->tank_auth->get_username());
if ($data['exp'] >= $data['max_exp']) {
$new_data = array(
'exp' => $data['exp'] - $data['max_exp'],
'level' => $data['level'] + 1,
);
$this->db->where('id', $data['id']);
$this->db->update('users', $new_data);
echo 'Hello?';
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是Core类中的MY_Controller ..我可以进一步传递这些数据吗?我想,在真正的课堂上再次重新调整所有数据,感觉不必要.
$salt = $this->get_salt($username);
if (is_null($salt)) {
return FALSE;
}
$password = sha1(SITE_KEY . $password . $salt);
$sth = $this->db->prepare("SELECT id, username, active FROM user WHERE username = ? AND password = ?");
$sth->setFetchMode(PDO::FETCH_OBJ);
$sth->execute(array($username, $password));
if (($result = $sth->fetch()) !== FALSE) {
return $result;
}
return FALSE;
Run Code Online (Sandbox Code Playgroud)
这让我很担心:
我没有误解登录方法.我只是不认为它应该返回该对象.我可能错了,你在做什么都很好,但我对此表示怀疑.您将完整的用户对象从数据库,密码和所有内容返回到可能不安全的脚本.有人可能会创建一个新文件然后执行类似var_dump($ userObject)的操作; 并拥有所有这些信息
而且,我发现从某些东西返回"魔法"属性是不直观的.这只是在使用之前未经验证的另一件事.如果您要将其移动到auth类中的单独方法并让它返回"active"的值,则可以运行您需要的任何验证,而不使用login.php脚本.
:再次查看它,如果您以这种方式滥用该对象,您将需要知道登录信息.在我看来,如果存在某种泄漏,将其分开仍然会更好.不是说我知道有人能做到这一点.把它想象成一个潜在的循环漏洞.
我不会假装了解恶意用户会做些什么.我只是知道让他们更容易这样做似乎并不明智.也许它没有任何问题,我不是安全专家.我只是在讨论一些事情,如果我要写它,我会改变,因为它们对我来说似乎有害.如果您真的想知道它是否危险,我建议将该示例提交给常规的stackoverflow社区,看看他们说了什么.
他有什么看法吗?该方法将用于我拥有的页面控制器:
$user = $auth->login('username, password)
if ($user) {
//do some additional checks... set session variables
}
Run Code Online (Sandbox Code Playgroud) 我有一个名为"files"的文件夹我有一个.htaccess文件,其中的工作是确定文件是"要下载"还是刚查看(NOT EXECUTED(.txt,.php等)但是我想要图像文件被视为,因为它们是......图像!所以不应该下载它们.
我试过了
Header set Content-Disposition attachment
Header set Content-Type application/octet-stream
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误
我该如何设置这个规则?
顺便说一下,这是一种安全的方法吗?
我在看我应该使用多个类来进行游戏吗? - 罗伯特皮特的回答.
interface Weapons {
public function Fire();
}
class Colt implements Weapons {
function Fire() {
echo 'Fire!';
}
}
abstract class Human implements Colt
{
}
class Sniper extends Human
{
public function __construct()
{
}
}
Run Code Online (Sandbox Code Playgroud)
关于"人类",我或许要实施"武器"而不是柯尔特,然后在"狙击手"上初始化正确的武器类?
class Sniper extends Human
{
public $weapon;
public function __construct($weapon)
{
$this->weapon = new $weapon;
}
$this->weapon->fire();
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西?我很困惑它是如何工作的..
EXAMPLE 1
class A {
public $class;
__construct() {
$this->class = new $class;
}
hello() {
$this->class->hello();
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个创建User类对象的方法,但是如果找不到用户我需要返回一些东西,但我不确定是什么:
function getUserById($id)
{
$sth = $this->db->prepare("SELECT id, username, password, salt, email, created, last_active FROM users WHERE id = ?");
$sth->execute(array($id));
$sth->setFetchMode(PDO::FETCH_OBJ);
if ($sth->rowCount() == 0) {
//return what?
}
$row = $sth->fetch();
$user = new User($row);
return $user;
}
Run Code Online (Sandbox Code Playgroud)
并且该方法应该使用如下:
$user = $user_mapper->getUserById($id);
Run Code Online (Sandbox Code Playgroud)
问题是如何处理如果找不到用户?我应该使用try catch块然后在rowCount == 0 if语句中抛出异常,还是只返回false并在我将$ user变量设置为对象时使用if语句?
我正在构建一个库,我想知道如果有可能以及如何在这里完成最佳方法:基本上我想要根据类中的结果显示一些不同的消息.
伪:
public function login($username, $password) {
//query
if (password hash is verified)
if (active == false)
(some sort of MESSAGE HERE! like "User is not activate...")
return false
if banned
some sort of message
return false
else
message (wrong username or password)
return false
}
And then on the login
if (login(username, password))
successfully
redirect
else
display the message
Run Code Online (Sandbox Code Playgroud)
如何以一种好的方法实现这一点?我假设我需要某种变量,我会给出一个值然后我会有一些方法()如果设置了将返回错误消息,我到目前为止是否正确?我该怎么办?
所以,我一直很疯狂.
rand()%6将始终产生0-5之间的结果.
但是当我需要时,请说6-12.
我应该有rand()%6 + 6
0+6 = 6.
1+6 = 7.
...
5+6 = 11. ???
Run Code Online (Sandbox Code Playgroud)
所以我需要+ 7如果我想要6-12的间隔?但是,0 + 7 = 7.什么时候会随机化6?
我在这里错过了什么?哪一个是6到12之间随机数的正确方法?为什么?好像我在这里遗漏了一些东西.
php ×9
.htaccess ×1
c++ ×1
codeigniter ×1
database ×1
date ×1
javascript ×1
jquery ×1
laravel ×1
random ×1