0

私は現在、一意の値を取得し、それをログイン、つまり参照番号として使用するシステムを構築しています。次に、参照番号はデータベースを検索し、対応するすべてのデータを別のページに出力します。これに苦労しています。私のコードは次のとおりです。

Index.PHP

<input name="search_box"  type="text" class="auto-style1" id="search_box" style="width: 240px; height: 30px" maxlength="12">

<input type="submit" name="search" value="Enter" class="auto-style1" style="width: 63px; height: 30px"></td>
<?php $reasons = array("search_box" => "Please Enter Valid Reference Number", "" => "Error"); if ($_GET["loginFailed"]) echo $reasons[$_GET["reason"]]; ?>

</form>

Check.php

 <?php
include "conn.php";

mysql_connect("localhost","root") or die(header("location:index.php?loginFailed=true&reason=search_box"));
mysql_select_db("DB1") or die(header("location:index.php?loginFailed=true&reason=search_box"));

$reference1 = $_POST['search_box'];

$sql = "SELECT * FROM test_table1 WHERE No =$R1";
$result = mysql_query($sql) or die(mysql_error());
    if ($result)
    $count = mysql_num_rows($result);
    else
    $count = 0;

if($count == 1)
 {
  session_register('search_box');
  header("location:result.php");
  }
else 
{
echo (header("location:index.php?loginFailed=true&reason=search_box"));
 }
 ?> 

Output.php

 <?php
include "conn.php";

$sq2 = "SELECT * FROM test_table1";
if (isset($_POST['search']))
 {
    $search_term = mysql_real_escape_string($_POST['search_box']);

    $sq2 .= "WHERE No =  '{$search_term}'";
}

$query= mysql_query($sq2, $con);

while($row = mysql_fetch_array($query)) { ?>
&nbsp;<font size="4" face="Calibri"><b> Ref Number:   </b> </font><?php echo $row['No']; ?></td>
<p>
&nbsp;<font size="4" face="Calibri"><b> Location:   </b></font><?php echo $row['Country']; ?></td>
<p>

<?php
mysql_close($con);
?> 

皆さんができるどんな助けでも大歓迎です、ありがとう。

Qwerty配列。

4

2 に答える 2

1

あなたの問題(おそらく今あなたが疑問に思っている問題(潜在的なものやエクスプロイトがさらにいくつかあるようです))はにありOutput.phpます。

Login_check.php(ブラウザをリダイレクトしているため)からそのファイルを呼び出すと、$_POST配列にはデータが含まれなくなります。

自分で簡単にするためにinclude "Output.php";、ブラウザをリダイレクトする代わりに、なぜheaders()ですか?そうすれば、セッションまたはデータベースをOutput.php再度初期化する必要がなくなります。

ただし、このリダイレクトが必要な場合は、セッションが初期化された後にtoを保存し$_POST['search']、(現在のように)toの代わりにinを参照します。$_SESSION['search']$_SESSION['search']Output.php$_POST['search']

それが少し役立つことを願っています。

于 2013-03-16T19:33:51.220 に答える
0

donationsですから、寄付の一部donId(参照番号)、寄付donNamedonCountry、寄付者の出身国、寄付donAmount額を示すテーブルが1つあると仮定しています。あなたのファイルは次のようになります (私は html のすべての適切なヘッダーを気にしないので、結果は w3c の有効な html にはなりませんが、ブラウザーで問題なく動作するはずです。

mysql_queryを使用しないでください、および他のすべてのmysql_...関数は代わりに使用する必要があると私は言わなければならないと思いますmysqli_*。ただし、次のコードは、最近は既に非推奨になっている古い mysql_ 関数をまだ使用しているため、それに応じて mysqli にアップグレードすることをお勧めします (これは自宅作業です ;) 笑 )


ファイルdonInfo.php:

<html>
<body>
<form action='donInfo.php' method='post'>
    <label for='donId'>Reference No.:</label>
    <input type='text' size='6' name='donId' id='donId' value='' />
    <input type='submit' name='do' value='  Show me!  ' style='margin-left:2em;'/>
</form>

<?php
    /* table definition: 
    CREATE TABLE donations (
        donId int unsigned not null,
        donCountry varchar(80) not null,
        donName varchar(80) not null,
        donAmount numeric(11,2) not null,
        PRIMARY KEY (donId)
    )
    */
    if (!isset($_POST['do']) || !isset($_POST['donId']) || !$_POST['donId']) 
        exit;

    require_once 'connection.php';

    $don=mysql_fetch_assoc(
        mysql_query('SELECT * '.
            'FROM donations '.
            'WHERE donId="'.mysql_real_escape_string($_POST['donId'],$con).'"',$con));
    if ($don===false || !$don['donId'])
        print '<h3>Donation id #'.$_POST['donId'].' does not exist!</h3>';
    else {
        print '<h3>Information about donation id #'.$_POST['donId'].'</h3>'.
            'State: '.$don['donCountry'].'<br/>'.
            'Donator: '.$don['donName'].'<br/>'.
            'Amount: $ '.number_format($don['donAmount'],2).'<br/>'.
            '<hr/>';

        $sumP=mysql_fetch_assoc(
            mysql_query('SELECT SUM(donAmount) total, COUNT(*) donx '.
                'FROM donations '.
                'WHERE donName="'.mysql_real_escape_string($don['donName'],$con).'" '.
                'GROUP BY donName',$con));
        print '<h4>Donations from '.$don['donName'].':</h4>'.
            'Total Amount: $ '.number_format($sumP['total'],2).'<br/>'.
            'Donated <b>'.number_format($sumP['donx'],0).'</b> times to date.<br/>'.
            '<hr/>';

        $sumC=mysql_fetch_assoc(
            mysql_query('SELECT SUM(donAmount) total, COUNT(DISTINCT donName) donators, COUNT(*) donx '.
                'FROM donations '.
                'WHERE donCountry="'.mysql_real_escape_string($don['donCountry'],$con).'" '.
                'GROUP BY donCountry',$con));
        print '<h4>Donations from '.$don['donCountry'].':</h4>'.
            'Total Amount: $ '.number_format($sumC['total'],2).'<br/>'.
            'Total of <b>'.number_format($sumC['donx']).'</b> donations from <b>'.number_format($sumC['donators'],0).'</b> donators.<br/>'.
            '<hr/>';

        $sumW=mysql_fetch_assoc(
            mysql_query('SELECT SUM(donAmount) total, COUNT(DISTINCT donName) donators, COUNT(DISTINCT donCountry) countries, COUNT(*) donx '.
                'FROM donations '.
                'GROUP BY 1=1',$con));
        print '<h4>Donations Total:</h4>'.
            'Total Amount: $ '.number_format($sumW['total'],2).'<br/>'.
            'Total of <b>'.number_format($sumW['donx']).'</b> donations from <b>'.number_format($sumW['countries'],0).'</b> countries and <b>'.number_format($sumW['donators'],0).'</b> donators.<br/>'.
            '<hr/>';        
    }
?>
</body>
</html>

私はコードをテストしたので、うまくいくはずです。私はあなたのconnection.phpスクリプトを使用しています (私は推測します) あなたはデータベースを初期化しています。

機能の簡単な説明: ID を要求し、送信時に ID が存在するかどうかを確認し、存在する場合は、その寄付 ID に関する情報、その ID のユーザーに関する情報、その ID の国に関する情報、および寄付の合計を出力します。統計。寄付 ID が存在しない場合は、次のように表示されます: 別の ID が入力されるのを待っている間、存在しません。

于 2013-03-18T21:21:11.393 に答える