小编Jay*_*ard的帖子

警告:fread():长度参数必须大于 0

我想用我自己的代码创建一个带有许可证的系统,但给了我一个错误

代码是这样的,在lic.txt中也是一样的1234567,有什么问题吗?

这是错误,如果我将 @ 放在 fread dosent 前面会显示错误但没有打开文件

警告:fread():第 7 行 /home/u422978792/public_html/platforma/license/index.php 中的长度参数必须大于 0 无效的许可证密钥

        <?php



    $fp = fopen("http://platforma.dar-project.org/license/lic.txt", "r");
    stream_set_timeout($fp, 10);
    $license = fread($fp, filesize($filename));
    fclose($fp);

    if ($license == "1234567") {

    echo "Your license key is valid";

    } else {

    die("Invalid license key");
    }

    ?>
Run Code Online (Sandbox Code Playgroud)

php

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

没有 JQuery 的 AJAX POST 到 PHP

我有一个 PHP 作业,我决定尝试将 AJAX 添加到其中,因为在我们班上我们不会只学习 PHP 的 AJAX。我似乎无法得到工作的回应。但是,在 Fire Fox 上我的控制台的网络部分中,我可以找到 POST 发送的值以及我在表单中输入的值和 PHP 回显,这是 php 函数工作的结果。但是,它不会出现在我的 div 标签中。任何帮助将是最受欢迎的,谢谢。

这是 HTML 和 JavaScript:

<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
        function testPass() {
            var username = document.getElementById("uname").value;
            var passwrd = document.getElementById("passwd").value;
            var creds = "uname="+username+"&passwd="+passwrd;
            var ajx = new XMLHttpRequest();
            ajx.onreadystatechagne = function () {
                if (ajx.readyState == 4 && ajx.status == 200) {
                    document.getElementById("message").innerHTML = ajx.responseText;
                }
            };
            ajx.open("POST", "authenticate.php", true);
            ajx.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            ajx.send(creds);
            //document.getElementById("message").innerHTML = creds;
        } …
Run Code Online (Sandbox Code Playgroud)

javascript php ajax

5
推荐指数
1
解决办法
6720
查看次数

如何使用PHP制作大数组(26000 x 26000)?

我尝试用PHP创建数组.阵列的尺寸是26000 x 26000.是否可以使阵列变大?我已经尝试制作尺寸为10000 x 10000的数组,但程序一直告诉我:

致命错误:第24行的C:\ xampp\htdocs\matrix\index.php内存不足(分配1886388224)(试图分配24个字节)

我有8GB内存,我已经在php.ini中设置了memory_limit -1(apache配置).构建数组的代码是这样的:

function zeros($rowCount, $colCount)
{
    $matrix = array();
    for ($rowIndx=0; $rowIndx<$rowCount; $rowIndx++)
    {
        $matrix[] = array();
        for($colIndx=0; $colIndx<$colCount; $colIndx++)
        {
            $matrix[$rowIndx][$colIndx]=0;
        }
        var_dump(memory_get_usage());
    }
    return $matrix;
}

$matrix = zeros(25000,25000);
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用SplFixedArray,但结果是一样的.请帮帮我,谢谢!:)

php arrays out-of-memory fatal-error memory-limit

5
推荐指数
1
解决办法
172
查看次数

PHP问题:password_hash函数无法生成salt

我正在创建一个用户注册服务提供程序,因为我使用password_hash函数来散列提供的用户密码.下面是用于创建散列字符串的代码部分:

public function generateHash($string)
    {
        return password_hash($string, PASSWORD_BCRYPT);
    }
Run Code Online (Sandbox Code Playgroud)

正如我从PHP手册中所理解的那样,我们不应该生成salt,而是让password_hash函数处理它以提高安全性.但是,当我尝试创建新用户时,我收到以下警告:

警告:password_hash():无法生成salt

应用程序创建用户但由于上述问题,将不会生成任何哈希,并且密码在数据库中始终为空

我在我的开发环境中使用PHP版本7.0.4/Zend Server

如果有人能指出我正确的方向,我们将不胜感激

php hash password-encryption

5
推荐指数
1
解决办法
543
查看次数

PHP 7.1.x-未定义mysqli_connect(扩展已打开)

背景

我在Windows 10计算机上安装了WAMP Server(3.0.6)。我正在使用一些自定义MySQL表开发WordPress网站,因此我正在使用$wpdb

问题

我在PHP 7.0.10上运行,一切都很好。今天早上,我安装了PHP 7.1.4,突然出现了这个错误:

致命错误:未捕获错误:在... \ wp-includes \ wp-db.php:1573中调用未定义的函数mysql_connect()

我研究了该问题__construct(),并将问题追溯到该函数,然后执行以下if语句:

if ( function_exists( 'mysqli_connect' ) ) {
Run Code Online (Sandbox Code Playgroud)

一个var_dump显示我function_exists( 'mysqli_connect' )正在返回false

在此处输入图片说明

不是答案

问题在于我没有mysqli启用扩展名:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

我尝试过的事情

我已经切换回7.0.x(错误消失了),删除了7.1.4,重新安装了7.1.4,然后又切换回了它。它仍然不起作用。

我尝试了7.1.0,但它不起作用。

我试图打开和关闭扩展名,并且什么都没有改变。

我试过将实际php_mysqli.dll文件从工作的7.0.10目录复制到7.1.4目录,但这不起作用。

编辑

根据要求,我添加了的显示屏幕截图phpinfo()。在7.0下,我看到了mysqli的信息部分,而在7.1下,则缺少了该部分。

在此处输入图片说明 在此处输入图片说明

php mysqli wampserver php-7.1

5
推荐指数
1
解决办法
3519
查看次数

password_hash 的安全性如何

所以基本上我正在学习网络开发课程,导师说我们需要在将密码存储在 mysql 之前对密码进行哈希处理,这样黑客就无法解码它。

我们的做法是

$hashedPassword = password_hash ("myPassword", PASSWORD_DEFAULT);
Run Code Online (Sandbox Code Playgroud)

并在我们使用的登录表单上进行解码

password_verify("somePassword", $hashedPassword);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如果有人侵入我的 mysql 数据库并窃取哈希密码,他是否也能够解码它?使用网站登录安全吗?

php security authentication passwords hash

5
推荐指数
0
解决办法
6721
查看次数

永久设置私有类变量PHP

问题:我想在类中永久设置私有变量,然后使用类外部的getter函数访问它们.问题是每次我实例化一个新的类并创建一个对象时它会破坏先前设置的变量.在提供的示例中,我不想通过调用函数"getAgain"传递对象.我想简单地访问globalVars类而不破坏任何设置变量.我知道通过创建一个'新对象'本质上会破坏当前不是静态的变量.所以:

  • 你如何在一个类中永久设置私有变量?
  • 要么
  • 如何在不重新实例化类的情况下调用函数(getter/setter)(以免破坏当前设置的var(s)).

我担心我不会以正确的方式接近这一点,或者我的方法论存在缺陷.

<?php

class globalVars{

   private $final = "Default Foo </br>";

   public function setter($param){
      $this->final = $param;
   }

   public function getter(){
      return $this->final;
   }

}

class driver{

   function __construct($param){
        $globalVars = new globalVars();
        $globalVars->setter($param);

        $val = $globalVars->getter();
        echo $val;

        $this->getAgain();
   }

   function getAgain(){
       $globalVars = new globalVars();
       $val = $globalVars->getter();
       echo $val;
   }
}


$input = "Change to Bar </br>";

$driver = new driver($input);

?>
Run Code Online (Sandbox Code Playgroud)

php class global-variables objectinstantiation getter-setter

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

如何使用此prepare语句从数据库中获取数据

//this is my connection function. It is connecting databse successfully when I check.
$conn = connection($config['servername'],$config['username'],$config['password']);
Run Code Online (Sandbox Code Playgroud)

在此之后,我使用以下代码从数据库中获取数据

$id = 2;
if($conn) {

    try {

        $stmt = $conn->prepare('SELECT * FROM customer_tbl WHERE cus_id = :id');
        $stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt->bindParam(':id', $id);

        $results = $stmt->execute();

    }catch (PDOException $e){

        echo 'Error: ' . $e->getMessage();
    }

}
Run Code Online (Sandbox Code Playgroud)

此代码在浏览器上显示以下错误消息

错误:SQLSTATE [IM001]:驱动程序不支持此功能:此驱动程序不支持设置属性

我的代码出了什么问题?为什么我无法从数据库中获取数据?

如果我想使用prepare语句从databese获取此指定数据如何编码?

php mysql pdo

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

无法将 c:/php/php5apache2_4.dll 加载到服务器:找不到指定的模块

当尝试将 PHP 5.6.30 与 Apache 2.4 一起使用时,似乎有一个众所周知的问题(除了使用 Docker),但似乎没有任何真正的解决方案来解决这个问题。我收到以下错误:

httpd.exe:C:/Apache24/conf/httpd.conf 的第 534 行语法错误:无法将 c:/php/php5apache2_4.dll 加载到服务器:找不到指定的模块。

检查 C:\php 目录(在 Docker 容器内)我看到 DLL 显然在那里

03/09/2017  04:34 PM    <DIR>          .
03/09/2017  04:34 PM    <DIR>          ..
01/18/2017  08:12 PM            69,632 deplister.exe
03/09/2017  04:34 PM    <DIR>          dev
03/09/2017  04:34 PM    <DIR>          ext
03/09/2017  04:34 PM    <DIR>          extras
01/18/2017  08:12 PM         1,290,752 glib-2.dll
01/18/2017  08:12 PM            16,384 gmodule-2.dll
01/18/2017  08:12 PM        25,672,192 icudt57.dll
01/18/2017  08:12 PM         2,065,920 icuin57.dll
01/18/2017  08:12 PM            51,200 icuio57.dll
01/18/2017  08:12 PM           257,536 …
Run Code Online (Sandbox Code Playgroud)

php apache docker windows-server-2016

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

Docker容器虚拟主机SSL配置

我有以下设置并且工作正常(我在 Docker 1.6 上):

在此处输入图片说明

一个 Docker 容器充当在各个 Docker 容器中运行的其他 Web 应用程序的虚拟主机代理。(我应该补充一点,我不是配置服务器或网络方面的高手。)

我一直在尝试将 SSL 添加到设置中,但收效甚微。每个容器在主机上挂载证书的文件目录。例如,一旦我使用以下命令运行容器:

docker run -d -P --name build \
    -v /home/applications/src/ssl-cert:/etc/ssl/certs \
    -e "DBL=mysql:dbname=build;host=192.168.0.1;port=3306" \
    -e "DB_USER=foo" -e "DB_PASS=bar" \
    --link mysql56:mysql \
    --add-host dockerhost:`/sbin/ip addr | grep 'eth0' | grep 'inet' | cut -d'/' -f1 | awk '{print $2}'` \
    -p 8001:80 -p 4431:443 \
     repos/build:latest
Run Code Online (Sandbox Code Playgroud)

如果我尝试连接,https://build.example.com我会收到证书错误并且无法连接。容器的 Apache 配置在证书文件的 default-ssl.conf 中有适当的配置(如果这是一个独立的实例,它可以工作):

<VirtualHost _default_:443>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html/

    # Enable/Disable SSL for this virtual host.
    SSLEngine …
Run Code Online (Sandbox Code Playgroud)

apache ssl virtualhost http-proxy docker

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