0

首先,我是 php sysql 和数据库的新手。我确实知道一点 c++,所以这对 php 有帮助。我不太了解数据库,所以我的问题是:.....

这是我的代码:

<?php


echo $_SERVER['DOCUMENT_ROOT'].'/'.'lensClensProducts/views/layouts/'.$controller.'.php';


// Includes our database functions
include('db_functions.php');

// includes our cart functions
include('cart_fns.php');

session_start();

 // set up default cart values
 if(!isset($_SESSION['cart']))
 {
     $_SESSION['cart']      =   array();    
     $_SESSION['total_items']   =   0;
     $_SESSION['total_price']   =      '0.00';
 }

// Defaults to index view unless user requests different view
$view = empty($_GET['view']) ? 'index' : $_GET['view'];

// Used for layout
$controller = 'shop';

 // checks which view is requested by user.
 switch ($view) {

   case "index":

         $products = find_products();

   break;

   case "add_to_cart":
         $id = $_GET['id'];
         $add_item = add_to_cart($id);
         $_SESSION['total_items'] = total_items($_SESSION['cart']);
         $_SESSION['total_price'] = total_price($_SESSION['cart']);
         header('Location: index.php');
   break;   

   case "update_cart":
         update_cart();
         $_SESSION['total_items'] = total_items($_SESSION['cart']);
         $_SESSION['total_price'] = total_price($_SESSION['cart']);
         header('Location: index.php?view=checkout'); 
   break;        

   case "checkout":

       if ( 0    < $_SESSION['total_price'] && $_SESSION['total_price'] <= 100  )
       {
           $shipping = 11.95;
       }

       if ( 100  < $_SESSION['total_price'] && $_SESSION['total_price'] <= 250  )
       {
           $shipping = 18.50;
       }

       if ( 250  < $_SESSION['total_price'] && $_SESSION['total_price'] <= 500  )
       {
           $shipping = 25.50;
       }

       if ( 500  < $_SESSION['total_price'] && $_SESSION['total_price'] <= 1000 )
       {
           $shipping = 36.00;
       }

       if ( 1000 < $_SESSION['total_price'] && $_SESSION['total_price'] <= 2500 )
       {
           $shipping = 64.50;
       }

       else if ( 2500 < $_SESSION['total_price'] )
       {
           $shipping = 250.00;
       }

   break;        

 }

// includes layout for controller
include( $_SERVER['DOCUMENT_ROOT'].'/'.'lensClensProducts/views/layouts/'.$controller.'.php' );

?>

我在最后一行遇到问题 include($_SERVER['DOCUMENT_ROOT'].'/'.'gamelist/views/layouts/'.$controller.'.php' );

PS 此代码的第 16 行还有一个回显

特别是 ['DOCUMENT_ROOT'] 我猜这是一个全局变量。

我是这个出现的本地主机并且工作正常,在 go daddy 这没有做任何事情,但给我一个错误

警告:session_start() [function.session-start]:无法发送会话 cookie - 标头已经由 /home/content/27/6235127/html/gamelist/index.php:4 中的 /home/content 发送/27/6235127/html/gamelist/index.php 第 16 行

警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 已在 /home/content 中发送标头(输出开始于 /home/content/27/6235127/html/gamelist/index.php:4) /27/6235127/html/gamelist/index.php 第 16 行 /gamelist/views/layouts/index.php

我怀疑这与服务器名称有关,我使用了 lensclens3.db.6235127.hostedresource.com 的服务器名称,但这不起作用。

我知道上面的这个服务器名称在这个购物车的另一个​​页面上使用(和工作)时有效。

我应该使用另一个服务器名称吗?

4

1 回答 1

0

页面以特定顺序从服务器发送,首先是标题,然后是页面内容。您可以使用 PHP 中的各种函数来设置或修改标头,但如果您不自己制作,服务器会自动编写一些默认值。

像 echo 这样的命令将发送页面内容,您可以在页面上实际看到/读取的信息。

诸如 session_start 之类的命令会发送标头,即传递给浏览器的不可见信息。在 session_start 的情况下,信息是跟踪信息,很像 cookie。

通过使用 echo 命令,您告诉服务器开始提供内容,并且它必须发送标头。如果在标头已发送后使用 session_start,PHP 会抛出警告说“我不能使用此命令,因为标头已发送并且我开始提供内容。”

于 2012-05-23T22:44:28.400 回答