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'] はグローバル変数だと思います。

これが表示され、正常に動作するローカル ホストの Im です。Go Daddy では、これは何もしませんが、エラーが発生します

警告: session_start() [function.session-start]: セッション Cookie を送信できません - /home/content の (/home/content/27/6235127/html/gamelist/index.php:4 で開始された出力) によって既に送信されたヘッダー/27/6235127/html/gamelist/index.php 16 行目

警告: session_start() [function.session-start]: セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (/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 に答える