小编Bla*_*bam的帖子

在PHP中运行时删除函数(没有runkit扩展)

我知道这个问题看起来很丑陋和奇怪,但是有没有办法在运行时删除PHP中的函数?

我有一个在"if"块中声明的递归函数,并希望该函数仅在"if"块中"有效".我不希望在此块之外调用此函数.

我发现了runkit_function_remove,但我的Web主机上没有启用runkit.还有另一种方法吗?

顺便说一下,我只支持PHP 5.1.0.

编辑:我知道我的问题是hacky,但这是我想要做的事情:

if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc())
{
    function stripslashes_deep($value)
    {
        return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST = array_map('stripslashes_deep', $_REQUEST);

    //runkit_function_remove('stripslashes_deep');
}
Run Code Online (Sandbox Code Playgroud)

由于"stripslashes_deep"只会在魔术引号是,我想摆脱它,当我用它做.我不希望人们依赖一个并不总是存在的功能.我希望现在更清楚了.非hacky解决方案建议也是受欢迎的!

php function

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

PHP $ _FILES ['file'] ['tmp_name']:如何保留文件名和扩展名?

我正在尝试从表单上传doc文件并将其发送到电子邮件.我在用

$_FILES['file']['tmp_name'];
Run Code Online (Sandbox Code Playgroud)

问题是,它返回一个随机生成的文件名.因此,当它到达收件箱时,文件名为phpvwRGKN.dat(文件名每次都是随机的).

如何保留文件名和扩展名?

注意:我正在使用geekMail类

php

23
推荐指数
3
解决办法
15万
查看次数

在Wordpress.com中显示C#代码

我研究了几个小时,我有点沮丧.也许我只是缺少一些东西,因为我不熟悉博客.

不是自己的博客,我只是使用WordPress.com.我想要包含c#代码的片段,让它们看起来像在Visual Studio中,或者至少使它们看起来很好,当然还有行号和颜色.我见过的解决方案似乎都假设您正在托管自己的博客.我无法弄清楚如何安装插件.

是否有一个小部件可以使代码片段看起来不错,或者其他一些我可以轻松使用的解决方案?

谢谢

编辑:Sarfraz概述了解决我的问题的一种方法(谢谢!),我已经尝试了但是我有一个问题,即它没有着色我的大部分代码(较新的关键字,如var,from,where,选择等).有没有解决这个或是否有其他解决方案?

c# wordpress widget wordpress.com

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

PHP 7.2警告:"会话处于活动状态时无法更改会话名称"

由于我们服务器上的PHP从7.0升级到7.2.如果完成新部署,我会收到以下警告(导致错误).原因可能是旧会话在部署后失效.

警告:session_name():在第137行的/var/www/html/model/login/lib/Session.class.php中,当会话处于活动状态时,无法更改会话名称

警告:session_set_cookie_params(): 第138行的/var/www/html/model/login/lib/Session.class.php中的会话处于活动状态时,无法更改会话cookie参数

警告:无法修改标头信息 - 已在/ var/www/html/model/login/lib /中发送的标头(在/var/www/html/model/login/lib/Session.class.php:137处开始输出)第142行的Session.class.php

似乎PHP 7.2在会话罪的上下文中得到了更严格的特定上下文.服务器似乎识别无效会话并尝试销毁这些会话.这是Session类的一部分:

/**
 * Secure instant destruction of session. Must be called after session_start !
 */
public static function destroyAbsolute() {

    self::checkInit(); // unimportant

    session_name(self::$name); // this is line 137
    session_set_cookie_params(0, COOKIEPATH, null, self::$force_ssl_cookie, true);

    if(session_id()) {
        if (isset($_COOKIE[session_name()])) {
            setcookie(session_name(), "", time() - 42000, COOKIEPATH);
        }
        unset($_COOKIE[session_name()]);
        session_destroy();
    }
}
Run Code Online (Sandbox Code Playgroud)

关于会话,PHP有什么变化?

如果另一个会话处于活动状态,为什么不允许设置会话名称(根据具有session_name的文档,我可以更改会话并启动多个会话)?

我怎么可能适当地破坏正在运行的会话?

进一步研究我还在GitHub上找到了以下讨论(https://github.com/Icinga/icingaweb2/issues/3185).他们确认PHP 7.2引入了这个错误.不幸的是,也没有答案: - /

php cookies session php-7.2

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

Dart null/false/empty checking:如何写这个更短?

这是我的代码,对于除了空字符串,null和false之外的所有内容都是true:

if (routeinfo["no_route"] == "" || routeinfo["no_route"] == null || routeinfo["no_route"] == false) {
    // do sth ...
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码,对于除了空字符串,null,false或零之外的所有内容都是true:

if (routeinfo["no_route"] == "" || routeinfo["no_route"] == null || routeinfo["no_route"] == false || routeinfo["no_route"] == 0) {
    // do sth...
}
Run Code Online (Sandbox Code Playgroud)

我怎么能在Dart写这个更短的?还是不可能?

conditional if-statement dart

15
推荐指数
6
解决办法
9461
查看次数

ETag 标头是否会使 Cache-Control 标头变得过时?那么如何确保Cache-Control不会造成危害呢?

ETag 标头的定义 ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag ):

ETag HTTP 响应标头是资源特定版本的标识符。它使缓存更加高效,并节省带宽,因为如果内容未更改,Web 服务器不需要发送完整响应。另一方面,如果内容发生更改,etag 有助于防止资源的同时更新相互覆盖(“空中冲突”)。

Cache-Control 标头的定义 ( https://developer.mozilla.org/de/docs/Web/HTTP/Headers/Cache-Control ):

Cache-Control 通用标头字段用于指定请求和响应中的缓存机制的指令。

因此,ETag 标头告诉资源浏览器向服务器发送单个 HTTP 请求,并询问文件哈希是否已更改。如果是,请下载一个新的。伟大的。那么,如果设置了 ETag 标头,为什么我还需要 Cache-Control(除了 Expires 标头,这可能有助于避免这个单一请求)?

因此,如果我必须设置 Cache-Control 标头,它只会有害,对吧?我认为最合适的值是:

Cache-Control: must-revalidate
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否会引发不必要的额外操作。

etag caching http cache-control http-headers

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

Netbeans:如何禁用这个恼人的警告?

在这个问题中出现的同样问题对我来说发生了很多:在Netbeans 7.4 for PHP上警告"不要直接访问Superglobal $ _POST数组"

但是 - 当然我会关注$ _POST和用户输入等.但我使用NetBeans不理解的自定义函数来执行此操作,因此我的IDE充满了警告.

另一个恼人的例子:"函数声明中的嵌套块太多".当然你应该避免这种情况,但我认为这并不总是可行的.

如何在Netbeans IDE中禁用单个警告,同时仍保留所有其他警告?

php ide configuration netbeans

14
推荐指数
1
解决办法
6348
查看次数

如何从Docker组件安装包?

嗨,我是Docker的新手.我有一个docker-compose.yml,它看起来像这样:

version: "3"

services:
  lmm-website:
    image: lmm/lamp:php${PHP_VERSION:-71}
    container_name: ${CONTAINER_NAME:-lmm-website}
    environment:
      HOME: /home/user
    command: supervisord -n
    volumes:
      - ..:/builds/lmm/website
      - db_website:/var/lib/mysql
    ports:
      - 8765:80
      - 12121:443
      - 3309:3306
    networks:
      - ntw

volumes:
  db_website:

networks:
  ntw:
Run Code Online (Sandbox Code Playgroud)

我想在docker-compose文件中安装Yarn包管理器:

sudo apt-get update && sudo apt-get install yarn
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何宣布这个,我试过了

command: supervisord -n && sudo apt-get update && sudo apt-get install yarn
Run Code Online (Sandbox Code Playgroud)

它无声地失败了.我该如何正确声明?或者docker-compose.yml是错误的地方吗?

package-managers docker docker-compose

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

CSS:仅显示字符串的前两个字母

是否可以使用纯CSS仅显示字符串的前两个字母?

到目前为止,我已经尝试过(没有成功):

  • :第一个字母(仅针对第一个字母,但对我来说无效)
  • :nth-​​of-everything(需要额外的javascript)
  • 文本溢出:省略号; (正在加分)
  • 溢出:隐藏; (仅当文本大小没有改变时才有效,笨拙的解决方案)

还有另外一种方法吗?

css

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

不能GET /与gulp-connect-php

我正在使用gulp-connect-php尝试使用BrowserSync在本地运行php服务器.这是我的gulp配置文件:

var gulp = require('gulp'),
    connect = require('gulp-connect-php'),
    browserSync = require('browser-sync');

gulp.task('connect-sync', function() {
  connect.server({}, function (){
    browserSync({
        server: {
            baseDir: "app"
        },
     // proxy: '127.0.0.1:8000'
    });
  });

  gulp.watch('**/*.php').on('change', function () {
    browserSync.reload();
  });
});

gulp.task( 'default', [ 'connect-sync' ] )
Run Code Online (Sandbox Code Playgroud)

当我在我的app目录中有一个index.html文件时,上面的代码有效,但当我用index.php文件替换它时,我得到以下消息:

不能获取 /

不完全确定我在这里做错了什么?

javascript php node.js gulp

13
推荐指数
1
解决办法
1286
查看次数