-1

重複の可能性:
PHP によって既に送信されたヘッダー

私は Joomla 2.5 を使用しています。Joomla 外で小さなフォームを開発しました。Joomla 認証を使用してアクセスを制限したいと考えています。

次の 3 つのファイルを作成しました。

auth.php (joomla ルートに存在します)

<?php
define( '_JEXEC',1);
define('JPATH_BASE', dirname(__FILE__));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
/* Create the Application */
$mainframe =& JFactory::getApplication('site');
/* Make sure we are logged in at all. */
if (JFactory::getUser()->id == 0)
die("Access denied: login required.");
?>

2番目はconnect-db.phpです

    <?php
    $server = 'xxxxxxxxx';
    $user = 'xxxxxxxx';
    $pass = 'xxxxxxxxxxxx';
    $db = 'xxxxxxxxxxx';

    // Connect to Database
    $connection = mysql_connect($server, $user, $pass) 
    or die ("Could not connect to server ... \n" . mysql_error ());
    mysql_select_db($db) 
    or die ("Could not connect to database ... \n" . mysql_error ());


    ?>

3番目はlist_names.phpで、「list」フォルダにあります

    <?php
    // connect to the database
include('../auth.php');
    include('connect-db.php');
    // get results from database
    $result = mysql_query("SELECT * FROM names") 
            or die(mysql_error());             
    // display data in table
    echo "<table border='0' cellpadding='10' cellspacing='1' width='650'>";
    echo "<tr> <th>ID</th> <th>Names</th><th>Delete</th></tr>";
    // loop through results of database query, displaying them in the table
    while($row = mysql_fetch_array( $result )) {
            // echo out the contents of each row into a table
            echo "<tr>";
            echo '<td width="20">' . $row['id'] . '</td>';
            echo '<td width="330">' . $row['Name'] . '</td>';
            echo '<td width="150"><a class="btn-del" href="delete_name.php?id=' .             $row['id'] . '">Delete</a></td>';
            echo "</tr>"; 
    } 
    // close table>
    echo "</table>";
    ?>
    <p><a class="btn-add" href="new_name.php">Add New name</a></p>

問題は、ファイルにアクセスすると、次のエラーが発生することです。

警告: session_start() [function.session-start]: セッション Cookie を送信できません - /home/xxxxxxx/public_html の (/home/xxxxxxxx/public_html/name/list/list_names.php:2 で開始された出力) によって既に送信されたヘッダー/name/libraries/joomla/session/session.php 行 532

警告: session_start() [function.session-start]: セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (/home/xxxxxxxx/public_html/name/list/list_names.php:2 で開始された出力) /home/xxxxxxxx/public_html /name/libraries/joomla/session/session.php 行 532 アクセスが拒否されました: ログインが必要です。

私はプログラマーではありません!私は助けてくださいやって学んでいます。よろしく、

4

3 に答える 3

1

次のコードを使用している場合

define( '_JEXEC',1);
define('JPATH_BASE', dirname(__FILE__));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
/* Create the Application */
$mainframe =& JFactory::getApplication('site');
/* Make sure we are logged in at all. */

追加のDB接続は必要ありません。joomlaDBオブジェクトを使用できます。

$db     = JFactory::getDBO();
$query = "SELECT * FROM table_name";
$db->setQuery($query);
$db->query();
$num    =   $db->getNumRows();
$result = $db->loadObject();

これがお役に立てば幸いです。

于 2012-12-14T10:28:50.053 に答える
1

警告は、headers already sentHTTP ヘッダー (この場合は Cookie) が送信される前に出力がブラウザーに送信されることによって発生します。

との開始<?phpタグ の前に空白があるようです。開始 PHP タグの前の空白はこの警告の原因となるため、削除する必要があります。list_names.phpdb-connect.php

また、db に 2 回接続しています。Joomla を含めている場合は、2 回目に手動で接続する必要はありません。Joomla のデータベース オブジェクトを取得するだけです。

$db =& JFactory::getDBO();
于 2012-12-14T09:23:48.340 に答える
-1

例の指示に従って、コードを認証プラグインに挿入します。

于 2012-12-14T12:09:15.867 に答える