トップページphp
1001コメント319KB

【PHP】下らねぇ質問はここに書き込みやがれ 44

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2007/04/12(木) 16:54:47ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0855nobodyさん2007/04/25(水) 14:17:54ID:???
>>854
静的なHTMLページを表示すればいいじゃん
てかコードで説明するな。口で説明しろ。
0856nobodyさん2007/04/25(水) 14:21:27ID:???
>>855
??
0857nobodyさん2007/04/25(水) 14:27:36ID:???
>>856
!?!?
0858nobodyさん2007/04/25(水) 14:39:28ID:???
>>855
??
>>856
!!
>>857
?!?!
0859nobodyさん2007/04/25(水) 14:50:14ID:???
die('ぬるぽ');
0860nobodyさん2007/04/25(水) 15:21:00ID:???
>>858
??
0861nobodyさん2007/04/25(水) 15:35:07ID:dvPhqtzS
>>855 ^^ ><
0862nobodyさん2007/04/25(水) 15:54:34ID:???
http://plog.pya.jp/program/php/lesson07/sample01.html
このURLのスクリプトなら動くんだけど、スマートにしようと書き換えてみた。
すると、書き込んでも空の行が増えていくだけ。
なんですか?
08638622007/04/25(水) 15:55:24ID:???
form.php

<html>
<head>
<title>一行掲示板</title>
</head>
<body>
<h1>一行掲示板</h1>
書き込む内容を入力してください。
<hr>
<form name="form" action="./sample01.php" method="POST">
<input name=""body" Type="text" size"40">
<input type="submit" value="書込">
<hr>
</form>
<?php
$data = file("./data.txt");
for ($i=0; $i<count($data); $i++) {
print "記事NO.{$i}:{$data[$i]}<br>\n<hr>";
}
?>
</body>
</html>
08648622007/04/25(水) 15:56:44ID:???
<html>
<head>
<title>Sample01</title>
</head>
<body>
sample.php

<?php
$body = $_REQUEST["body"]."\n";
$fp = fopen("./data.txt","a");
fwrite($fp,$body);
fclose($fp);
?>
書き込み完了<br>
<a href="./data.txt" target="_blank">中身を見る</a><br>
<a href="./form.php">戻る</a>
</bady>
</html>
0865nobodyさん2007/04/25(水) 15:56:58ID:???
意味不明
日本語勉強してから来いカス
08668622007/04/25(水) 15:58:15ID:???
× なんですか
○ なんでですか
0867nobodyさん2007/04/25(水) 16:01:36ID:???
>>864にコピーミスあり
o...rz
訂正します
――――――――――――――――――――
Sample01.php

<html>
<head>
<title>Sample01</title>
</head>
<body>
<?php
$body = $_REQUEST["body"]."\n";
$fp = fopen("./data.txt","a");
fwrite($fp,$body);
fclose($fp);
?>
書き込み完了<br>
<a href="./data.txt" target="_blank">中身を見る</a><br>
<a href="./form.php">戻る</a>
</bady>
</html>
0868nobodyさん2007/04/25(水) 16:02:10ID:???
自分で組んだ方が早いとおもうお
0869nobodyさん2007/04/25(水) 16:03:30ID:???
原因が知りたい
08708622007/04/25(水) 16:21:14ID:???
間違いがあってわかりづらいと思うので、最初から書き直します。
08718702007/04/25(水) 16:23:37ID:???
http://plog.pya.jp/program/php/lesson07/sample01.html

このURL内のコーディングなら動くんだけど、スマートにしようと書き換えてみた。
すると、書き込んでも空の行が増えていくだけ。
なぜでしょうか?

以下のような具合
――――――――――――――――

一行掲示板
書き込む内容を入力してください。
----------------------------------------
|入力フォーム| |書込|
----------------------------------------

記事NO.0:

----------------------------------------
記事NO.1:

----------------------------------------
記事NO.2:

----------------------------------------
0872nobodyさん2007/04/25(水) 16:24:19ID:???
いや、もう書かないで
08738702007/04/25(水) 16:24:47ID:???
まずはサイト例(ちゃんと動く)form.php

<html>
<head>
<title>一行掲示板</title>
</head>
<body>
<h1>一行掲示板</h1>
書き込む内容を入力してください。<hr>
<form name="form" action="./sample01.php" method="POST">
<input name="body" type="text" size="40">
<input type="submit" value="書込"><hr>
</form>
<?php
$data = file("./data.txt");
for($i=0; $i<sizeof($data); $i++){
print "記事NO.${i}:${data[$i]}<br>\n<hr>";
}
?>
</body>
</html>
08748702007/04/25(水) 16:25:35ID:???
サイト例 sample.php

<?php
$body = $_REQUEST["body"];
$body = $body."\n";
?><html>
<head>
<title>Sample01</title>
</head>
<body>
<?php
$fp = fopen("./data.txt","a");
fputs($fp,$body);
fclose($fp);
echo "書き込み完了<br>",
"<a href=\"./form.php\">戻る</a>";
?>
</body>
</html>
0875nobodyさん2007/04/25(水) 16:26:27ID:???
死ね
08768702007/04/25(水) 16:26:47ID:???
書き換え版 form.php

<html>
<head>
<title>一行掲示板</title>
</head>
<body>
<h1>一行掲示板</h1>
書き込む内容を入力してください。
<hr>
<form name="form" action="./sample01.php" method="POST">
<input name=""body" Type="text" size"40">
<input type="submit" value="書込">
<hr>
</form>
<?php
$data = file("./data.txt");
for ($i=0; $i<count($data); $i++) {
print "記事NO.{$i}:{$data[$i]}<br>\n<hr>";
}
?>
</body>
</html>
08778702007/04/25(水) 16:27:30ID:???
書き換え版 sample.php

<html>
<head>
<title>Sample01</title>
</head>
<body>
<?php
$body = $_REQUEST["body"]."\n";
$fp = fopen("./data.txt","a");
fwrite($fp,$body);
fclose($fp);
?>
書き込み完了<br>
<a href="./data.txt" target="_blank">中身を見る</a><br>
<a href="./form.php">戻る</a>
</bady>
</html>
0878nobodyさん2007/04/25(水) 16:29:51ID:???
そんなのも一人でどうにか出来ない様な奴が
スマートとかほざくなよw
段階踏んでから言えカスが
0879nobodyさん2007/04/25(水) 16:33:01ID:???
>>870酷すぎ
リアルで死ね
0880nobodyさん2007/04/25(水) 16:34:04ID:???
>>878
了解
0881nobodyさん2007/04/25(水) 16:43:37ID:j8qAcKjI
PHP4でsimplexmlが使えないのですが
代わりになる関数はありませんか?
0882nobodyさん2007/04/25(水) 16:45:41ID:???
PHP5を使えばいいんじゃね?
0883nobodyさん2007/04/25(水) 16:47:18ID:j8qAcKjI
さくら鯖が5対応してないんで
0884nobodyさん2007/04/25(水) 16:54:22ID:???
>>883
え、さくらってそうなんだ。
古い鯖利用だからか?

wing2.jpならいけるよ。
初年2000円で独自ドメイン運用可
翌年以降1500円。
0885nobodyさん2007/04/25(水) 16:55:40ID:j8qAcKjI
co.jpてどの鯖でも使えたっけ?
0886nobodyさん2007/04/25(水) 17:04:25ID:???
>>885
DNSサーバー側で飛ばす先のIPアドレス設定さえすれば関係あんめな。
ドメインが取れるか自体は別問題
0887nobodyさん2007/04/25(水) 17:20:37ID:???
>>884
なにこれ安すぎ
信用はできないけど面白いな
0888nobodyさん2007/04/25(水) 17:26:19ID:???
wing2
http://pc11.2ch.net/test/read.cgi/hosting/1154825445/
好きに評価したらいい
俺は絶対に遠慮する鯖です
0889nobodyさん2007/04/25(水) 17:28:40ID:???
>>888
ゲェ・・・ありがとう。
0890nobodyさん2007/04/25(水) 18:08:21ID:bcYDhRpq
PHPでajax使うのはどのライブラリがベストですか?
0891nobodyさん2007/04/25(水) 18:35:42ID:???
>>883
5を独自コンパイルすればいいじゃん。簡単だよ。
どうせcgi版なんだから。
0892nobodyさん2007/04/25(水) 18:50:52ID:???
>>887
スタッフ募集ここんとこずっとかけてないか?
激安サーバーで給料安いから、最近言われるITの3K化の代表格みたいなんじゃないか?

ただ、あなたも知らなかったように、まだマイナーだから負荷は軽いんじゃない?

メールもやってるが、メジャーサイトへのメアド登録でフリーメアドとして弾かれなかった。
それだけマイナー。
0893nobodyさん2007/04/25(水) 19:48:06ID:???
隠れてないででてこいや
かもんムムキチい
0894nobodyさん2007/04/25(水) 19:49:51ID:???
>>893
誤爆?
0895nobodyさん2007/04/25(水) 19:52:29ID:???
とぼけるな
ドメスレ荒らしのキチガイ
謝れや!
0896nobodyさん2007/04/25(水) 19:56:06ID:???
絶対に許さない
必ず見つけ出してやる
0897nobodyさん2007/04/25(水) 20:02:11ID:???
ムムキチ隠れるな
0898nobodyさん2007/04/25(水) 20:31:24ID:???
k
0899nobodyさん2007/04/25(水) 21:00:09ID:IXKwV2TH
質問させてください。
以下のようなPHPスクリプトを作りたいと思ってます。

@PHPで、あるシェルスクリプトを実行させる。
Aシェルスクリプトを実行すると、データテキストが作成される。
Bデータテキストの内容をPHPで取り込み、データの内容によって、
 OK / NG等の判定を行う。

この手順のAで作成されるデータテキストなのですが、
実際には作成されるまでに、20〜30秒ほど時間が掛かります。
直ぐにBを行うと、不完全な状態のデータテキストを読んでしまうのですが、
PHPで『ファイルが生成されるまで待つ』といった命令や関数等はありますでしょうか。
ご助言よろしくお願いいたします。
0900nobodyさん2007/04/25(水) 21:01:11ID:???
SLEEP 30
0901nobodyさん2007/04/25(水) 21:30:13ID:???
>>900
サンクスです!
そんな便利な命令があるとは知らなかったです
0902nobodyさん2007/04/25(水) 21:34:24ID:Hk5iwc7F
>>849-850
レスありがとう〜
不眠続きで今起床しました。

これからやってみます!
0903nobodyさん2007/04/25(水) 21:55:58ID:???
>>899
Aが完了するまでシェルスクリプト自身がブロックするように、
(シェルスクリプト内でバックグラウンドプロセスを立ち上げないように、)
シェルスクリプトを工夫するほうが簡単確実。
無理ならPHPでsleepとfile_existsをループ。
0904nobodyさん2007/04/25(水) 22:15:02ID:ooT1ogQP
質問スマソ

PEARのXML_Tree使って
拡張子がphpのXMLファイル作ったんだが

そこからどうやって読み込めばいいのかわからんorz

$xml = new DOMDocument;
$xml->load('collection.php');

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);
0905nobodyさん2007/04/25(水) 22:22:46ID:ooT1ogQP
何か日本語変な気がする・・・

つまりは拡張子phpのファイルをどうやってxmlに変換するかってことです。
0906nobodyさん2007/04/25(水) 23:31:08ID:ckD8GJA9
教えていただきたいのですが。
.htaccess
RewriteEngine on
RewriteRule ^/([0-9A-Za-z)]+)\.html$ /index.php?hoge=$1[L]

http://xxx.jp/index.php
<?php
print $_GET['hoge'];
?>

としてブラウザーへ http://xxx.jp/hello.html としても
404が戻ってきます。
どこを確認すればいいでしょうか?
0907nobodyさん2007/04/25(水) 23:42:59ID:0HmGKMgn
2つのファイルを同時に編集・削除するときその関係性も保証するためにトランザクションみたいな機能ってありませんか?
やっぱり最大限安全な順番を採るしかないんですか?
0908nobodyさん2007/04/25(水) 23:53:02ID:???
>>904
httpから書けばできると思います、強引で汚いですけど

>>906
confでモジュール読み込んでしてます?
あと[L]の前に半角スペース要りませんでしたっけ

またRewriteRule のfirst argは.htaccessのpathですが
second arg はベースが指定してない場合はdocument root からのpathです
0909nobodyさん2007/04/25(水) 23:56:03ID:???
> あと[L]の前に半角スペース要りませんでしたっけ
確認した所必要ないですね
0910nobodyさん2007/04/26(木) 00:06:50ID:???
>>907
http://jp.php.net/manual/ja/ref.sem.php
セマフォ

Windows環境も対応したいなら原始的にロックファイル作って。
0911nobodyさん2007/04/26(木) 00:16:17ID:???
>>906
404になるとすれば、多分
^/( ←ここ
^( ←こうだろうな
0912nobodyさん2007/04/26(木) 00:29:33ID:???
ccessって、俺が間違えたから皆使うのか!?
それとも、もともと皆がccessって使ってるのか!?
0913nobodyさん2007/04/26(木) 00:30:47ID:???
関数を忘れてしまったので質問させてください
文字列を、指定した文字で区切り、配列に分割する
関数の名前は何でしたでしょうか・・・
0914nobodyさん2007/04/26(木) 00:33:30ID:???
>>912
なんだか知らんが病院紹介しようか?
0915nobodyさん2007/04/26(木) 00:33:54ID:???
>>913
split
explode
09169062007/04/26(木) 00:47:15ID:b54Zcwq0
みなさんありがとうございます!
/ が余計だったようです・・・
詰まってて簡単な事も見逃していたようです。
表示されてわかったのですが、[L]の前には半角スペースは必要でした。
ない場合は、表示された「hello[L]になるようです。

ほんとうに助かりました!
0917nobodyさん2007/04/26(木) 01:19:01ID:???
>>916
まずはエラーログチェックの癖をつける。
09188482007/04/26(木) 01:54:55ID:fEqE9au7
>>850
すみません。
考えてみたのですが、まったく理解できません・・・
もう少し噛み砕いて教えていただけないでしょうか?

0001の部分は0001.phpとしてファイルを作ってあります。
例の0002は現在作成していないファイルということになります。

index.php?hoge=0001 はすでに0001.phpとしてファイルがあるのでそのまま表示
index.php?hoge=0002や中途半端なアドレスの
index.php?hoge=や
index.php
は403 404を表示したいのです。

何度もすみませんがよろしくお願いします。
0919nobodyさん2007/04/26(木) 02:00:58ID:g6GrkNsN
if($number = "0001"){
include("0001.php");
}else{
header("Location:http://qawsedrftgyhujikol/";);
}
0920nobodyさん2007/04/26(木) 02:03:35ID:???
>>918
すごく噛み砕いてソースの具体例まで出してくれたのが850だと思うが。
理解できないならどこが理解できないか言ってくれないとこっちも全く理解できないんですよ。
0921nobodyさん2007/04/26(木) 02:04:59ID:???
>>918はelseの存在を知っているのか?
0922nobodyさん2007/04/26(木) 02:13:35ID:???
>>915
ありがとうございます
09238482007/04/26(木) 02:25:03ID:fEqE9au7
みなさんレスありがとうございます。
やってみようとしたところ、鯖の緊急メンテに入ってしまいました。
数時間のメンテらしいのでメンテ明けにやってみます。

0924nobodyさん2007/04/26(木) 02:48:03ID:???
だからレン鯖で開発するなと何度言えば
09258482007/04/26(木) 04:34:29ID:fEqE9au7
自宅でやってみました。
現在index.php には
<?php
$GET_PAGE=$_GET['hoge'];
if(@fopen($GET_PAGE.".php", "r")){
include($GET_PAGE.".php");
}else{
header("HTTP/1.0 404 Not Found", true, 404);
?>
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<p>404 Not Found</p>
</body>
</html>
<?php
exit;
}
としたところ、
index.php?hoge=0001では正常に
index.php?hoge=0002やindex.php?ho などでは
そのアドレスのままページには「404 Not Found」と書かれたページが表示されるようになりました。

ここでさらに踏み込んで、現在自前でエラードキュメントをphpで作っておいてあるのですが、
index.php?hoge=0002やindex.php?ho の場合にそのエラードキュメントで表示するようには出来ないものでしょうか?
上記htmlの部分へ同じようなhtmlを書けばいいのかもしれませんが、せっかくなのでphpで表示したいのですが。

また上の書き方で何か問題はないでしょうか?fopenしてるので、閉じないといけないかもしれませんしもっとスマートは方法とかありそうですが。
0926nobodyさん2007/04/26(木) 04:51:20ID:???
ここはお前のサポセンじゃないんだよ
まずは自分で調べるなり考えろ
あとレン鯖で実験するな

> if(@fopen($GET_PAGE.".php", "r")){
このままでも閉じる必要は無い
is_file使えば見やすい

> エラードキュメントで表示するようには出来ないものでしょうか
.htaccess 404
09278482007/04/26(木) 05:09:41ID:fEqE9au7
>>926
レスありがとう。
fopenで閉じなくても問題ないと言うことですのでそのままにしておきます。
またis_fileの方がファイルがそうではないかと言う事みたいなので、is_fileに変更しました。

現在の.htaccessでは、
ErrorDocument 401 /library/error/error.php
ErrorDocument 403 /library/error/error.php
ErrorDocument 404 /library/error/error.php
ErrorDocument 500 /library/error/error.php
としていますが、それでも、
index.php?hoge=0002やindex.php?hogeなのでは、
うまくerror.phpが動作してないようです。
0928nobodyさん2007/04/26(木) 06:41:01ID:???
>>927
}else{
header("HTTP/1.0 404 Not Found", true, 404);
require "/library/error/error.php";
exit;
}

}else{
Location("http://自分のサーバの存在しないURL");
exit;
}
09298482007/04/26(木) 07:28:15ID:fEqE9au7
>>928
何度も申し訳ありません。
}else{
header("HTTP/1.0 404 Not Found", true, 404);
require "/library/error/error.php";
exit;
}
を試したところ、200が自前error.phpから戻ってきました。また
Location("http://自分のサーバの存在しないURL");
だと問題なくエラー表示されるのですが、アドレスが変わってしまうで自分がやりたいこととは、
少し外れてしまいます。

あまりスレを消費するのもあれなので、この辺で失礼します。
かなり勉強になりました。
レスを頂いた方ありがとうございました!
0930nobodyさん2007/04/26(木) 10:44:47ID:???
もうgdgd
0931nobodyさん2007/04/26(木) 12:15:12ID:MU7hy9Ys
phpを勉強しています。
参考にしている本のサンプルコードに

while($false !== ($entry = $d->$read())) {
(中略)


というコードが出てきました。
これはどういう意味でしょうか?
特に$d->$read()この「->」の意味が分かりません。
どなたかお分かりになるかた、教えてください。
0932nobodyさん2007/04/26(木) 12:20:49ID:???
           ∧∧
           /⌒ヽ) now loading ...
          i三 ∪      
         〜三 |       
          (/~∪
        三三
      三三
    三三
  三三
三三

0933nobodyさん2007/04/26(木) 12:24:05ID:???
>>931
点プレに入ってたかもshirenが
アロー演算子でググれ
0934nobodyさん2007/04/26(木) 12:38:43ID:???
>>931
そういう時は「php 演算子」でぐぐろう
0935nobodyさん2007/04/26(木) 12:48:32ID:???
どうでもいい雑談だけど
==より===で比較するほうが場合によっては処理が早くなったりするのかね
0936nobodyさん2007/04/26(木) 12:52:50ID:???
かおそー
0937nobodyさん2007/04/26(木) 12:52:58ID:???
>>935
場合によってはというより普通に速い。
気にするほどでもないけど。
0938nobodyさん2007/04/26(木) 12:53:39ID:???
936は誤爆
09399312007/04/26(木) 13:00:30ID:MU7hy9Ys
>933,934
レスありがとうございます。
クラス内で使用することがあることは知っていたのですが、
そのサンプルコードの中には1度もクラスが書かれていません。
ぐぐったところグローバル変数にも関係するようなのですが、
筋としてはそちらっぽいです。
もう少し調べます。ありがとうございます。
0940nobodyさん2007/04/26(木) 13:04:16ID:???
>>939
例えばこんなの
http://jp.php.net/manual/ja/class.dir.php
0941nobodyさん2007/04/26(木) 13:05:36ID:???
おぶじぇくと
0942nobodyさん2007/04/26(木) 13:13:53ID:???
雑談2
===による厳密な比較ってPHPだけ?
他の言語では==で厳密に比較されるが一般的なのかしら
0943nobodyさん2007/04/26(木) 13:30:51ID:???
つ型
0944nobodyさん2007/04/26(木) 13:31:30ID:???
比較されないと思う

0945nobodyさん2007/04/26(木) 13:39:50ID:???
以前booleanとNumberで===のベンチした時は10%程度速くなった記憶
0946nobodyさん2007/04/26(木) 13:42:22ID:???
10%とか処理速度が正確に分かるのか?
0947nobodyさん2007/04/26(木) 13:57:49ID:???
正確かと言われれば正確じゃない
xdebugかmicrotime()使かって10秒程度のループを数回やった記憶
0948nobodyさん2007/04/26(木) 14:02:46ID:???
雑談に乗じて超初心者レベルな質問が飛び交うのがこのスレの醍醐味ですね。
0949nobodyさん2007/04/26(木) 14:08:33ID:???
お前みたいに無知だけど口を出さずにはいられない輩もな
0950nobodyさん2007/04/26(木) 14:20:34ID:???
いやいや私は真面目に回答してますよ。
あまりにレベルの低い回答者のせいで質問者が不憫に思えた時なんか。
あ、雑談という体じゃなくてちゃんとした質問時の話ですよ。
0951nobodyさん2007/04/26(木) 14:22:39ID:???
うざぃ
0952nobodyさん2007/04/26(木) 14:26:58ID:???
くだスレだからいいんじゃね?
0953nobodyさん2007/04/26(木) 14:50:00ID:UlKx/JN4
すいませんXML_Treeについて教えてください。

こんな感じに書いてあるんですがXMLの要素が全部でちゃいます。
どうすれば指定した部分だけ取得できるんでしょうか?
print_rしても配列がいっぱいでてきてさっぱりです。

<?php

require_once'XML_Tree/Tree.php';

$xml_filename = "http://map.simpleapi.net/stationapi?x=139.8025&y=35.6657";;

$xml_str = join("",file($xml_filename)); // xml_str にファイルを読み込み

$tree =& new XML_Tree();
$root =& $tree->getTreeFromString($xml_str);

if(XML_Tree::isError($root)) {
//エラー処理
}

echo $tree->get();

?>
0954nobodyさん2007/04/26(木) 15:02:39ID:???
すみません、質問させてください。
1つのphpがPOSTメソッドを受信するプログラムだとします。
別のphpがPOSTメソッドを送信するプログラムだとします。
この時、<form action>で送信した場合画面が切り替わってしまうのですが、
これを遷移させずにデータを送信する方法は何か有りませんでしょうか…
レス数が950を超えています。1000を超えると書き込みができなくなります。