【PHP】下らねぇ質問はここに書き込みやがれ 22
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/06/08(木) 05:09:28ID:5gGJKVO4ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0712711
2006/06/20(火) 22:32:37ID:???0714nobodyさん
2006/06/20(火) 22:37:19ID:???0717nobodyさん
2006/06/20(火) 23:29:36ID:???0718676
2006/06/20(火) 23:31:39ID:???678さんが「できる」と回答していますが、どうやってやるんでしょうか?
自分ではどの関数を使ってどうやってやればいいかの
ソースの組立の予測が付きません・・。
ヒントか何か教えていただければと思います。
0719nobodyさん
2006/06/20(火) 23:32:48ID:???ページA→ページBと移動する際に
パスを引き継ぎたいのですが
getではパスがばれるので×
postだとアンカーで引き継げない
となるとsessionidがベストなのでしょうか?
0720nobodyさん
2006/06/20(火) 23:34:25ID:Vcobe6Xyヒント:暗号化
0723nobodyさん
2006/06/20(火) 23:52:15ID:???http://hogehoge.com/index.php でアクセスした時にはクッキーに保存されるのですが
http://hogehoge.com/ でアクセスするとセッションファイルは作成されるもののクッキーが発行されません。
なぜか原因が分かる方いますか?
ちなみに、session.cookie_pathは変更していなくて、/のままになっています。
0724723
2006/06/21(水) 00:02:45ID:???Xreaのサブドメインの方でテストすると出来ないっぽいです。
session.cookie_domainを設定して試してみましたが、やはいダメでした。
という事はサーバーの設定の関係でしょうか。
0725nobodyさん
2006/06/21(水) 00:06:05ID:???全てやりつくして自分ではどうにもならないって状況になってから質問しなおせ。
で、次質問するときは、phpinfoで出るセッション関連設定晒せ。
あと、例で用いるドメインはexample.comな。
0726nobodyさん
2006/06/21(水) 00:07:47ID:???おちつけ
なにが保存されないんだ
セッションとクッキーの違いは分かってるか?
クッキーの確認方法はなんだ?
ブラウザを閉じたら内容がクリアされるようなクッキーはファイルには保存されないのを知ってるな?
0727nobodyさん
2006/06/21(水) 00:09:38ID:???これ以上はもう無理そうです。
>>726
デフォルトで言うところのPHPSESSIDクッキーが保存されません。
クッキーはブラウザのクッキー表示機能で確認してます。
0728nobodyさん
2006/06/21(水) 00:12:15ID:???session.bug_compat_42OffOff
session.bug_compat_warnOnOn
session.gc_probability11
session.hash_bits_per_character55
session.gc_divisor10001000
これ以外はデフォルトのようです。
0730nobodyさん
2006/06/21(水) 00:15:05ID:???0731729
2006/06/21(水) 00:17:24ID:???0732nobodyさん
2006/06/21(水) 00:27:46ID:???数値を全角から半角に直したいのですが
$com1 = i18n_ja_jp_hantozen($_POST["com1".$i],"n");
と記述したところ、
Fatal error: Call to undefined function: i18n_ja_jp_hantozen()
というエラーが返ってきました。
PHP4ではまだ対応されていないのでしょうか?
0733nobodyさん
2006/06/21(水) 00:33:10ID:???こりゃまた古い関数を引っ張り出してきたもんだねぇ。
ttp://www.php.net/manual/ja/aliases.php
0734nobodyさん
2006/06/21(水) 00:36:10ID:???変更されていたのですね^^;
mb_convert_kana()で試したところも同じエラーになりました。
「mb」を使うには何か設定が必要なのでしょうか?
0735nobodyさん
2006/06/21(水) 00:42:18ID:Ap/VWjSS以下のようなソースになるのですが、出力結果はArrayとなって
うまくできません。おかしい箇所を訂正・指摘していただけないでしょうか?
//送信ボタンが押された場合
if(isset($ok)){
//セッション『id』に値がある場合
if(isset($_SESSION["id"])){
array_push($_SESSION["id"],$id);
for($i=0;$i<count($_SESSION["id"]);$i++){
print "$_SESSION[id][$i]"."<br>";
}
//セッション『id』に値が無い場合
}else{
$_SESSION["id"] = array($id);
print $_SESSION["id"];
}
}
0738nobodyさん
2006/06/21(水) 00:48:17ID:???最初にelseの方にいくよな?
そしてarrayを代入してそれをprintしてればarrayが表示されて当たり前だろ?
>>737
オマイが設定したと言っても本当に正しく設定してあるか分からんだろ?
phpinfo()を出したまい
0740735
2006/06/21(水) 00:59:26ID:???それでは最初のelseではprintをせずに2回目の送信を行ったところ
forで出力してもやっぱり、Arrayっと表示されます。
※$idが最初は10次は20入れた場合
10
Array
0741nobodyさん
2006/06/21(水) 01:01:42ID:???phpinfoの
Configuration File (php.ini) Path
のphp.iniにあるextension=php_mbstring.dllの前に;が無いか
phpinfoの
extension_dirのディレクトリにphp_mbstring.dllファイルがあるか確認
0743nobodyさん
2006/06/21(水) 01:04:37ID:???extension=php_mbstring.dll
;はありません。
extension_dirは ./ ./ となっています
0744nobodyさん
2006/06/21(水) 01:09:37ID:???php_mbstring.dllのありかを探してそのディレクトリを
php.iniのextension_dirに指定してみれ
php.iniはphpinfoで表示された場所のファイルを修正
0745735
2006/06/21(水) 01:09:38ID:???7行目のprintの箇所ですよね?
以下のようにしたのですが、状況は変わらずです・・。
print $_SESSION['id'][$i]."<br>";
0747nobodyさん
2006/06/21(水) 01:15:53ID:A9H5bJA/ありがとうございます。
mb_convert_kana($_POST["com".$i],"n");
としたら、出力が「?P?P?P」になっちゃったよ;;
0748735
2006/06/21(水) 01:16:01ID:???最初に10を、2回目に20をテキストボックスに入れて送信した結果です。
Array ( [id] => Array ( [0] => 10 [1] => Array ( [0] => 10 ) ) ) Array ( [id] => Array ( [0] => 10 [1] => Array ( [0] => 10 ) ) )
なんかかなり変な感じですね・・。しかも配列にArrayが入っているし・・。
全く原因が掴めません。。array_pushが悪い訳じゃないだろうし。。
0750nobodyさん
2006/06/21(水) 01:18:51ID:???if(isset($ok)){
//セッション『id』に値がある場合
if(isset($_SESSION["id"])){
array_push($_SESSION["id"],$id);// (3)
for($i=0;$i<count($_SESSION["id"]);$i++){
print "$_SESSION["id"][$i]"."<br>"; // (4)
}
//セッション『id』に値が無い場合
}else{
$_SESSION["id"] = array($id); // (1)
print $_SESSION["id"]; // (2)
}
}
最初はelse以降に逝くが、$idが10なら
(1)の$_SESSION["id"]はarray(10)になる。
当然(2)はArrayと表示される。
次はセッションが既にあるから上段に行って、
$idが20なら(3)で$_SESSION["id"]はarray(10, 20)になる。
当然(4)では
10
20
と表示されるはずだ、と。
この20がArrayとなっているという事は(3)の$idがArrayになってるって事だから、
この処理以前の$idの取り方に問題があるような気がする。
0753735
2006/06/21(水) 01:23:00ID:???どうも解説ありがとうございます。私もどこがおかしいのか全くわからなくて・・。
ちなみに、$idを受け取る送信ページは以下のソースです。普通のHTMLです。
<form action="session.php" method="post">
<input type="text" name="id">
<br>
<input type="submit" name="ok" value="送信">
</form>
0755nobodyさん
2006/06/21(水) 01:30:56ID:???$id = $_POST["id"];
とすべきところを
$id = array($_POST["id"]);
とでもしている予感。
0756735
2006/06/21(水) 01:33:54ID:???■1回目の10を入れた場合
Array ( [id] => 10 [ok] => 送信 )
10
■2回目の20を入れた場合
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 ) )
0757nobodyさん
2006/06/21(水) 01:34:13ID:???現在実行しているスクリプト名
(http://localhost/test.php)だったら「test.php」
を出力したいのですが、どうすればよいのでしょうか?
0758757
2006/06/21(水) 01:39:01ID:???0760nobodyさん
2006/06/21(水) 01:40:07ID:???0763nobodyさん
2006/06/21(水) 02:01:38ID:B7JejGVK展開してるのね。了解。
■2回目の20を入れた場合
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 ) )
↑ここで最後の$_SESSION[1]が配列になっているし、中身が10のまま
なんか、セッションがあろうがなかろうが関係ないんじゃないか?
$_SESSION["id"][] = $id;
for($i=0;$i<count($_SESSION["id"]);$i++){
print $_SESSION["id"][$i]."<br>";
}
0764735
2006/06/21(水) 02:24:29ID:???ご説明ありがとうございます。
//セッション『id』がある場合
〜
} //最後から二つ目の}
をコメントアウトしました。そして763さんのコードを追加してみたのですが、
2回目の20を入れた処理で
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 [1] => Array *RECURSION* ) )
このようになります。あまり変わりないような気がします・・。
0765735
2006/06/21(水) 02:27:43ID:???PHPが5.1.4なのですが、あまり関係ないですよね・・。
session_start();もしているからセッションが有効になっているはずだし・・。
0766nobodyさん
2006/06/21(水) 02:28:34ID:???いや、735をいっそのことこうしたらどうかと。
//送信ボタンが押された場合
if(isset($ok)){
$_SESSION["id"][] = $id;
for($i=0;$i<count($_SESSION["id"]);$i++){
print $_SESSION["id"][$i]."<br>";
}
}
$_SESSION["id"]があるかどうかで
何か処理が変わるの?735だと単純に$idを追加すればいいだけのような気がするんだけど。
0767735
2006/06/21(水) 02:49:46ID:???変わり無しです・・。766さんのコードに変更したのですが、
10
Array
というエラーが出ます。環境による問題ですかね。。
0768nobodyさん
2006/06/21(水) 02:53:28ID:???よっしゃ。とりあえずそのファイルどっかに上げてみてみないか?
もしくはそんなに長くないコードならここに貼り付けるか
0769735
2006/06/21(水) 02:55:19ID:???<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>セッションテスト</title>
</head>
<body>
<form action="session.php" method="post">
<input type="text" name="id">
<br>
<input type="submit" name="ok" value="送信">
</form>
</body>
</html>
0770735
2006/06/21(水) 02:57:18ID:???<?php
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>セッション受け取り</title>
</head>
<body>
<?php
//送信ボタンが押された場合
if(isset($ok)){
$_SESSION["id"][] = $id;
for($i=0;$i<count($_SESSION["id"]);$i++){
print $_SESSION["id"][$i]."<br>";
}
}
?>
<input type="button" onClick="history.back()" value="前に戻る">
</body>
</html>
何度もお手数おかけします。。よろしくお願いします。
0771nobodyさん
2006/06/21(水) 03:10:26ID:???WInXP,Apache1.3,php5.0.3
結果
10
20
2回目の$_SESSIONの中身
Array
(
[id] => Array
(
[0] => 10
[1] => 20
)
)
ただし、register_globals Offのため
$id=$_POST["id"];
$ok=$_POST["ok"];
を追加した
うまくいってるけど?
0772nobodyさん
2006/06/21(水) 03:11:30ID:???$_SESSION["id"][] = $id;
~~~~~~~~~~~
こういう書き方ってありだっけ?
0773nobodyさん
2006/06/21(水) 03:14:06ID:???[]のことなら、全然あり。最後に追加される
http://jp.php.net/manual/ja/language.types.array.php
0774735
2006/06/21(水) 03:23:08ID:???テストしていただいてありがとうございます。
うちはApache2.0.52とPHP5.1.4ですが、やはりなりません。
Linux+PHP4系のレンタルサーバにファイルをアップしても
同様に、
10
Array
という表示です。どうなっているのか・・。
0775735
2006/06/21(水) 03:26:12ID:???$_SESSION["id"][] = $id;
↓
$_SESSION["id"][] = $_POST["id"];
とすることで、771さんと同じ結果になりました!
ちょっと理由がわからないのですが、変数を$_POSTにしないといけないみたいですね。。
長い間、お付き合いいただき、ありがとうございます。
また勉強します。
0776nobodyさん
2006/06/21(水) 03:27:47ID:???恐らく$idがおかしそうなので、最初に
<?php
session_start();
$id=$_POST["id"];
$ok=$_POST["ok"];
?>
ってやてみたらどうかな
0778nobodyさん
2006/06/21(水) 03:45:25ID:???もう見て無いかもしれないが、よく考えたら
register_globalsがOnなため、$_POSTと$_SESSIONの両方の["id"]が
$idに展開されて変になっていたのではないかと
$_SESSION["id"]を$_SESSION["xid"]にするとうまくいくべ
0779nobodyさん
2006/06/21(水) 05:43:39ID:r7tfflxK0780nobodyさん
2006/06/21(水) 06:20:11ID:???0781nobodyさん
2006/06/21(水) 06:24:08ID:???書くだけw
0782nobodyさん
2006/06/21(水) 06:27:43ID:r7tfflxK何故でしょう? こんな感じです。
if (is_writable($file)) {
if (!$handle = fopen($file, 'w')) {
print "Cannot open file ($file)";
exit;
}
for($i; $i <= $count-1; $i++){
$files_rows = preg_split("/,/", $files[$i]);
$serial = $files_rows[0];
if($files_rows[16] == $_POST['original']){
$mod_file .= $add_data."\n";
}
else{
$mod_file .= $files[$i]."\n";
}
}
flock($handle,LOCK_EX);
if (!fwrite($handle, $mod_file)) {
print "Cannot write to file ($file)";
exit;
}
fclose($handle);
}
0783nobodyさん
2006/06/21(水) 06:45:56ID:r7tfflxK0784nobodyさん
2006/06/21(水) 07:00:19ID:???for($i; $i <= $count-1; $i++){
ぱっと見
この2つの行になんだか違和感。
普通はこうかな
if (!($handle = fopen($file, 'w'))) {
for($i=0; $i < $count; $i++){
0785nobodyさん
2006/06/21(水) 07:01:47ID:???0786nobodyさん
2006/06/21(水) 07:03:34ID:???段階を追って確認してみれば?
まず
if (is_writable($file)) {
はちゃんと通過できてるの?
あとぶっちゃけ
$handle = fopen($file, 'w');
の1行だけ実行したら中身空っぽの0バイトファイルになるはずだけどどうよ?
これで0バイトになったら上書き自体はできてるってことだ。
こういうのはシンプルなコードで順次確認が基本だよ。
0788nobodyさん
2006/06/21(水) 07:47:46ID:???0790nobodyさん
2006/06/21(水) 08:02:39ID:???0791nobodyさん
2006/06/21(水) 08:12:35ID:???0793nobodyさん
2006/06/21(水) 08:13:59ID:???0794nobodyさん
2006/06/21(水) 08:32:08ID:???noticeエラーが頻発しちゃうんだけど、これって無視しても特に問題ないよね?
notice出ないように修正することも出来なくはないけど、
すごく無駄なコードが増えちゃうしスパゲティ化するから、
かえって修正しないほうがいい気がしてる。
0795nobodyさん
2006/06/21(水) 08:36:47ID:???全部潰せばより堅牢にはなると思うが、正直なとこ過剰としか思えん。
ちゃんとデバッグできない低脳な人は片っ端から潰した方がいいかもしれんけどな。
0796nobodyさん
2006/06/21(水) 08:39:03ID:???> すごく無駄なコードが増えちゃうしスパゲティ化する
ってのが気になるな。
そんなにあちこちで定義されていないキーを使うってのは、スクリプトの構造自体に問題があるんじゃないかなぁと。
0797nobodyさん
2006/06/21(水) 09:04:22ID:???$value = @$cache[$key];
マニュアル嫁ボケ
http://www.php.net/manual/ja/language.operators.errorcontrol.php
0798nobodyさん
2006/06/21(水) 10:14:05ID:???>>796 あちこち・・・ってほどでもないんだけど、ある一つの処理に関する配列において、
要素の数が場合によって0〜9個まで、まちまちになるのよ。で、それをHTMLテンプレに埋め込んだ変数(配列)に
展開するときに、noticeが出ちゃう。
>>797 エラーの抑制方法はもちろん知ってるわけで・・・ 質問の意図が分からなかったんかな?
0800nobodyさん
2006/06/21(水) 11:06:35ID:???>>796も書いてるが、存在しないキーでエラーが出たり、
それを修正するためにスパゲティコードになる時点で根本的に設計がおかしい
まあ、好きにすれば?としか答えようがないな
0801nobodyさん
2006/06/21(水) 11:08:28ID:???0802nobodyさん
2006/06/21(水) 11:20:48ID:???0803nobodyさん
2006/06/21(水) 11:32:54ID:???0804nobodyさん
2006/06/21(水) 11:44:35ID:NAuR8t7O以下のようにしても動きませんでした。一行ずつ関数書くのは省きたいです。
PRINT"
あかさたな
テスト
りんご
";
0806nobodyさん
2006/06/21(水) 12:00:42ID:???ttp://jp.php.net/manual/ja/function.echo.php
マヌアルは読んだか?
0807nobodyさん
2006/06/21(水) 12:36:15ID:???ttp://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
マヌアルは読んだか?
0808nobodyさん
2006/06/21(水) 12:48:19ID:???りんご
だいすき
ぱいなっぷるも
すき
HTML;
0809nobodyさん
2006/06/21(水) 13:00:52ID:???0810nobodyさん
2006/06/21(水) 13:16:50ID:???0811nobodyさん
2006/06/21(水) 13:17:36ID:???ttp://coronado.s8.xrea.com/php/ref.mail.php
マニュアルをどうぞ。
■ このスレッドは過去ログ倉庫に格納されています