除了博客或静态网页之外,我从未真正做过任何严肃的网页编程.对于我正在开发的Web应用程序,我需要进行网站登录.
为了不重新发明轮子,我该如何实现登录?某个地方是否有"插入式"组件?我并不反对使用加密技术,但我并没有太多使用PHP或Web协议的经验.
我正在使用CodeIgniter框架,所以如果有人在这种情况下有任何答案,我会感兴趣.
我见过base64,mcrypt和blowfish,但我无法找出这段代码使用的加密算法/方法.
有没有人见过这种PHP加密?
<?php include"\x6d\x79sql-\x63\x6f\x6e\x6eec\x74.p\x68\x70";${"\x47\x4c\x4f\x42A\x4c\x53"}["\x6c\x71wwi\x6b\x64\x64v"]="res\x63\x68\x6b\x62i\x6cl";${"\x47L\x4fB\x41\x4cS"}["\x70ve\x6b\x72\x71\x68"]="\x61\x64\x6d\x69n";${"\x47L\x4f\x42\x41\x4cS"}["\x73\x6b\x62\x64\x66\x6dn"]="\x72e\x73\x70\x65\x74\x74\x79";${"\x47\x4c\x4f\x42\x41L\x53"}["\x72\x76r\x61\x77q\x68\x74i\x67"]="d\x61\x74\x65";${"\x47\x4c\x4f\x42ALS"}["\x6d\x6e\x76\x6a\x72\x6c\x78\x70"]="\x73q\x6cp\x65\x74t\x79";include"s\x65ss\x69o\x6e\x2e\x70h\x70";${${"\x47\x4cOB\x41\x4c\x53"}["\x72v\x72\x61wqh\x74\x69\x67"]}=date("Y-m-d");echo "\n";${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x6dd\x64\x6f\x71spgh"]="c\x6fu\x6e\x74p\x65\x74t\x79";
if(${${"\x47\x4cOB\x41\x4c\x53"}["p\x76\x65\x6b\x72\x71\x68"]}==1)
{
header("lo\x63at\x69\x6fn:\x6c\x6fg\x6f\x75\x74.\x70hp");
}
else
{
$bbnimsb="c\x6fu\x6e\x74\x63\x68\x6b";
$silucxpqku="r\x65\x73\x63\x68k\x62\x69\x6c\x6c";
${"G\x4cO\x42A\x4cS"}["zjx\x6c\x6d\x65\x73\x72\x67"]="\x63\x6fu\x6et\x63\x68\x6b";
$wkozfoxln="sq\x6cc\x68kb\x69\x6cl";${$wkozfoxln}="s\x65l\x65\x63t\x20*\x20fro\x6d\x20m\x61s\x74e\x72\x6fut \x77\x68\x65\x72e sto\x72\x65i\x64\x3d\x27$storeid\x27\x20\x61n\x64 d\x61te='$date\x27\x20a\x6ed\x20(kot\x3d0 \x6fr\x20k\x6f\x74\x3d\x31\x20\x6f\x72\x20k\x6f\x74\x3d2)";
${"G\x4cO\x42AL\x53"}["\x71\x6dn\x69\x63sb\x6c\x69ct"]="s\x71l\x63\x68kb\x69\x6cl";
${$silucxpqku}=mysql_query(${${"\x47\x4cO\x42AL\x53"}["q\x6d\x6ei\x63\x73bl\x69\x63\x74"]});
${${"\x47\x4c\x4f\x42ALS"}["\x7a\x6a\x78\x6c\x6desrg"]}=mysql_num_rows(${${"\x47L\x4fB\x41L\x53"}["\x6cqw\x77\x69\x6b\x64d\x76"]});
if(${$bbnimsb}>0)
{
header("l\x6fc\x61\x74i\x6f\x6e:\x65\x72\x72or.p\x68\x70?er\x72\x3d\x31");}
else{
${"G\x4c\x4f\x42\x41\x4cS"}["z\x76\x71\x75\x63\x6c\x76\x66q\x69\x69"]="s\x71\x6cp\x65t\x74\x79";
${${"GLOBA\x4cS"}["z\x76q\x75\x63l\x76\x66qi\x69"]}="\x73e\x6c\x65c\x74\x20*\x20\x66r\x6fm\x20\x64\x61y\x63\x6c\x6fse \x77h\x65r\x65\x20s\x74\x6fr\x65\x69d=\x27$storeid'\x20\x61\x6ed\x20\x64\x61\x79clo\x73\x65=\x27$date\x27";
${${"\x47\x4c\x4f\x42\x41\x4cS"}["skb\x64fm\x6e"]}=mysql_query(${${"GL\x4f\x42\x41\x4cS"}["\x6dn\x76jrl\x78\x70"]});${${"GL\x4fB\x41LS"}["\x6dd\x64\x6f\x71sp\x67h"]}=mysql_num_rows(${${"GL\x4f\x42\x41\x4cS"}["\x73\x6b\x62\x64f\x6d\x6e"]});
if(${${"\x47\x4c\x4f\x42\x41\x4cS"}["m\x64do\x71\x73pgh"]}==0)
{
header("l\x6f\x63a\x74\x69\x6fn:e\x72r\x6fr.\x70h\x70?err=\x32");
}
else{header("l\x6f\x63ati\x6fn:log\x6f\x75\x74\x2ep\x68\x70");}}}
?>
Run Code Online (Sandbox Code Playgroud) 我使用php作为模板引擎,我注意到当我包含视图文件时,在该视图的内容之前添加了空文本节点.
例如,我有要包含的html文件,其中包含以下内容:
<p>Some text</p>
Run Code Online (Sandbox Code Playgroud)
比我包括这样的文件:
<div><?php require_once('file/path.htm'); ?></div>
Run Code Online (Sandbox Code Playgroud)
(注意我删除了div和php之间的任何空格)并且在php包含文件后,他添加了空文本节点(我将标记为""),它在p标签之前添加空格,所以我得到这样的东西:
Some previous content...
<div>
"" //empty text node
<p>Some text</p>
</div>
Run Code Online (Sandbox Code Playgroud)
这很成问题,因为它破坏了内容组成.这有什么解决方案吗?
如果我输入
}{
Run Code Online (Sandbox Code Playgroud)
在Firefox或Chrome的控制台中,结果是未定义的,而不是SyntaxError.
这个构造返回undefined(构造像}!{return false).这种行为的原因是什么?
我试过表演
$this->Auth->allow()在beforeFilter()不过,我需要补充整个控制器作为一个例外,即它必须是公共的,不需要用户在签署.
只是一种捷径的表演方式 $this->Auth->allow( every-function-in-this-controller )
答案?
编辑:
我有这个:
<?php
App::uses('AppController','Controller');
class AllzonesController extends AppController {
public function __beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('index');
}
public function index() {
$this->layout = 'main';
$this->set('Hello',"Hello world");
}
}
Run Code Online (Sandbox Code Playgroud)
它正在转移Auth-login()
在调用clear()和create()循环内部之间存在一个小但非常重要的区别:
我们假设以下代码:
foreach ($posts as $post) {
$this->Post->create();
$this->Post->id = $post['Post']['id'];
$this->Post->save(['column3' => 'foo', 'column4' => 'bar']);
}
Run Code Online (Sandbox Code Playgroud)
当执行create():第1列(可能默认为布尔值false)时,会神奇地添加到更新的字段中,并且可能导致数据丢失(想到post1 with column1 = true).
当执行a clear()而不是create():第1列时,保存语句中未提及的内容根本没有被触及.
那么,clear()在现有数据部分更新的情况下依赖它是否总是安全的?
我的问题的第二方:依靠它总是更好clear()吗?(当看到代码时clear(),你会发现,它只是一个方便的包装器create(false)).而在唯一的区别create(),并create(false)为缺省值的初始化.我认为,默认值最好直接在数据库级别设置.
顺便说一下:我刚刚提出了一个小的文档变更.随意为此+1:
我有一个网站,我想集成Stripe支付网关,当用户注册我想在Stripe上创建一个客户并向他们收取第一个月的费用,例如100美元,从下个月我想向他们收取50美元.
如何创建客户,然后同时为他们充电并设置定期付款,到目前为止我只能找到有关一次性付款系统的信息:
$charge = \Stripe\Charge::create(
array(
"amount" => $amount,
"currency" => "usd",
"source" => $token,
"description" => $email
)
);
Run Code Online (Sandbox Code Playgroud)
对于定期付款,我是否必须在cron中运行此代码或有更好的方法吗?
提前致谢.
编辑:
我使用以下代码首先创建客户,然后使用他们的费用ID向该客户收费:
//Create Customer:
$customer = \Stripe\Customer::create(array(
'source' => $token,
'email' => $_POST['email'],
'plan' => "monthly_recurring_setupfee",
));
// Charge the order:
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
"amount" => $amount,
"currency" => "usd",
"description" => "monthly payment",
)
);
Run Code Online (Sandbox Code Playgroud)
这似乎有效.
另一个问题:我创建了两个计划monthly_recurring_setupfee和monthly_recurring,以前的计划中包含了后来计划包含了我会从第二个月进行充电的常规量,我要收取金额加上一次性安装费和,我想分配的用户在monthly_recurring_setupfee注册时的计划以及如果付款成功将用户的计划更改为monthly_recurring,这可能吗?
当我尝试将所有文件添加到 gitRepo 时,它说:
$ git add .
error: 'ConnectorApp/' does not have a commit checked out
fatal: adding files failed
Run Code Online (Sandbox Code Playgroud)
当我尝试删除空文件夹时,它说:
$ git rm ConnectorApp/
fatal: pathspec 'ConnectorApp/' did not match any files
Run Code Online (Sandbox Code Playgroud)
是否有其他解决方案可以清除此空文件夹以将文件添加到我的 gitRepo?
我的问题的想法是研究...和
之间的本质区别是什么commit --amendreset --soft
调查过程分步骤:
vim index.js > edit > save
git add index.js
git commit -m '...'
git push origin
Run Code Online (Sandbox Code Playgroud)
现在我需要重写之前发送的提交。为此,我应该使用:
vim index.js > edit > save
git add index.js
git commit --amend --no-edit
git push --force origin
Run Code Online (Sandbox Code Playgroud)
本质上,我还有另一个 SHA1,为了类比目录objects中的3 .git/objects,但git log显示了两个 SHA1,我完全同意它,因为提交已被修改。
让我们回顾一下。HEAD 指针代表文件的版本,而不是git commit --amend我执行了,编写一些代码并执行:git reset --soft HEAD~stage
git add index.js > git commit -m '...' > git push --force origin
Run Code Online (Sandbox Code Playgroud)
.git/objects 目录又包含一个 SHA1,但历史记录已用新的 SHA1 进行了修改。 …
我正在第一次设置/学习 CakePHP,我正在努力弄清楚为什么我无法通过默认端口 8765 访问我的服务器。我喜欢在 ubuntu 机器上进行开发并远程处理代码。该服务器托管在我本地计算机上的虚拟机上,但我将其称为远程计算机。服务器和我的远程计算机都位于同一 10.0.1.x 子网中。我可以通过端口 80 很好地访问服务器。但是,当我尝试访问 hxxp://10.0.1.44:8765/ 时,我收到以下消息
Failed to connect to 10.0.1.44 port 8765: Connection refused
我尝试通过以下方式禁用 Ubuntu 16 服务器上的防火墙,sudo uff disable但没有成功。我还尝试编辑 Apache2.conf 文件并覆盖目录权限。这些是我当前的全局权限:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!
php ×7
cakephp ×3
git ×2
apache ×1
cakephp-2.3 ×1
cakephp-2.5 ×1
cakephp-3.0 ×1
codeigniter ×1
firefox ×1
html ×1
javascript ×1
login ×1