小编Dug*_*ugi的帖子

我可以在PHP中的不同函数之间共享变量吗?

我会尝试用一个例子来解释......

假设我有两个不同的函数,其中一个函数有一个已定义的变量.在第二个函数中,我不想再次编写相同的变量,我可以简单地使用第二个函数中第一个函数的变量而不在第二个函数中重新定义它吗?

就像是:

function a()
{
  $var = "my variable";
}

function b()
{
 echo $var;
}
Run Code Online (Sandbox Code Playgroud)

对不起,如果这个问题有点傻,但我还是初学者=).

php variables function

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

scandir()按修改日期排序

我试图让scandir();函数超出其书面限制,我需要的不仅仅是它目前支持的alpha排序.我需要scandir();按修改日期对结果进行排序.

我已经尝试了一些我在这里找到的解决方案以及来自不同网站的一些其他解决方案,但没有一个对我有用,所以我认为在这里发布是合理的.

到目前为止我尝试过的是:

function scan_dir($dir)
{
    $files_array = scandir($dir);
    $img_array   = array();
    $img_dsort   = array();
    $final_array = array();

    foreach($files_array as $file)
    {
        if(($file != ".") && ($file != "..") && ($file != ".svn") && ($file != ".htaccess"))
        {
            $img_array[] = $file;
            $img_dsort[] = filemtime($dir . '/' . $file);   
        }
    }

    $merge_arrays = array_combine($img_dsort, $img_array);
    krsort($merge_arrays);

    foreach($merge_arrays as $key => $value)
    {
        $final_array[] = $value;    
    }

    return (is_array($final_array)) ? $final_array : false;
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎对我不起作用,它只返回3个结果,但它应该返回16个结果,因为文件夹中有16个图像.

php arrays sorting scandir

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

在另一个CDATA中使用CDATA

我有这种困难的情况,我需要在另一个CDATA标签内使用CDATA标签.但情况很容易解释.

我有以下的事情:

<edit>
<![CDATA[
<script type="text/javascript">
<![CDATA[
    window.onload = function() 
    {
        document.getElementById('block').onclick = function() 
        {
            this.onclick = '';
            this.value = '{LA_SEND_CONFIRM}';
            this.className = this.className.replace('button1','');
            document.getElementById('replacement').value = '{LA_BLOCK_CODE}';
        }
    }
]]>
</script>
]]>
</edit>
Run Code Online (Sandbox Code Playgroud)

我需要将我的Javascript包装在CDATA中以用于显示目的,因此当我打开该XML文件时,它会正确显示并且Javascript代码位于这些CDATA标记内.它们在XML文件本身内没有任何实际意义.

如您所知,上面的代码会给我一个XML解析错误,因为嵌套CDATA不起作用.有没有办法逃脱,]]>所以我可以向我的用户显示这些括号?

我希望我很清楚.

xml cdata xml-parsing

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

为偶数和奇数div添加不同的类

我有一块PHP代码,如下所示:

$flag = false;
if (empty($links))
{
    echo '<h1>You have no uploaded images</h1><br />';
}

foreach ($links as $link)
{   
    $extension  = substr($link, -3);
    $image_name = ($extension == 'peg') ? substr($link, -15) : substr($link, -14);  

    ($delete_submit) ? deleteImage('.' . $image_name, $link) : '';

    echo '<div>';
        echo '<table>';

        echo '<tr><td class="fullwidth"><a class="preview_img" href="' . $link . '"><img src="' . $link . '" title="Click to enlarge" width="300" class="thumb" /></a></td></tr>';

        echo '<tr><td><span class="default">Direct:</span>&nbsp;';
        echo '<input type="text" readonly="readonly" class="link-area" onmouseover="this.select();" value="' . $link . …
Run Code Online (Sandbox Code Playgroud)

html css php

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

如何在Laravel 5包中的测试中模拟Accept标头?

我正在构建一个Laravel包,它Illuminate\Http\Request通过注入一个新方法.我正在注入的方法已经完成,预计可以很好地工作,但我也想在发布它之前测试它.

我的测试要求我更改请求的Accept标题,以便我查看测试是否通过.所以我已经完成以下操作来模拟请求:

// package/tests/TestCase.php

namespace Vendor\Package;

use Illuminate\Http\Request;
use Orchestra\Testbench\TestCase as Orchestra;

abstract class TestCase extends Orchestra
{
    /**
     * Holds the request
     * @var Illuminate\Http\Request
     */
    protected $request;

    /**
     * Setup the test
     */
    public function setUp()
    {
        parent::setUp();

        $this->request = Request::capture();

        $this->request->headers->set('Accept', 'application/x-yaml');
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的测试中,我使用我正在注入的方法Request,$this->request->wantsYaml()并且它始终返回false,因为Accept标头未设置为application/x-yaml.

class RequestTest extends TestCase
{
    /** @test */
    public function it_should_return_a_bool_if_page_wants_yaml_or_not()
    {
        dump($this->request->wantsYaml()); // Return false

        $this->assertTrue($this->request->wantsYaml()); // …
Run Code Online (Sandbox Code Playgroud)

php testing phpunit package laravel-5

18
推荐指数
1
解决办法
698
查看次数

为Web应用程序使用自己的API - 使用OAuth2进行身份验证过程

概观

我目前正在为图像共享应用程序创建一个API,该应用程序将在网络上运行,并在将来的某个时间在移动设备上运行.我理解API构建的逻辑部分,但我仍然在努力满足自己对身份验证部分的要求.

因此,我的API必须是全世界都可访问的:具有访客访问权限(例如,未登录的人可以上载)以及注册用户.因此,当注册用户上传时,我显然希望将用户信息与请求一起发送,并通过我的数据库中的外键将该用户信息附加到上载的图像.


通过OAuth2进行身份验证 - 实施

我已经明白OAuth2是API身份验证的方法,所以我要实现这一点,但我真的很想知道如何处理我的情况.我想到使用client credentials授权并为我的Web应用程序生成组凭据,并让它向API发送请求,client secret以获取访问令牌并让用户执行操作.用户注册过程本身将使用此授权进行处理.

但是当用户注册并登录时呢?我现在如何处理身份验证?这是否需要另一笔补助金来接管?我在考虑在用户登录期间进行一些授权过程,以生成新的访问令牌.这种方法有误吗?


我需要帮助的是什么

我需要你的输入如何正确处理我的情况下的身份验证流程.这种双向身份验证过程可能不是我需要的,但它是我理解它的方式.我非常感谢您的支持.

authentication api-design credentials user-accounts oauth-2.0

16
推荐指数
3
解决办法
2654
查看次数

变量前面的感叹号 - 需要澄清

我已经使用PHP了很长一段时间了,但这对我来说总是一个谜,在变量前正确使用感叹号(负号).

有什么!$var表明?是var false,空,没有设置等?

以下是我需要学习的一些例子......

例1:

$string = 'hello';
$hello = (!empty($string)) ? $string : '';

if (!$hello)
{
    die('Variable hello is empty');
}
Run Code Online (Sandbox Code Playgroud)

这个例子有效吗?如果$string是空的话,if语句真的可以工作吗?

例2:

$int = 5;
$count = (!empty($int)) ? $int : 0;

// Note the positive check here
if ($count)
{
   die('Variable count was not empty');
}
Run Code Online (Sandbox Code Playgroud)

这个例子有效吗?

我从不使用上述任何示例,我将这些限制if ($var)为仅具有布尔值的变量.我只需要知道这些例子是否有效,这样我就可以扩大对if ($var)语句的使用范围.他们看起来很干净.

谢谢.

php variables if-statement boolean-expression negation

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

Javascript数学"绘制"多个其他矩形周围的矩形,以实现背景效果

注意:我将使用与背景交替的单词overlay.

我目前正在制作一个指南模式,我突出显示元素,使它们从较暗的半透明背景中脱颖而出.

所以基本上,我有一个我想要不被覆盖的元素的选择器,然后我用半透明的黑暗div来围绕它,模拟带有排除元素的叠加.

我的解决方案适用于一个突出显示的元素,但当该数字变为2+时,很难计算如何将黑色div放在这些元素周围.事实是:突出显示的需求会因页面而异 - 这并不像那些多个元素是静态的.

所以说明我的问题:

在此输入图像描述

在这里,您可以看到需要放入页面的不同框,以便使用半透明暗div来包围Box2和Box2,基本上使用突出显示的元素模拟叠加效果.对于像这样的一个案例,我可以硬编码计算,一切都会好的,但是如果 Box1比Box2高?那么如果他们不再水平重叠呢?如果Box3需要突出显示怎么办?

在任何一种情况下,我都不知道要放置多少个暗盒以及放置它们的位置.

在这种情况下,是否有任何数学公式可以帮助我?使用jQuery也是可能的,因为它包含在我的项目中.

我如何处理这个问题并使其可扩展(多个框,不同的位置)?

javascript css math jquery position

10
推荐指数
1
解决办法
431
查看次数

使用jQuery AJAX和PHP创建智能远程上载脚本

我目前正在创建一个图像托管脚本,到目前为止一直很好.我使用了几个插件来创建本地上传过程,使用drag&drog + AJAX完全正常.现在我已经转移到需要使用jQuery AJAX和PHP脚本来创建远程上传过程的部分来处理整个事情.

它将如何运作

我的想法是这样的:页面中间有一个大框,可以接受远程上传的URL.一旦有效的 URL传递到文本区域,它们将立即通过jQuery AJAX发送到服务器端脚本.它与keyup事件有关.

这就是它的样子: http ://i.imgur.com/NhkLKii.png.
"来到这里的URL"部分已经是一个文本区域-所以这部分的已经做了.


我需要帮助的地方

整个情况的问题是:一旦有有效的URL粘贴到文本区域,必须立即将这些URL转换为某种类型的框,其中还包括上载进度.看起来像这样的东西(从本地上传部分复制):http://i.imgur.com/q7RyDmb.png

很容易实现本地上传的进度指示器,因为它是我使用的插件提供的功能,但我不知道如何指示远程上传的进度,这完全是从头开始的.

所以这就是我想象的逻辑流程:

  1. 用户将一些URL粘贴到文本区域
  2. 有一个客户端检查来验证粘贴的URL
  3. 验证的URL发送到upload.php on keyup (?)
  4. 正在处理网址
  5. 上传继续时,我们向用户显示旋钮中 的进度(?)
  6. PHP脚本完成该过程并返回上载的URL
  7. 我在AJAX success回调中更新页面以显示上传的文件

那么,标有(?)的两个流程对我来说还不清楚 - 我不知道如何实现这些......


我试过了什么

好吧,我不是来这里请你为我做一切,但我遇到了一个死胡同,我不知道如何继续.我到目前为止所做的是从文本区域收集URL,如果有多个URL由换行符(\n)分隔,我只是split用来获取一个粘贴文本数组,然后在循环中使用另一个函数来验证如果他们是URL.如果在文本区域值内没有检测到换行符,那么我只需检查提供的一行.在每种情况下,我将整个文本区域发送到PHP脚本,因为我不知道如何摆脱jQuery中的无效URL.我已经创建了一个debug()在PHP中调用的函数,它将任何内容存储到debug.log文件中,当我将某些东西粘贴到文本区域时,这就是我得到的(一次尝试):

https://www.google.com/https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

https://www.google.com/在文本区域粘贴一次,但它在PHP端被记录两次,我无法确定原因.

这就是我的jQuery的样子:

// Remote upload
    var char_start  = 10;
    var index       = 0;
    var urls        = …
Run Code Online (Sandbox Code Playgroud)

html javascript php ajax jquery

9
推荐指数
1
解决办法
2246
查看次数

浏览器通知调用了网站

最近,在某些网站上,我看到这些浏览器级别调用的通知即使您没有打开某个网站也会弹出.您必须允许显示这些通知,然后它们几乎无处不在,即使您第一次打开没有选项卡的浏览器时也是如此.

我不知道如何使用我的网站调用的这些浏览器级通知.一个名称和一些代码示例将不胜感激,我甚至不知道它编写的编程语言(假设是Javascript).

这是我正在谈论的截图(右上角):

通知1

通知2

通知3

如您所见,即使浏览器已最小化,它们仍然会出现!

javascript browser notifications

8
推荐指数
1
解决办法
577
查看次数