【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

はじめて質問させていただきます。よろしくお願いいたします。

質問ですが、

http://xxx.xxx.co.jp/xxx/index.php?a=situmon&cid=0

の時に、

$line="./test.txt";

for($i=0;$i<sizeof($line);$i++)
{
list($title,$comment)=explode("<>",$line[$i]);
if($cid == $i )
{
echo $title . "<hr>".$comment . "<br>\n";
}
}

このようなスクリプトで一行取り出したいと思っています。

ですが、$cidが 0 以外の場合は取得できるのですが。

0 の場合取得できません。

どのようにすれば取得できるようになるのかご教授ください。
------------------
PHP Version 4.3.10
register_global=on

$line="./test.txt";

for($i=0;$i<sizeof($line);$i++)
{
list($title,$comment)=explode("<>",$line[$i]);
if($cid == $i )
{
echo $title . "<hr>".$comment . "<br>\n";
}
}

A 回答 (7件)

まず、最初の質問にあるスクリプトをこちらでテストしましたが、正常に動きました。



test1<hr>テストデータ1
<br>

というコードが出力されてます。

で、

>おっしゃるとおりデバッグメッセージ自体表示されません。
となるとスクリプトの問題じゃないような気がします。

cid=0の時、ブラウザの表示はどうなるんですか?全くの白紙ですか?

HTTPのログを見て下さい。何か記録は残っていますか?エラーなどは残っていませんか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
cid=0の時ブラウザ表示は
test1 
test2


リンクがついています(test.php?cid=0 test.php?cid=1 のように)
と、なります。
つまり、アンカーを押した画面そのままです。

私も単体で動かしてみたところ作動いたしました。
実際このスクリプトは関数化して動かそうとしていましたので、今回の問題点は他にあるようです、再度スクリプトすべてを見直してみます。

皆様、ご教授ありがとうございました。
また、よろしくお願いいたします。

お礼日時:2005/06/23 06:03

------ index.php (ここから)--------------


<?php
error_reporting( E_ALL );
$line = file("./test.txt");
$cid = intval( $cid );
echo "cid = ";
var_dump( $cid );
echo "<br>";
echo "lines = ";
var_dump( $line );
echo "line = ";
var_dump( $line[$cid] );
echo "<br>";
list($title,$comment)=explode("<>",$line[$cid]);
echo "title=";
var_dump( $title );
echo "<br>";
echo "comment=";
var_dump( $comment );
?> 
------ index.php (ここまで)--------------

というスクリプトに
cid=0 の引数をつけてアクセスするとどのように表示されますか?

> $cidが0のときにはスクリプトによるチェックすら行われずにスルー
「スクリプトによるチェック」とはどの部分の処理ですか?

この回答への補足

補足です。
データの中身は
test1<>テストデータ1
test1<>テストデータ2




のようになっております。

補足日時:2005/06/23 03:30
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご提示されましたスクリプトをためさせていただきました。
--------
cid=0 の引数の場合は
test1
test2
test3
test4
test5
test6
test7
test8
--------
このようになりました。

スクリプトによるチェックというのは誤解を招く発言でした申し訳ありません。
どう言っていいのかわからないのですがcid=0の時には
まったく反応がないので、cid=0自体がスクリプトに引き渡されているのか疑問です。ということです。

お礼日時:2005/06/23 03:28

うーん、謎ですね。

でも謎な時ほど一つ一つ確認していくしか方法はないですから、とにかく疑わしい所をvar_dumpして値、型を確かめていくしか無いと思います。

$cid=0でリクエストした時、
var_dump($line[0]);
var_dump($line[$cid]);
の値はどうなってますか?

それに加えて
var_dump(explode("<>",$line[0]));
var_dump(explode("<>",$line[$cid]));
これらの値も気になりますね。

GETで入力された$cidは恐らく文字列型になってると思うん
ですが、そのせいで$line[0]ではなく$line["0"]になってる
のかなぁなんて思いました。

$cid=0の時、スクリプトでチェックされないという事は、このデバッグメッセージ自体も表示されないって事ですか?
    • good
    • 0
この回答へのお礼

すべてにおいてリクエストを試してみましたが。
cid=0 の場合URLからのリクエストに一切反応いたしませんでした。

おっしゃるとおりデバッグメッセージ自体ひょ字されません。

お礼日時:2005/06/23 03:34

$line = file("./test.txt");



したあとに、

var_dump( $cid );
var_dump( $line );

してみて、 $cid に 0、 $line[0] に期待する文字列が入っているか確認してみてはどうでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

var_dump( $cid );
var_dump( $line );

に関しまして確認いたしましたが。
中身は正しく入っていました。

URLを押して何度か確認をしている際に思ったのですが。
$cidが0のときにはスクリプトによるチェックすら行われずにスルーされているように思えるのですが。
そのようなことはあるのでしょうか?

たびたび質問となりまして申し訳ありませんが、よろしくお願いいたします。

お礼日時:2005/06/23 02:29

N01です。

すみません、嘘付きました。
register_global=onって書いてあるじゃん。

$cidで指定された1行を取得、という事でいいのかな。であれば

$line = file("./test.txt");
list($title,$comment)=explode("<>",$line[$cid]);
echo $title . "<hr>".$comment . "<br>\n";

だけで動作しないですか?

で、0の時だけ取得できないという事ですが、冒頭に余計な改行が入ったりはしていないですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご指摘の
$line = file("./test.txt");
list($title,$comment)=explode("<>",$line[$cid]);
echo $title . "<hr>".$comment . "<br>\n";

だけで動作いたしました。余計なループをさせていたようです。

ただ、やはり0の時には取得いたしません。

余計な改行ですが、確認いたしましたが無いように思えます。

0をnullと判断しているかもしれないと、nullに関しましても取得するようにもしてみたのですが取得いたしません。

お礼日時:2005/06/23 00:59

> $line="./test.txt";



これって
$line = file("./test.txt");
とかじゃなくて?
    • good
    • 0

サンプルか何かをご覧になって組んだのでしょうか?



$cidのところを$_GET["cid"]と直してみて下さい。

参考URLのNo5で原因を説明しています。

参考URL:http://okweb.jp/kotaeru.php3?q=1462496
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報