我目前正在开发一个用PHP进行系统更改的项目(例如,更改Nginx /重启服务的配置文件).
PHP脚本在localhost上运行.在我看来,最好的(读取:最安全)方式是使用SSH建立连接.我考虑以下选项之一:
选项1:在php会话中存储用户名/密码并提示输入sudo
使用带有用户名/密码的phpseclib,将这些值保存在php会话中,并为每个命令提示sudo.
选项2:使用root登录
在登录脚本中使用phpseclib和root用户名和密码.在这种情况下,您不必向用户询问sudo.(不是真正安全的解决方案)
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('root', 'root-password')) {
exit('Login Failed');
}
?>
Run Code Online (Sandbox Code Playgroud)
选项3:使用从文件中读取的公钥进行身份验证
使用带有公钥的PHP SSHlib进行身份验证,并将pubkey放在www root之外.
<?php
$connection = ssh2_connect('shell.example.com', 22, array('hostkey' => 'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'username', '/home/username/.ssh/id_rsa.pub', '/home/username/.ssh/id_rsa', 'secret')) {
echo "Public Key Authentication Successful\n";
} else {
die('Public Key Authentication Failed');
}
?>
Run Code Online (Sandbox Code Playgroud)
方案4:?
我不确定标题应该是什么,但代码应该更好地解释它:
class Group {
private $number = 20;
public function __toString() {
return "$this->number";
}
}
$number = new Group();
echo $number, PHP_EOL;
echo ++ $number, PHP_EOL;
echo PHP_EOL;
$number = "20";
echo $number, PHP_EOL;
echo ++ $number, PHP_EOL;
echo PHP_EOL;
$number = 20;
echo $number, PHP_EOL;
echo ++ $number, PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
输出:
20
20 <--- Expected 21
20
21
20
21
Run Code Online (Sandbox Code Playgroud)
知道我为什么20而不是21?即使这样,下面的代码也适用:
$i = null ;
echo ++$i ; // output 1
Run Code Online (Sandbox Code Playgroud)
我知道Group是一个实现的对象__toString …
我在客户端的浏览器上呈现了以下html代码:
<div id="Div">
<img src="myImage.jpg" id="myImage"/>
</div>
Run Code Online (Sandbox Code Playgroud)
该特定图像由用户上载,然后在此处显示.我需要允许我的用户从此图像中删除任何红眼.我想这样做没有任何回发(我在后面使用CodeIgniter).在JQuery(或普通的Javascript)中是否有可用的库?如果不是什么可能是一个好方法?
RecursiveIteratorIterator如果rewind()在while循环之前未调用,则返回额外结果
例
$array = array("A","B","C");
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
//$iterator->rewind() ; this would fix it
while ( $iterator->valid() ) {
print($iterator->current()) ;
$iterator->next();
}
Run Code Online (Sandbox Code Playgroud)
产量
AABC <--- Instead of ABC
Run Code Online (Sandbox Code Playgroud)
A没有 C?$iterator->rewind()while循环需要foreach完美的工作,而不必调用使用迭代器rewind之间foreach和之间的差异while我有一个数组,我想按日期排序.我无法按日期降序排序.请帮忙.
Array
(
[1] => Array
(
[1] => 11/05/2013
[2] => Executive Planning Day
)
[2] => Array
(
[1] => 13/06/2013
[2] => Middle Leaders Planning Day
)
[3] => Array
(
[1] => 12/07/2013
[2] => New Staff Induction Day
)
[4] => Array
(
[1] => 13/04/2013
[2] => Staff Conference Day No. 1
)
[5] => Array
(
[1] => 14/04/2013
[2] => Staff Conference Day No. 2
)
[6] => Array
(
[1] => …Run Code Online (Sandbox Code Playgroud) 我现在已经在这项任务上苦苦挣扎了近三天,我想我缺少一些基本的cURL技能.
我开始:
在IE的F12中,我在第一页上看到2个POST :(我注意到第一个是获得302应该是重定向,而使用cURL我只获得200)
填写验证码:
在第二页(在验证码之后):
交通:
这是我的代码(我不能继续使用它,因为它不适用于早期阶段):
我建立了一个特殊的表单,提交到我自己的页面GET(使用cURL),然后访问该网站:
$id=$_GET['id']; // getting the biznumber
$humanCode=$_GET['nobot'];
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "https://www.*******.******.***");
// setting some https to be able to access the website from my local computer.
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_CAINFO, "c:/xampp/htdocs/CAcerts/curl-ca-bundle.crt");
// I know the values for the ASPX vars like __EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE are arbitrary now. I need to take care of that but I don't yet know how.
$postarr= array ( …Run Code Online (Sandbox Code Playgroud) 在类型转换期间防止重复键的最佳方法是什么?
示例:
//Credits @bwoebi
$obj = (object)array(1,2,3);
$obj->{1} = "Duplicate key 1";
$obj->{2} = "Duplicate key 2";
$obj->{3} = "Duplicate key 3";
$array = (array)$obj ;
print_r($array);
Run Code Online (Sandbox Code Playgroud)
产量
Array
(
[0] => 1
[1] => 2
[2] => 3
[1] => Duplicate key 1
[2] => Duplicate key 2
[3] => Duplicate key 3
)
Run Code Online (Sandbox Code Playgroud)
现在我知道一些聪明的人会说它,因为一个key是string另一个int使用var_dump
var_dump($array);
Run Code Online (Sandbox Code Playgroud)
产量
array (size=6)
0 => int 1
1 => int 2
2 => int 3
'1' …Run Code Online (Sandbox Code Playgroud) 运行以下代码
var_dump(get_headers("http://www.domainnnnnnnnnnnnnnnnnnnnnnnnnnnn.com/CraxyFile.jpg"));
Run Code Online (Sandbox Code Playgroud)
返回HTTP 200而不是404对于任何不存在的域或URL
Array
(
[0] => HTTP/1.1 200 OK
[1] => Server: nginx/1.1.15
[2] => Date: Mon, 08 Oct 2012 12:29:13 GMT
[3] => Content-Type: text/html; charset=utf-8
[4] => Connection: close
[5] => Set-Cookie: PHPSESSID=3iucojet7bt2peub72rgo0iu21; path=/; HttpOnly
[6] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
[7] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[8] => Pragma: no-cache
[9] => Set-Cookie: bypassStaticCache=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; httponly
[10] => Set-Cookie: bypassStaticCache=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; httponly …Run Code Online (Sandbox Code Playgroud) 所以我在PHP Doc上找到了一些代码,并稍微编辑它以合并我拥有的两个图像.然后将图像保存在服务器上的文件夹中.然而,有一个小问题,我无法弄清楚它为什么会发生.
首先是我的代码:
$glassurl = $_GET['GlassImg'];
$frameurl = $_GET['FrameImg'];
$filename = (int)date("H:i:s");
$src = imagecreatefromgif($frameurl);
$dest = imagecreatefromjpeg($glassurl);
imagecolortransparent($src, imagecolorat($src, 0, 0));
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagealphablending($src, false);
imagesavealpha($src, true);
$src_x = imagesx($src);
$src_y = imagesy($src);
imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);
// Output and free from memory
imagepng($dest, 'uploads/imagetest.png');
imagegif($dest);
imagedestroy($dest);
imagedestroy($src
);
Run Code Online (Sandbox Code Playgroud)
其次有关图像的一些信息:
我希望当我将框架重叠到图案上时,由于这些部件会产生一个窗框,内部有玻璃图案,白色会隐藏剩余的图案.
为了说明我提供了图像.会发生什么.
图案:

帧:

结果:

正如你所看到的那样,它并没有达到我的预期.谁能告诉我哪里出错了?我想将框架叠加到图案上,保持透明中心并使用多余的白色覆盖其余的图案.任何帮助是极大的赞赏.
我目前正在这样做:
$_GET 请求
$process = @$_GET['data_process'];
$id = @$_GET['data_id'];
$link = @$_GET['data_page'];
Run Code Online (Sandbox Code Playgroud)
$_POST 请求
$process = @$_POST['data_process'];
$id = @$_POST['data_id'];
$link = @$_POST['data_page'];
Run Code Online (Sandbox Code Playgroud)
虽然它看起来很麻烦.我该如何改进这个过程?
今天我注意到了php的模糊性.我运行了这段代码
$i = 5;
$i = $i ++;
var_dump($i); //output 5 instead of 6
Run Code Online (Sandbox Code Playgroud)
让我们假设初始值$i is 5.现在新值应该是6,但事实证明它是5.当我做同样的事情在C++我6的预料.它是一些在PHP中被忽视了多年的错误还是其他一些东西.有人可以解释一下吗?