小编Fun*_*ner的帖子

如何针对外部进程锁定文件

我需要创建一个无法被其他脚本或进程删除的锁定文件.我试过这个:

    $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

php file-locking

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

php匿名类扩展动态

你们中的任何人都知道如何在这些代码中获得效果

 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 anonymous-class extending-classes

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

如何阻止电子邮件客户端自动访问电子邮件中的链接?

我有一个 PHP 脚本,它发送纯文本电子邮件,其中包含某些操作的链接,例如确认和协议等。

我注意到,Web 版 Outlook 会在用户单击链接之前自动检测该链接并在后台访问该链接。我注意到了这一点,因为只要我打开电子邮件,数据库中的内容就会发生变化。另外检查 Apache 访问日志,我看到BingPreview/1.0b作为用户代理。

这非常糟糕,因为用户可能不想执行这些操作。

我可以发送电子邮件标头来禁用此行为吗?建议?

php email bing

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

使用JQuery ajax和php登录表单

目标:
第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)

php ajax jquery modal-dialog

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

PHP - How Can I Create Variable Names Within a Loop?

我的目标是创建一个创建变量名称的循环.如:

$variable1
$variable2
$variable3

并在循环内分配值.例如,for loop从1到7产生变量$variable1, $variable2, $variable3,.etc,每个变量都具有迭代器的值.

php variables

6
推荐指数
3
解决办法
2万
查看次数

在windows/xampp下使用带有php的postgresql

我正在尝试使用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相关的事情.

我希望有人知道如何解决问题,谷歌根本没有帮助我.

php windows postgresql

6
推荐指数
2
解决办法
3万
查看次数

PhpMyAdmin | 致命错误:0行上的“未知”中的134217728字节已用尽的允许内存大小(尝试分配xxxxxx字节)

我想找到此错误的原因,但失败了。我已经在服务器上安装了PhpMyAdmin,现在在每个页面的页脚中都出现此错误:

致命错误:在行0上的“未知”中,耗尽了134217728字节的允许内存大小(尝试分配10934248字节)

如您所见,我已经尝试过将memory_limit升级(从2MB升级到128MB),但是仍然出现此错误。现在,每次我登录PhpMyAdmin控制台时,即使没有任何操作,它也会出现。你有什么建议吗?

我试图遵循我在网上找到的一些答案,但是似乎没人能解决问题。我也找不到引发错误的文件,因为它是“未知”,而且我也不明白是谁在请求这么大的内存。

php mysql phpmyadmin fatal-error

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

在PHP中重定向回上一页

如何使用header("Location:...")?重定向到上一页?当用户在页面中向下滚动以查找链接时出现问题,然后单击它 - 打开另一个页面,单击我给出的链接"返回链接(header("Location:links.php");)",但是当用户单击它时,它将前往上一页但位于页面的顶部.

用户必须再次向下滚动,找到他刚刚点击的链接(这令人沮丧).是否有像Web浏览器中使用的"后退"按钮这样的PHP代码,您可以在单击其他内容之前返回到确切的位置和页面?

html php navigation

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

为什么php password_verify和password_hash使用不同的加密标识符?

经过一些故障排除后,我确定当我使用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)

在此先感谢您的帮助.

php authentication bcrypt php-password-hash

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

PHP致命错误:未捕获PDOException:找不到驱动程序

我一直在尝试使用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 mysql pdo

6
推荐指数
3
解决办法
2万
查看次数