将数据从一个php页面传递到另一个php页面不起作用 - 为什么?

时间:2009-07-28 21:03:02

标签: php

这里感到沮丧的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。

5 个答案:

答案 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及其调试模块。