我需要创建一个无法被其他脚本或进程删除的锁定文件.我试过这个:
$f = fopen($pidFile, 'w');
fwrite($f, getmypid());
flock($f, LOCK_EX);
Run Code Online (Sandbox Code Playgroud)
但是,从当前用户启动的任何其他进程都可以删除该$f文件,即使正在运行的脚本仍然打开了文件句柄.如何解决这个问题并防止其他人(即非PHP进程)删除文件?当进程退出时,锁会自动释放吗?所有类似的问题都以RTM flock()结束,但它们都没有回答如何针对外部进程锁定文件.
操作系统是 Linux 2.6.32-431.el6.x86_64
你们中的任何人都知道如何在这些代码中获得效果
public function create(SomeInterface $obj)
{
$class = get_class($obj);
return new class extends $class {
//some magic here
}
}
Run Code Online (Sandbox Code Playgroud)
很明显,该代码在 PHP 中不起作用。
$obj可以是许多不同类的实例。我想获得一个扩展 $obj 的类的实例。(它将使我能够重载一些基本方法)
我有一个 PHP 脚本,它发送纯文本电子邮件,其中包含某些操作的链接,例如确认和协议等。
我注意到,Web 版 Outlook 会在用户单击链接之前自动检测该链接并在后台访问该链接。我注意到了这一点,因为只要我打开电子邮件,数据库中的内容就会发生变化。另外检查 Apache 访问日志,我看到BingPreview/1.0b作为用户代理。
这非常糟糕,因为用户可能不想执行这些操作。
我可以发送电子邮件标头来禁用此行为吗?建议?
目标:
第1步:在JQuery对话框中打开一个表单.用户输入用户名和密码,点击登录.
第2步: Ajax将数据发送到服务器端脚本,在我的例子中是loginproc.php.
第3步:使用loginproc验证登录.如果登录成功,则用户将重定向到页面.
步骤4:否则将消息发送回对话框,并将其附加在对话框本身以及抖动效果中.
截至目前,如果我使用'$("#admin-form"),第一步和第三步工作正常.sumbit();' 就在关闭对话框之前.我不知道如何在diolog中设置无效的登录文本.
码:
$(function() {
var name = $("#name"),
password = $("#password"),
allFields = $([]).add(name).add(password),
tips = $(".validateTips");
function updateTips(t) {
tips
.text(t)
.addClass("ui-state-highlight");
setTimeout(function() {
tips.removeClass("ui-state-highlight", 1500);
}, 500);
}
function checkLength(o, n, min, max) {
if (o.val().length > max || o.val().length < min) {
o.addClass("ui-state-error");
updateTips("Length of " + n + " must be between " +
min + " and " + max + ".");
return false;
} …Run Code Online (Sandbox Code Playgroud) 我的目标是创建一个创建变量名称的循环.如:
$variable1
$variable2
$variable3
并在循环内分配值.例如,for loop从1到7产生变量$variable1, $variable2, $variable3,.etc,每个变量都具有迭代器的值.
我正在尝试使用postgresPHP,但Apache无法加载扩展.
我正在使用:
带有xampp的Windows 7(64位),我有php版本5.4.7我已经设置了postgres,其他应用程序可以访问数据库.
当我在php.ini中取消注释以下行时
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
Run Code Online (Sandbox Code Playgroud)
我在php-error-log中遇到一些错误:
[2013年6月22日13:15:22 UTC] PHP警告:PHP启动:无法加载动态库'C:\ xampp\php\ext\php_pdo_pgsql.dll' - Das angegebene Modul wurde nicht gefunden.在第0行的未知中
但路径是正确的,文件就在那里.
经过一番研究,我将这行添加到我的http.conf中:
LoadFile "C:/Program Files/PostgreSQL/9.2/bin/libpq.dll"
Run Code Online (Sandbox Code Playgroud)
但是无论我把这条线放进去,apache-service都无法启动了.所以我删除了这条线.
我还尝试将这两个路径添加到我的PATH变量中:
C:\Program Files\PostgreSQL\9.2\bin
C:\xampp\php\ext
Run Code Online (Sandbox Code Playgroud)
现在错误已更改为
在第0行的未知中
一切都在同一台本地机器上运行.使用Linux/seperate服务器不是另一种选择.
我phpinfo()没有显示任何与postgres相关的事情.
我希望有人知道如何解决问题,谷歌根本没有帮助我.
我想找到此错误的原因,但失败了。我已经在服务器上安装了PhpMyAdmin,现在在每个页面的页脚中都出现此错误:
致命错误:在行0上的“未知”中,耗尽了134217728字节的允许内存大小(尝试分配10934248字节)
如您所见,我已经尝试过将memory_limit升级(从2MB升级到128MB),但是仍然出现此错误。现在,每次我登录PhpMyAdmin控制台时,即使没有任何操作,它也会出现。你有什么建议吗?
我试图遵循我在网上找到的一些答案,但是似乎没人能解决问题。我也找不到引发错误的文件,因为它是“未知”,而且我也不明白是谁在请求这么大的内存。
如何使用header("Location:...")?重定向到上一页?当用户在页面中向下滚动以查找链接时出现问题,然后单击它 - 打开另一个页面,单击我给出的链接"返回链接(header("Location:links.php");)",但是当用户单击它时,它将前往上一页但位于页面的顶部.
用户必须再次向下滚动,找到他刚刚点击的链接(这令人沮丧).是否有像Web浏览器中使用的"后退"按钮这样的PHP代码,您可以在单击其他内容之前返回到确切的位置和页面?
经过一些故障排除后,我确定当我使用PHP的password_hash函数散列密码时,加密标识符为$ 2y $.但是,当我使用password_verify函数将存储的散列密码与用户输入密码进行比较时,password_verify将不会返回true.如果我使用https://www.bcrypt-generator.com/上的$ 2a $标识符生成新密码并用它替换存储的散列密码,则返回true.
我希望有人可以解释为什么password_hash($ password,PASSWORD_DEFAULT)使用$ 2y $以及password_verify()为什么使用$ 2a $.或者其他任何我可能在这里做错的事情.我在运行PHP版本7.0.10的WAMP服务器上本地执行此操作.
这是我遇到问题的代码示例($ 2y $ identifier不会返回true).
<?php
// $hashNotWorking came from password_hash("testing", PASSWORD_DEFAULT)."\n";
$hashNotWorking = '$2y$10$DNPos6f7Vo4Z2IrYU./eCObD7BMkwlkK9yiYjb0hvnI14B1dbFHbC';
if (password_verify('testing', $hashNotWorking)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>
Run Code Online (Sandbox Code Playgroud)
下面是一个有效的代码示例($ 2a $ encryption不是由password_hash函数生成的).
<?php
// $hashWorking came from https://www.bcrypt-generator.com/
$hashWorking = '$2a$08$uP75n/pDhUZo6qOOM3DuPug5U2fcSXW4f3MUz8p3SlO5yPZ4fLf9O';
if (password_verify('testing', $hashWorking)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
我一直在尝试使用PDO从php连接到mysql.但是,我收到此错误消息:
PHP致命错误:未捕获PDOException:在/home/abdullah/Documents/projects/cs50_radio/public/test.php:5中找不到驱动程序堆栈跟踪:#0/home/abdullah/Documents/projects/cs50_radio/public/test. php(5):PDO - > __ construct('mysql:host = 127 ....')
PDO已启用并已安装.我检查了phpinfo(); 我无法弄清楚错误.这是我用来连接的代码:
<?php
$user = "root";
$pass = "root";
$dbh = new PDO("mysql:host=127.0.0.1;dbname=radio;port=3306", $user, $pass);
//$dbh->query('INSERT INTO users (name) VALUES ("abdullah")');
$dbh = null;
?>
Run Code Online (Sandbox Code Playgroud)
我的项目文件夹是否应包含任何其他驱动程序或文 或者我在代码中遗漏了什么
php ×10
mysql ×2
ajax ×1
bcrypt ×1
bing ×1
email ×1
fatal-error ×1
file-locking ×1
html ×1
jquery ×1
modal-dialog ×1
navigation ×1
pdo ×1
phpmyadmin ×1
postgresql ×1
variables ×1
windows ×1