小编Leo*_*lis的帖子

为什么$ _SERVER ['REQUEST_METHOD']总是GET?

我对此有点困惑.我希望这是我错过的非常明显的事情!我有一个非常简单的形式:

<form class="form-signin" role="form" name="login" method="POST" action="/page">
  <input type="password" name="password" />
  <input type="submit" value="Sign in" />
</form>
Run Code Online (Sandbox Code Playgroud)

注意:此页面位于/page以下HTML之后并在之后回显:

/page我有这个在文件的顶部:

<?php
var_dump($_SERVER['REQUEST_METHOD']);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它总是显示为GET我提交此表单时.如果我把action="/page"它拿出来然后就会显示出来POST.我在这里错过了什么?

注意:即使我加载页面,然后在上述var_dump()调用后退出,它仍然显示GET.

在检查员的时间表中,我看到了这个请求:

在此输入图像描述

php forms

22
推荐指数
1
解决办法
4616
查看次数

使用Composer安装Propel行为

我目前正在Windows上开发WampServer并且已经开始Composer工作(有OpenSSL),Propel安装没有问题,一切似乎都运行正常.但是,我的项目现在需要使用此处Equal Nest Behaviour找到的内容.

我以为这会让我使用推进行为.在我的schema.xml我有以下片段:

<table name="friend">
  <behavior name="equal_nest">
    <parameter name="parent_table" value="user" />
  </behavior>
</table>
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时propel-gen sql我得到了错误:

[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties
Run Code Online (Sandbox Code Playgroud)

文件说:

然后,如果您不在应用程序中使用Composer或自动加载器,请将以下配置添加到build.properties或propel.ini文件中:

让我假设我没有必要放入build.properties文件.但是,放入它会给我以下错误:

PHP Fatal error:  Class 'EqualNestParentBehavior' not found in C:\home\movesleag
ue.com\vendor\craftyshadow\propel-equalnest-behavior\src\EqualNestBehavior.php o
n line 74
Run Code Online (Sandbox Code Playgroud)

我不确定这是否与自动加载无法工作或命名空间有关(我的架构有一个命名空间,但我也删除了同样的错误).

我的composer.json文件看起来像这样:

{
    "require": {
        "craftyshadow/propel-equalnest-behavior": "dev-master"
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:我确实在那里有Propel,但由于同样的行为需要它本身,我只是让它做它的工作.

那么,在Composer中使用Propel行为的正确方法是什么,如果我做得对,为什么我会看到上面的错误?

更新

我在顶部添加了这一行EqualNestBehaviour.php:

include __DIR__ …
Run Code Online (Sandbox Code Playgroud)

php propel behavior composer-php

20
推荐指数
1
解决办法
1072
查看次数

你如何在Safari中测试Apple Pay?

我正在使用Stripe在网上设置Apple Pay,并希望使用我们在iTunes Connect中设置的Sanbox Tester帐户在Safari中的iOS和macOS上进行测试.

在测试设备(2017 iPad)上,我使用Sandbox Tester帐户登录iCloud,并在设置应用程序中将测试卡添加到电子钱包中.在我的开发网站上,Apple Pay按钮显示,交互工作正常.

我在MacBook Pro(Retina,2015年中)创建了一个新帐户,并使用相同的Sandbox Tester帐户再次登录iCloud.但是,当我在此处查看我的开发网站时,该checkAvailability函数始终返回false:

Stripe.applePay.checkAvailability(function(available) {
  alert(available);
  ...
}
Run Code Online (Sandbox Code Playgroud)

大概这是因为我需要进一步设置Apple Pay才能工作.但对于我的生活,我无法让macOS合作.在阅读了一些文档后,我认为这些点是相关的:

  • 在我的iPad的电子钱包和Apple Pay设置中,没有"允许在Mac上付款"选项
  • 我的macOS设置应用中没有"电子钱包和付款"选项
  • 在macOS Safari设置,隐私选项卡中没有提到Apple Pay
  • 在Mac上启用了切换功能

我是否可以使用切换在macOS上使用我的沙箱用户启用测试付款,如果是这样,我错过了哪些步骤?

更新

  • 我的macOS Sierra版本是10.12.4(16E195)
  • window.ApplePaySession.canMakePayments()在控制台中运行返回false

更新2

此处列出的步骤均适用于两台设备.当我在MacBook上打开Safari并导航到某个页面时,多任务屏幕上会显示切换图标,反之亦然,当我在iOS Safari中打开一个标签时,切换图标会显示在停靠栏的左侧.它似乎切换工作正常.

此外,Universal Clipboard正在双向工作.

注意:在使用不同iPad切换的同一台MacBook上的另一个(非沙盒)iCloud帐户上,付款选项会按预期显示在Safari中.

safari stripe-payments applepay

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

如何在PHP中强制使用From:标头(信封发件人)而不将其放入mail()?

我有一个开发Web服务器(CentOS LAMP堆栈),它使用postfix中的SMTP中继设置来发送电子邮件.我们使用带有多个用户的mailgun,类似于的设置,但是使用特定用户而不仅仅是通配符电子邮件:

/etc/postfix/main.cf中

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_auth_enable = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map
smtp_sender_dependent_authentication = yes
smtp_sasl_security_options = noanonymous
relayhost = [smtp.mailgun.org]:587
Run Code Online (Sandbox Code Playgroud)

/等/后缀/ sasl_passwd

# our domains
no-reply@domain.com  postmaster@domain.com:password1
info@domain2.com     postmaster@domain2.com:password2
support@domain3.com  postmaster@domain3.com:password3

# in-case we don't have it setup, use a default
#[smtp.mailgun.org]:587      postmaster@domain2.com:password2
Run Code Online (Sandbox Code Playgroud)

/等/后缀/ relayhost_map

no-reply@domain.com  [smtp.mailgun.org]:587
info@domain2.com     [smtp.mailgun.org]:587
support@domain3.com  [smtp.mailgun.org]:587
Run Code Online (Sandbox Code Playgroud)

要设置电子邮件日志记录,我使用自己的SMTP凭据验证计算机上的每个开发人员.我想设置它,以便开发人员不需要在postfix中添加additional_headersadditional_parameters获取正确的smtp中继匹配 - 事实上,在代码中为不同的开发人员设置不同的邮件头需要做很多工作,特别是对于版本化的码.我离题了.当我使用以下内容时,这在postfix的方面工作得很好:

mail('email@address.tld', 'subject', 'message here...', 'From: noreply@domain.com', '-fnoreply@domain.com');
Run Code Online (Sandbox Code Playgroud)

所以我然后将以下内容添加到vhost配置中:

php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -fnoreply@domain.com"
Run Code Online (Sandbox Code Playgroud)

这成功地让我摆脱了-f additional_parameter …

php apache email postfix-mta

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

在Propel中使用toArray()时,是否可以删除带*RECURSION*的字段?

我正在使用Propel 2.我通过关系保湿对象,如下:

$return = OrderQuery::create()
    ->joinWith('Customer')
    ->joinWith('Status')
    ->find()
    ->toArray(TableMap::TYPE_PHPNAME, true, [], true);
Run Code Online (Sandbox Code Playgroud)

生成的数组看起来像这样:

{
  "Id": 1,
  "CustomerId": 1,
  "StatusId": 1,
  "Initiated": "2016-01-01T01:01:01+00:00",
  "Customer": {
    "Id": 1,
    "Forname": "Test",
    "Surname": "Smith",
    "Orders": [
      "*RECURSION*"
    ]
  }
  "Status": {
    "Id": 1,
    "Title": "title 1",
    "Priority": 1,
    "Orders": [
      "*RECURSION*"
    ]
  },
}
Run Code Online (Sandbox Code Playgroud)

我想删除值为的字段*RECURSION*.我尝试使用$alreadyDumpedObjects(第3个)参数,toArray()但似乎没有帮助.我也可以通过unset()调用来做某种形式的数组行走,但是我希望有更好的方法,也许是格式化程序或其他东西?

对于奖励积分,我非常想删除定义外键关系的列.例如,CustomerId会去,但Customer会留下来.

php propel propel2

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

使用自定义SQL对Propel对象进行保湿时,如何获得额外的列?

我使用自定义SQL连接两个表,将一些业务逻辑应用于日期,然后使用结果来水合推进对象(集合).这是我的代码:

$testtypes = TesttypeQuery::create()->find();

foreach ($testtypes as $testtype) {

  /* work out what most recent schedule */
  $con = \Propel::getConnection(SchedulePeer::DATABASE_NAME);
  $sql = "SELECT `schedule`.*, (`schedule`.`last` + INTERVAL `duration`.`weeks` WEEK + INTERVAL `duration`.`months` MONTH + INTERVAL `duration`.`years` YEAR) AS `dueDate` FROM `schedule` LEFT JOIN `duration` ON `schedule`.`duration_id` = `duration`.`id` HAVING `schedule`.`testtype_id` = {$testtype->getId()} AND `dueDate` < NOW() ORDER BY `dueDate` ASC LIMIT 1";
  $stmt = $con->prepare($sql);
  $stmt->execute();
  $formatter = new \PropelObjectFormatter();
  $formatter->setClass(SchedulePeer::OM_CLASS);
  $schedules = $formatter->format($stmt);

  // more stuff here ... 
} …
Run Code Online (Sandbox Code Playgroud)

php mysql propel

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

文件是为i386构建的,而不是在Mac OSX 10.6上为iOS 4.2编译OpenCV2.2时所链接的架构(x86_64)

我一直在关注http://www.atinfinity.info/wiki/index.php?OpenCV/Using%20OpenCV%202.2%20on%20iOS%20SDK%204.2上的简单指南(使用旧指南我也读过在http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en),以获得编译在iOS 4.2的工作OpenCV2.2.一切顺利,直到我试图建立.当我运行以下内容时:

lc:opencv_simulator leonard$ ../opencv_cmake.sh Simulator ../../OpenCV-2.2.0/
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ld: warning: in /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/usr/lib/libSystem.dylib,
  file was built for i386 which is not the architecture being linked (x86_64)
Run Code Online (Sandbox Code Playgroud)

这是使用(显然在其他设置中):

-D CMAKE_OSX_ARCHITECTURES="i386"
Run Code Online (Sandbox Code Playgroud)

我在OSX 10.6上看到i386被视为默认值,因此它使用系统默认值(但是x86_64).我也读过我可以用的:

export CFLAGS=-m32
export CPPFLAGS=-m32
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.

有任何想法吗?

c macos gcc opencv ios

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

你能用更高级的逻辑对jQuery选择器进行分组吗?

我们正在开发一个过滤系统,您可以在其中获得一组选项,例如:

颜色 红色,蓝色,绿色

价格范围 £0-£5,£6-£10,£11 +

阿迪达斯,耐克,匡威

每个选项都是一个复选框.我们使用以下逻辑进行过滤:

  • 来自组的OR选项
  • 加入那些与AND

所以,如果我要检查Red,Blue,£0-£5,Nike和Converse,那么逻辑将是:

(红色或蓝色)AND(£0-5)AND(Nike OR Converse)

每个复选框都有一个ID.我希望使用上面的逻辑构建一个选择器,但我不确定在jQuery中执行它的最佳方法.显然,ANDs只是附加在一起,ORs(或等效的)在这些选择器中使用命令,但如果没有某种分组方式,那将破坏逻辑,即:

$('(#red,#blue)(#price0to5)(#nike,#converse)')

任何建议或替代方案?

jquery logic selector

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

为什么我无法使用OAuth进行身份验证?

我写了一个非常简单的应用程序来更新我在给定条件下的推特状态.我使用了twitter文档来了解创建OAuth签名的要求以及如何构建Authorization标头.然后我用PHP中的cURL发送请求.

使用twitter开发站点上的OAuth工具,我比较了我的签名基本字符串和授权标题,两者完全相同:

签名基本字符串

POST&https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json&oauth_consumer_key%3DYNxxxxxxxxxxxWnfI6HA%26oauth_nonce%3D31077a3c7b7bee4e4c7e2b5185041c12%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1340729904%26oauth_token%3D2991771-4csoiO2fxmWgSxxxxxxxxxxDjWj2AbyxATtiuadNE%26oauth_version%3D1.0%26status%3Dblah%2520test%2520blah.
Run Code Online (Sandbox Code Playgroud)

授权标头

Authorization: OAuth oauth_consumer_key="YN4FLBxxxxxxxxxxI6HA", oauth_nonce="31077a3c7b7bee4e4c7e2b5185041c12", oauth_signature="M2cXepcxxxxxxxxxxAImeAjE%2FHc%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1340729904", oauth_token="2991771-4cxxxxxxxxxxSmRvjzMoooMDjWj2AbyxATtiuadNE", oauth_version="1.0"
Run Code Online (Sandbox Code Playgroud)

显然我已经用一些字符替换了x隐藏我的数据,但比较两个字符的字符会产生完全相同的结果.作为参考,我硬编码OAuth工具生成的时间戳和随机数,以便我的值可以相同以进行检查.我的访问级别设置为读取和写入.在同一页面上有一个最后的例子 - 在命令行上使用cURL运行的命令.当我运行此命令时,它完美地工作并发布到我的Twitter提要没有问题.

考虑到这一点,我相信到目前为止我创建的所有内容都很好,并且不认为我发布代码可以生成前面提到的详细信息.然而,我使用cURL进行调用的代码,我认为是罪魁祸首,但不能说明原因:

<?php
// ...
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $baseUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Authorization: $header"));
curl_setopt($curl, CURLOPT_POSTFIELDS, array('status' => $status));
$result = json_decode(curl_exec($curl));
curl_close($curl);

var_dump($result);
Run Code Online (Sandbox Code Playgroud)

请注意$baseUrl,$header$status生成签名基本字符串和授权标头时使用的变量相同,只是匹配得很好.

运行时页面的输出是:

object(stdClass)#1 (2) { ["error"]=> string(34) "Could not authenticate with OAuth." ["request"]=> string(23) "/1/statuses/update.json" }
Run Code Online (Sandbox Code Playgroud)

我希望这里有足够的细节让某人指出我正确的方向!

php twitter curl oauth

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

这个推进"无法重新声明功能"错误的最正确方法是什么?

我有以下表格:

user,logbook,user_logbook

用户日志是一个联结表(isCrossRef="true"在schema.xml中),包含user_idlogbook_id外键.

我还想记住任何给定用户当前选择的日志,所以我current_logbook_id也在我的user表中放了一个,并给了一个外键.但是,在我的BaseUserQuery.php文件中,我得到了两个filterByLogbook()函数.

我知道,当你有两个外键到同一个表,相同的表,你得到的功能,如getUserRelatedBySomething()getUserRelatedBySomethingElse(),但什么是在这种情况下做的最好的事情吗?

我当然可以删除外键并只使用保存的ID,或者我想我可以创建一个新的联结表(虽然这似乎不正确).在这种情况下,最好的做法是在MySQL Propel 中"做正确的事"(希望我能够做到这两点!).

mysql propel redeclare

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