【PHP】質問スレッドpart27【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/03 22:41:23ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り
0357nobodyさん
2005/03/26(土) 11:01:27ID:???0358nobodyさん
2005/03/26(土) 11:08:00ID:qY7QRnsDhttp://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=bcname&password=bcpassword&action=listeners
上記記CGIにアクセスすると下記ようにテキストでのXML形式のデータが出力されます。
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <LIVE365_API_STATION_STATUS_CGI>
<Code>0</Code>
<Reason>Success</Reason>
<Stream_status>OK</Stream_status>
<Current_listeners_reg>35</Current_listeners_reg>
<Current_listeners_pm>2</Current_listeners_pm>
<Current_listeners>37</Current_listeners>
<Rating>8.73</Rating>
</LIVE365_API_STATION_STATUS_CGI>
そしてこれをPHPから読み取り、<Current_listeners>37</Current_listeners> の値だけPHPに出力したいのですがどのようにすればいいのでしょうか?
0359nobodyさん
2005/03/26(土) 11:15:24ID:???・対象URLからXMLデータを取得
・XMLをパース
・<Current_listeners>のValueを出力
_以上_
0360359
2005/03/26(土) 11:18:38ID:???・「file」で
・「xml」で
・「echo」で
幸れ。
_以上_
0361nobodyさん
2005/03/26(土) 11:20:04ID:qY7QRnsD>>538-539
thanks a lot!!
0362nobodyさん
2005/03/26(土) 12:35:36ID:???PHPの話ではないようなんですが、この方法は私も気になります。
どなたか知ってる方いれば・・・と思うんですが。
いないようならこちらに誘導しときます・・・。
人頼りマンセー
【俺たちゃ裸が】Apache質問スレ【ユニホーム♪】
http://pc8.2ch.net/test/read.cgi/mysv/1103367974/
0363nobodyさん
2005/03/26(土) 12:43:53ID:???たぶんmod_rewriteなら出来るとおもうよ。
0364358
2005/03/26(土) 12:53:31ID:qY7QRnsDエラーが出てしまいます。
ファイルの指定がおかしいみたいなのですが
function characters ($parser, $text) {
global $tmp;
$tmp = $text;
}
function startElement ($parser, $name, $attrib) {
}
function endElement ($parser, $name) {
global $tmp, $Current_listeners;
switch ($name) {
case "Current_listeners":
$Current_listeners= $tmp;
break;
default:
break;
}
}
$xml_parser = xml_parser_create ();
xml_parser_set_option ($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler ($xml_parser, "startElement", "endElement");
xml_set_character_data_handler ($xml_parser, "characters");
$fp = file (http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=*****&password=*****&action=listeners, 'r');
while ($filedat=fread($fp, 4096)) {
if (!xml_parse($xml_parser, $filedat, feof($fp))) {
}
}
fclose ($fp);
xml_parser_free ($xml_parser);
echo "$Current_listeners";
0365358
2005/03/26(土) 13:07:15ID:qY7QRnsDCGIのアドレスに無理やり拡張子 &.xml と入れても問題なかったので
下記のようにFILEだけならちゃんと動きました
バースがおかしいようです
<?php
$lines = file ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=****&password=****&action=listeners&.xml');
// 配列をループしてHTMLをHTMLソースとして表示し、行番号もつけます。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n";
}
// 他の例として、Webページを文字列に取り込みます。file_get_contents()も参照してください。
$html = implode ('', file ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=eurobeat&password=07075710&action=listeners&.xml'));
?>
0366358
2005/03/26(土) 13:44:52ID:qY7QRnsD以下で出来ました
<?php
function characters ($parser, $text) {
global $tmp;
$tmp = $text;
}
function startElement ($parser, $name, $attrib) {
}
function endElement ($parser, $name) {
global $tmp, $Current_listeners;
switch ($name) {
case "Current_listeners":
$Current_listeners= $tmp;
break;
default:
break;
}
}
$xml_parser = xml_parser_create ();
xml_parser_set_option ($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler ($xml_parser, "startElement", "endElement");
xml_set_character_data_handler ($xml_parser, "characters");
$fp = fopen ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=****&password=****&action=listeners&.xml', 'r');
while ($filedat=fread($fp, 4096)) {
if (!xml_parse($xml_parser, $filedat, feof($fp))) {
}
}
fclose ($fp);
xml_parser_free ($xml_parser);
echo "$Current_listeners";
?>
0368nobodyさん
2005/03/26(土) 16:53:02ID:???>25番ポートは開放されています。
実際に開放されてることはどうやって確認したの?
>しかし設定によって遮断されているというのはありえるのでしょうか?
自分はWindowsは良く知らないので、思わぬところに設定があったりして
はまることは良くある。あと今回はNATかなんかで外のISPのSMTPに繋ぐから
関係ないんだろうけど、外のSMTPサーバ側で接続規制してることも稀にあるからね。
0369nobodyさん
2005/03/26(土) 17:22:24ID:???unpack 'B133',substr($data,8,17);
0370nobodyさん
2005/03/27(日) 01:12:17ID:KQq1VVe4一回のGetに対してphp.iniで設定されているmemory_limit分のメモリが
割り当てられて複数のGetに複数の処理系が動くのでしょうか?
0372nobodyさん
2005/03/27(日) 08:15:29ID:x1LbwUGsセーフモードとか全オフなのになー
0374nobodyさん
2005/03/28(月) 08:16:30ID:???php in malloc(): error: allocation failed
って出て、Core を吐きます。内容としては、データベースにアクセスして、
データをメモリにじゃんじゃんぶち込んでるんですけど…
PHP だとどのくらいまで耐えられるんでしょうねぇ?
Machine は FreeBSD 5.2.1-R で確かに物理メモリで 512MB しかつんでないけど、
top で見てみても PHP がぶっちぎってる感じはしないし、swap は 4GB ちかくあります。
ちなみに core の容量はだいたい…500MB くらい。
0375374
2005/03/28(月) 08:19:01ID:???PHP 4.3.10 (cli)
です。 >> 374 の s/CUI/cli/g ですね。。
0376nobodyさん
2005/03/28(月) 09:23:27ID:???メモリ食いつぶしても俺のせいにしないでね
0377nobodyさん
2005/03/28(月) 10:02:33ID:YyD4GvIT$keyword = 'きーわーど';となってて、キーワード指定しないで全て表示したいときは
$keyword = '*';でOKでしょうか?
0379nobodyさん
2005/03/28(月) 10:48:41ID:8BD5QTo3どんな感じか解んねーけど、取りあえずチェキッとけとって。
0380nobodyさん
2005/03/28(月) 11:45:09ID:Z3hOsg+9「05/03/28(月)」という形式にしているのですが、
保存するときはタイムスタンプで保存して、
出力時に日付に変換するほうがいいのですか?
0381nobodyさん
2005/03/28(月) 11:54:19ID:???どっちが良いのかは、必要があるか無いかで判断すれ。
0382nobodyさん
2005/03/28(月) 13:08:42ID:1BLl4/4Mだとすると、バイナリデータを操作して作るしかないのでしょうか?
0385382
2005/03/28(月) 16:02:00ID:???ありがとうございました。
0386nobodyさん
2005/03/28(月) 17:48:52ID:0by1676F【言語】 問いません
【備考】
ttp://pc5.2ch.net/test/read.cgi/hp/1106947416/
上のような感じのものがいいのですが
0388nobodyさん
2005/03/28(月) 18:11:52ID:???0389nobodyさん
2005/03/28(月) 20:16:03ID:YyD4GvIT実は人様(今連絡とれませんorz)に作って頂いたスクリプトなので、
その部分を公開したいのですがちょっと気が引けます。。
でもそれじゃあ相談できませんよねorz
うーん。。。
0390nobodyさん
2005/03/28(月) 23:32:54ID:IX4olP0VSSHでルート権限でログインして du $dir とした場合と
phpで shell_exec( 'du $dir') を実行した場合(ブラウザからアクセス)では
なぜかSSHからのサイズのほぼ2倍になってしまいます。
ディレクトリのリストは同じように表示されるのですがそれぞれのサイズがほぼ2倍になっています。(サイズが1の場合は1のままでトータルでほぼ2倍)
念のため:容量計算対象のディレクトリ内ファイル・サブディレクトリ等は全てphpで作成されてます
これは何が原因なのでしょうか?
【環境】
レンタル鯖のVPS
FreeBSD 4.7
PHP4.3.9(apacheのモジュールとして動作)
Apache/1.3.33
0391nobodyさん
2005/03/29(火) 03:08:23ID:sh3sT6Ybclassのメンバ変数に他のクラスのインスタンスを置いたとき、
そのメンバ変数のメソッドを実行する時は
$this->hoge->proc();
では駄目なんでしょうか?
Call to a member function on a non-objectとエラーが出てしまいます。
何かヒントでもあればお願いします。
0394nobodyさん
2005/03/29(火) 10:58:39ID:ChFumad5ブラウザでFTPの様にディレクトリ表示させリンクでファイルを開きたいのですが
良いスクリプトがあれば教えてください。
0395nobodyさん
2005/03/29(火) 11:08:40ID:???0396394
2005/03/29(火) 13:04:39ID:???0397nobodyさん
2005/03/30(水) 19:06:28ID:???2次元配列全部の要素をループで取得したいのですけど、どのようにすればいいのでしょうか?
宜しくお願いします。
0398nobodyさん
2005/03/30(水) 19:12:55ID:???0401nobodyさん
2005/03/30(水) 20:26:55ID:???foreach ($out_value as $in_key => $in_value) {
//ここで好きに処理汁。
}
}
array関連の関数を見るのも吉
0402nobodyさん
2005/03/30(水) 20:27:14ID:???foreach($array1 as $key1=>$value1){
// 1. foreach ver.
foreach($value1 as $key2=>$value2){ /* 処理内容 */ }
// 2. for ver.
for($i=0; $i<count($value1); $i++){ /* 処理内容 */ } // forの2重ループでも当然可
}
実際のコードを書く時には、配列要素のチェック等が必要。
0403nobodyさん
2005/03/30(水) 20:45:00ID:???0405nobodyさん
2005/03/30(水) 21:12:44ID:???原因として何が考えられるでしょうか?
sleep()で止めてファイルを確認しても作られません。
file_uploadsOn
0406nobodyさん
2005/03/30(水) 21:16:14ID:???table1に(テーブル名vendor_info)
vendor_name vendor_url
Abit http://abit.....
ASUS http://asus....
table2に(テーブル名mb_info)
mb_name mb_url vendor_kind その他諸々
AV8 http:// Abit
A8V http:// ASUS
から、リストを
Abit(リンクvendor_url) AV8(リンクmb_url) その他諸々データ
という風にmb_infoのベンダー名からvendor_infoのvendor_urlのデータを
持ってきたいんだけど、試行錯誤した結果思ったとおりに出力できたソースが
(続く)
0407406
2005/03/30(水) 21:19:08ID:???$res = $conn->query($SQL);
if (! DB::isError($res)) {
// レコードの取得
while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
vendorurl ();
echo "<a href=\"" . $row['mb_url'] . "\">" .$row['mb_name'] . "</a> |\n";
echo "<br>\n";
}
}
echo $res->numRows();
// データベースの切断
$conn->disconnect();
function vendorurl(){
global $conn;
global $row;
$sqlurl = "SELECT vendor_url FROM vendor_info WHERE vendor_name='" . $row['vendor_kind'] . " '";
$resurl = $conn->query($sqlurl);
if (! DB::isError($resurl)) {
while ($rowurl = $resurl->fetchRow(DB_FETCHMODE_ASSOC)) {
echo "<a href=\"" . $rowurl['vendor_url'] . "\">" . $row['vendor_kind'] . "</a> |\n";
}
}
}//function vendorurl
こうなった。んで思ったとおりに表示されてるんだけど、リレーショナルデータベース
の使い方としてこれで良いのか、もっとスマートなやり方があるのかお聞きしたい。
0408405
2005/03/30(水) 21:36:19ID:???0409nobodyさん
2005/03/30(水) 22:23:17ID:???SELECT * FROM mb_info,vendor_info
WHERE mb_info.vendor_kind = vendor_info.vendor_name
GROUP BY mb_info.mb_name
ORDER BY mb_info.vendor_kind;
0411nobodyさん
2005/03/30(水) 23:14:01ID:???なるほど、そうやって使うものなのね。
自分で>>407を書いててこれってリレーショナルな使い方じゃないよな・・・
って素人ながらに感じていたんだよ。
完全にSQLスレで聞いたほうが良い内容だったけど、お蔭様で先が見えてきました。
ありがとう。
0412nobodyさん
皇紀2665/04/01(金) 00:38:54ID:6CcmQp6cこのエラー内容を、ブラウザに表示できないでしょうか?
Perlだと、
use CGI::Carp qw(carpout fatalsToBrowser);
とか、
Kcatch.pm
っていうものがあるのですが・・・
なんかライブラリなりコードでもいいので、
ご存じの方、教えていただければ幸いです。
0413nobodyさん
皇紀2665/04/01(金) 01:25:04ID:???どうすればいい?
0415nobodyさん
皇紀2665/04/01(金) 01:55:33ID:???何ページですか。
0416nobodyさん
皇紀2665/04/01(金) 01:59:08ID:6CcmQp6cwww.php.net いって、sessionで検索。
あとはまかせた。
session はある程度の知識がないうちに公開しちゃうと、
いろいろとセキュリティーホールになるので注意
0417nobodyさん
皇紀2665/04/01(金) 02:02:03ID:???0418nobodyさん
皇紀2665/04/01(金) 02:02:12ID:???エイプリルフールですyo!
0419nobodyさん
皇紀2665/04/01(金) 02:08:52ID:???0420nobodyさん
皇紀2665/04/01(金) 08:16:41ID:???昨夜PHP4も5もコンパイルしたばっかりだというのに...orz
0423nobodyさん
皇紀2665/04/01(金) 11:16:34ID:???0424nobodyさん
皇紀2665/04/01(金) 12:21:42ID:???ttp://www.sitepoint.com/blog-post-view.php?id=248887
0425421
皇紀2665/04/01(金) 12:41:40ID:???リリースの日付は3/31だからエイプリルフールじゃないよな
0426nobodyさん
皇紀2665/04/01(金) 19:11:43ID:???0427nobodyさん
皇紀2665/04/01(金) 19:12:12ID:???phpinfo() や公式に確認可
0428nobodyさん
皇紀2665/04/02(土) 01:44:36ID:???2つのブラウザで同時にアクセスすると同一セッションになりますが、
1つ目のブラウザが決済のページに入ったら2つ目のブラウザは
決済ページを表示できないようにしたいです。
0430nobodyさん
2005/04/02(土) 05:01:43ID:4/Eqlz9k0431nobodyさん
2005/04/02(土) 05:02:31ID:???0432nobodyさん
2005/04/02(土) 11:45:09ID:???0433nobodyさん
2005/04/02(土) 18:06:21ID:55/k15cN知り合いにそういったツールがあると聞いたのですが、どんなものがあるのでしょうか?
0434nobodyさん
2005/04/02(土) 18:37:44ID:???0436nobodyさん
2005/04/02(土) 20:25:51ID:A7D+JrLe0438nobodyさん
2005/04/02(土) 23:20:20ID:A7D+JrLe0440nobodyさん
2005/04/02(土) 23:39:27ID:???ここにLinuxでパスワード付きのzipファイル生成する話題が出てるんで
このコマンドをphpからsystem関数で発行すれば良いかも
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19632&forum=10&3
0441nobodyさん
2005/04/03(日) 09:11:32ID:rv9qNWYeどうしてもファイルの中身がブラウザに表示されてしまいます。
(以下が、スクリプトまるごと全部です。)
//===========================================================
$sFilename = "seminar.csv";
$sUnixPathFile = $_SERVER["DOCUMENT_ROOT"] . "../data/" . "seminar_request.csv";
$fh = fopen ($sUnixPathFile, "r");
flock($fh,LOCK_EX) or die();
$buffer = fread ($fh, filesize ($sUnixPathFile));
flock($fh,LOCK_UN) or die();
fclose ($fh);
header("Content-disposition: attachment; filename={$sFilename}");
//dummyはIE対策
header("Content-type: application/octet-stream-dummy; name={$sFilename}");
print $buffer;
exit;
//===========================================================
どうすればダウンロードできるのでしょうか?
お助けいただければ幸いです。よろしくお願いします。
0442nobodyさん
2005/04/03(日) 10:23:20ID:???0444nobodyさん
2005/04/03(日) 13:35:14ID:???OSSの性能・信頼性評価/障害解析ツール開発
ttp://www.ipa.go.jp/software/open/forum/DevInfraWG.html
0445nobodyさん
2005/04/03(日) 13:42:01ID:QiTsRZ7FみなさんはどのようにしてPHPを覚えられましたか?
本でしょうか、それともネット上で?
0446nobodyさん
2005/04/03(日) 13:54:12ID:???マニュアルを読めば十分。
マニュアルはネットで配布されている。
関数が豊富に用意されているので、
まったくのド素人でも、覚えることそんなに無いかと思う。
とは言っても、アルゴリズムの一つや二つ知ってるだけでも、
かなり違ってくると思うので、本を買うのも、また良し。
(本に書いてあるかどうかは不明)
0447nobodyさん
2005/04/03(日) 14:00:57ID:QiTsRZ7Fマニュアルってこれのことですね。
ttp://php.s3.to/man/
早速トライしてみます。
0448nobodyさん
2005/04/03(日) 14:47:13ID:IkqaEHUCメールアドレスを登録してくれた人に、返信メールを送るシステムを作ったのですが、
携帯に返信できません。(実験したdomainは@t.vodafone.ne.jp)
Mb_Send_Mail($address, $subject, $text, $header)
で、$headerには自分のドメイン(DDNSで運営している)を入力しているのですが。
知ってる方いらっしゃいませんか?
0449441
2005/04/03(日) 16:00:01ID:rv9qNWYe0450nobodyさん
2005/04/03(日) 17:24:55ID:???俺はPEARのHTTP_Downloadを使ってる。
$dl = &new HTTP_Download();
$dl->setData($fileData);
$dl->setLastModified(time());
$dl->setContentType("application/x-octetstream");
$dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, $fileName);
$dl->send();
$fileData:ファイルの中身
$fileName:ファイル名
こんな感じでo.k.
0451nobodyさん
2005/04/03(日) 18:06:18ID:???以下の正規表現ではだめなのでしょうか?
どうしてもfalseになってしまいます・・・
if (preg_match("/^[ア-ン・−]+$/",$aParam["company_name_kana"]))
お助け願えれば幸いです。
0452nobodyさん
2005/04/03(日) 18:42:28ID:???mb_eregiかmb_eregを使って正規表現できる
0454nobodyさん
2005/04/03(日) 18:44:49ID:???0455451
2005/04/03(日) 19:45:30ID:rv9qNWYeんー、PHPのサイトみたらnmb_eregiかmb_eregは、まだ実験的ってあるので、避けたいところでして・・・
>>453さん
んー、しらべてみたところ、
if (preg_match("/^[ァ-ヶ・−]+$/"/",$aParam["company_name_kana"]))
かな、と思ったのですが、実行してみたら、だめでした・・・_| ̄|○
>>454さん
「preg_*だとUTF8使えば可能」ってのは、UTF8を使わないとダメってことでしょか?
あるいはEUCでも可能な方法はあるのでしょうか・・・
恐縮ですが、よろしくお願いします。
0456nobodyさん
2005/04/03(日) 21:22:06ID:???Windows版PHPでphp-ts.dll他を入れ替えてないというオチでは?
>>447
検索だとそのサイトがどうも上位に来るようなんだけど、マニュアルが古いから
ちゃんと本家のマニュアルをベースにした方が良いよ。
あと手元にアーカイブをコピーしてそっち見るとか。
http://jp.php.net/manual/ja/
■ このスレッドは過去ログ倉庫に格納されています