这里感到沮丧的php新手......
我正在尝试将billto或shipto的“type”值从ab.php传递给abp.php。
ab.php片段:
<?php
echo '<a href="' . tep_href_link(FILENAME_ABP, 'edit=' . $bill_address['address_book_id'] . '&type=billto', 'SSL') . '">' .
tep_image_button('small_edit.gif', SMALL_IMAGE_BUTTON_EDIT) .
'</a>';
?>
这会将&amp; type = billto添加到网址的末尾。它看起来像这样: www.mydomain.com/abp.php?edit=408&type=billto&id=4a6524d
abp.php片段:
if ($HTTP_GET_VARS['type'] == 'billto') {
then it does a db update...
虽然if(我可以告诉)返回false,因为没有执行更新。
我也试过$ _GET而不是$ HTTP_GET_VARS。
因为abp.php中的代码直到用户点击按钮后才执行,所以我不能使用echos来检查值,但是我可以看到url中的类型,所以我不知道为什么它没有执行。
真的可以使用某个方向......是否需要更改,或者甚至是如何进一步排除故障的建议。我现在处于一个巨大的学习曲线中间。感谢!!!
编辑: 对不起,我刚刚意识到我遗漏了db更新后用户回到ab.php。所以整个工作流程都是这样的:
用户访问ab.php。 用户点击链接转到abp.php。 用户更改abp.php上的数据。 用户点击abp.php上的按钮。 执行更新到db并将用户发送回ab.php。
答案 0 :(得分:3)
因为abp.php中的代码直到用户点击按钮后才执行,所以我不能使用echos来检查值为什么不呢?< / p>
echo '<pre>Debug: $_GET=', htmlspecialchars(var_export($_GET, true)), "</pre>\n"; echo '<pre>Debug: billto===$_GET[type] = ', 'billto'===$_GET['type'] ? 'true':'false', "</pre>\n"; if ( 'billto'===$_GET['type'] ) { ...
编辑:您可能也对netbeans and its php module感兴趣:
“使用Xdebug调试PHP代码:您可以检查局部变量,设置监视,设置断点并实时评估代码。使用转到快捷方式和超文本链接导航到声明,类型和文件。”
答案 1 :(得分:1)
尝试这样的事情
if ($_GET['type'] == 'billto') {
die("got to here, type must == billto");
这将证明你的if语句是否有效, 可能是更新部分无法正常工作
答案 2 :(得分:1)
在if语句之前 - 尝试
var_dump($_GET);
确保'billto'包含在$ _GET数组中。当然,如果你有debuger设置,你应该能够看到$ _GET数组的值
答案 3 :(得分:0)
或尝试:
var_dump($_REQUEST);
答案 4 :(得分:0)
检查第二页的网址,是否格式正确?从您发布的代码段,我不知道是否会有?在问号之后。还尝试禁用重定向以查看您的代码是否正常工作。
另一件事是您可能希望先将新url放在变量中,然后将其放入链接HTML中。它的效率较低,但使代码更容易阅读和调试。
尝试打开错误报告,将其放在php脚本的开头
error_reporting ( E_ALL | E_STRICT)
PHP非常容忍拼写错误并访问不存在的数组中的下标;通过强制执行严格并报告所有错误,您将能够捕获这些案例。
如果看不到输出,请尝试:
function log_error($no,$msg,$file,$line)
{
$errorMessage = "Error no $no: $msg in $file at line number $line";
file_put_contents("errors_paypal.txt",$errorMessage."\n\n",FILE_APPEND);
}
set_error_handler('log_error');
您可能必须为要写入的日志文件设置一些文件权限。
当然,您也可以获得Netbeans及其调试模块。