【php】part29【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/07/06(水) 09:57:54ID:0DucnAyH・新規質問の方は上げてください。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辺り
前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ
0002nobodyさん
2005/07/06(水) 11:24:37ID:4MHUxfdXPGDATA の値が実際のdataデレクトリとは違う値になっていて気持ち悪いのです。
実際は /usr/local/pgsql/data なのに /var/lib/pgsql/data
になっちゃってます。
0003nobodyさん
2005/07/06(水) 11:46:42ID:???0004nobodyさん
2005/07/06(水) 13:14:44ID:???0005nobodyさん
2005/07/06(水) 18:24:49ID:0DucnAyH0006nobodyさん
2005/07/06(水) 18:29:27ID:???0007nobodyさん
2005/07/06(水) 18:51:23ID:???0008nobodyさん
2005/07/06(水) 18:53:10ID:???0009nobodyさん
2005/07/06(水) 20:22:42ID:???0010nobodyさん
2005/07/06(水) 20:46:27ID:???0011nobodyさん
2005/07/06(水) 23:34:27ID:Z5eAEHZk0012nobodyさん
2005/07/07(木) 00:12:44ID:???0013nobodyさん
2005/07/07(木) 00:38:11ID:FTxPlCEvある値以降を読み出そうとするとPHPのプログラムそのものが停止状態
に陥ってしまいます。何か原因でもあるのでしょうか?
ちなみに画像データはデジカメで撮影した写真で、IrfanViewというフリー
の画像編修ソフトでリサイズ等しています(当然EXIF情報は保持するよう指定しています)。
0014nobodyさん
2005/07/07(木) 00:50:46ID:???どう停止するんだ。CPU使いきるのかメモリ使い切るのかI/O待ちになるのかetc
0015nobodyさん
2005/07/07(木) 02:26:05ID:???<?php
print $_GET['con'];
print $_GET['page'];
if ($_GET['con'] != "" && $_GET['page'] != ""){
include ("page/".$_GET['con']."/".$_GET['page']."/index.php");
}elseif($_GET['con'] != "" && $_GET['page'] == ""){
include ("page/".$_GET['con']."/index.php");
}else{
include ("page/main.html");
}
?>
conとpageの数値によって表示するページを変えたいのですが
上記のようにやっても表示されません
$conと$pageにはちゃんと数値が格納されています。
なぜでしょうか?
0016nobodyさん
2005/07/07(木) 02:50:01ID:???まずincludeではなくechoしてどのURIが指定されるのか確認する。
$_GET['page'] != ""より !isset($_GET['page'])の方がよい。
また、必ず意図しない文字が含まれていないか正規表現などを使って確認すること。
たとえば'/'、'\'。$_GET['page']の中身が./../hogeだったら……?
0017nobodyさん
2005/07/07(木) 21:02:51ID:???下記例では、tempdirに/tmp/test、tempfileに/tmp/test/tmp.txt、が設定される予定なのが、
この2つは何も設定されていません。(nameにはtestが正しく設定されている。)
どうもreplace_val()からの戻り値が呼出側で受取れていないため、その設定を元にした置換ができていないようです。
(replace_val()内部ではtempdirは正しい値が設定されているが、戻ってきた時点で空白になる。
tempfileはtempdirが空白のため内部的にも正しい値は設定されていない。)
いろいろ試したのですが、解決策が見つかりません。ご教授お願い致します。
■設定ファイル(書式:Key value)。 keyに$が付加されている場合はvalueの<>を置換する。
name test
$tempdir /tmp/<name>
$tempfile <tempdir>/temp.txt
■valueの「<>」を再帰的に置換する。<>がなくなると戻る。
protected function replace_val($value){
$st_pos = strpos($value,"<");
$ed_pos = strpos($value,">");
if($st_pos !== FALSE && $ed_pos !== FALSE && $st_pos < $ed_pos && (($v_len = $ed_pos - $st_pos -1) != 0)){
$v = substr($value, $st_pos +1, $v_len);
$front_str = substr($value, 0, $st_pos);
$rear_str = substr($value, $ed_pos +1);
if(isset($this->cfg[$v])){ $value = $front_str. $this->cfg[$v] .$rear_str ; }
else { $value = $front_str. $v .$rear_str ; }
$this->replace_val($value);
} else { return $value; }
}
続く
001817
2005/07/07(木) 21:03:30ID:rP9UCRTY■ファイルを読込み、連想配列に代入する。自作のファイル処理クラスを使用。
public function config_setup(){
$this->open("r"); $this->lock();
while(!$this->is_eof()){
$line = trim($this->read());
if($this->is_directive($line)){ # is_directiveはコメント行・空白行以外でTRUE返す
list($key,$value) = preg_split("/[\s,]+/",$line,2);
$key = trim($key);
$value = trim($value);
if(substr($key,0,1) == "$"){ $key = substr($key,1);
$value = $this->replace_val($value); } #<-ここが問題?
$this->cfg[$key] = $value;
}
}
$this->unlock(); $this->close();
}
0019nobodyさん
2005/07/08(金) 08:31:13ID:???./pear と実行するとエラーになります。
===================================================
PHP Warning: Unknown(): Unable to load dynamic library './imap.so' - imap.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './ldap.so' - ldap.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
===================================================
上記ライブラリが見つからないようですが、ライブラリ自体は
/usr/lib/php4/に入っています。
/etc/php.d/mysql.ini の指定を上記パスに変更しても
探せないようでした。
'./mysql.so'これはどこからの相対パスなのでしょうか。
0020nobodyさん
2005/07/08(金) 10:46:10ID:???再帰呼び出しが結果を返していない
return $this->replace_val($value);
としてみなされ
002117
2005/07/08(金) 12:13:32ID:???本当にありがとうございます。たった6文字追加で解決できました。
再帰関数のreturnって最後に抜ける時だけかと思ってました。(初めて作ったもので)
0022nobodyさん
2005/07/08(金) 18:35:04ID:0UiFE2YC<input type=hidden>だと改行した後の文章は、引き継がれないんですか?
今、この投稿の確認画面を見たら、ソースの改行した部分に<input type=hidden>が入ってますけど、どうすればいいんでしょうか?
0023nobodyさん
2005/07/08(金) 18:54:16ID:???受け取れますよ。
<form method="POST" action="this_file.php">
<input type="hidden" name="hoge" value="hogehogieh
hogiehgoei
hoi">
<input type="submit">
</form>
<p>データ <?php if(isset($_POST['hoge'])){ print $_POST['hoge']; } ?></p>
0024nobodyさん
2005/07/08(金) 19:48:21ID:???<textarea rows=5 cols=70 wrap=off name=MESSAGE>ほげほげ
改行</textarea>
0025nobodyさん
2005/07/08(金) 22:51:37ID:tkMhmOGbありがとうございます。
調べて、自分なりに勉強してみます。
php始めて2週間ほどになりますが、色んなサイトで調べまくっます。
「ほげほげ」ってなんですか?
良く目にするんですけど。
0026nobodyさん
2005/07/08(金) 22:54:08ID:???0027nobodyさん
2005/07/08(金) 22:56:02ID:tkMhmOGb違う・・・・。
0028nobodyさん
2005/07/11(月) 20:45:07ID:gCXZMFSggoogleで検索したところ、ファイル名と行番号を返す方法や、回答のない質問はあったのですが、呼び出し元関数名を求める方法を見つけることができませんでした。
良い方法がありましたら、御教授ください。よろしくお願いします。
0029nobodyさん
2005/07/12(火) 01:57:14ID:gE6ZuFfG<?php
echo hoge();
function hoge()
{
return __FUNCTION__;
}
?>
perlは知らないが
0030nobodyさん
2005/07/12(火) 02:20:09ID:???http://www.php.net/manual/ja/function.debug-backtrace.php
>>29
節穴?
0031nobodyさん
2005/07/13(水) 01:05:23ID:Gxfaf5t+$rs = mysql_query("SELECT * FROM hoge");
とし、戻り値がTRUEなら
while( $rec = mysql_fetch_array($rs, MYSQL_ASSOC)){
PHP文
}
と処理を行うと、SQLで取得したデータを表示する事が出来ると思うのですが、
同じテーブルのデータを2箇所で表示する事はできるのでしょうか。
プログラム上部でSELECT文を実行させ、
その後while文を2回書いてるのですが
1回目のものしか表示されません。
mysql_free_result()は、2回目の後にしかしていないのですが、
一度でもループで処理を行うと値はなくなってしまうものなのでしょうか?
0032nobodyさん
2005/07/13(水) 01:44:20ID:???rs つまりResultSetで中身はArrayじゃないかの
だからArrayにFetchArrayしたとこで一個しかオブジェクトは
返ってこない気がするんだが…
Arrayにたいしてwhileループかます場合の定石として
rs.nextElement()とrs.hasMoreElement()、それ相当ってphpにないのん?
0033nobodyさん
2005/07/13(水) 01:46:08ID:???rsを別変数にこぴればいいんでは?
0034nobodyさん
2005/07/13(水) 01:47:32ID:???Javaだと例外が起きちゃうけど。
0035nobodyさん
2005/07/13(水) 02:03:49ID:???そのwhileは、MySqlの結果が空になるまで繰り返す。
だから、2回目のwhileは、既に空っぽなんで、何もせずに終了する。
案としては、
whileの前で $rec = array();として、
$rec -> $rec[] にして配列に取り込んで後で好きなようにいじれば良い。
mysql_data_seek() を使ってもできるだろうが、薦めない。
mysql_fetch_array(…, MYSQL_ASSOC)) をわざわざ指定して使うなら -> mysql_fetch_assoc() もある。
003631
2005/07/13(水) 09:38:45ID:Nyo2L72Xありがとございます。
>$rec -> $rec[] にして配列に取り込んで後で好きなようにいじれば…
ということは、今まで$rec{'項目名'}のように使っていたものは使えなくなると言う事?
でも、何度も使いたい時はこの方法しかないのかな…
>mysql_fetch_array(…, MYSQL_ASSOC)) をわざわざ指定して使うなら -> mysql_fetch_assoc() もある
なるほどφ(..)メモメモ
003828
2005/07/13(水) 11:08:07ID:???勉強になりました。どうもありがとうございます。
>>30
正にそのもの機能があったのですね。それで、希望の動作が出来ました。ありがとうございました。
003931
2005/07/13(水) 18:21:45ID:Nyo2L72Xやってみました。
-------------------------------------------------------
$rs = mysql_query("SELECT * FROM hoge");
while( $rec = mysql_fetch_array($rs, MYSQL_ASSOC)){
print $rec{'項目名'};
}
↓
$rs = mysql_query("SELECT * FROM hoge");
$rec = array(mysql_fetch_assoc($rs));
// 1個目
$nCnt = 0;
while($nCnt < 10){
print $rec[$nCnt]{'項目名'};
$nCnt++;
}
// 2個目
$nCnt = 0;
while($rec){
print $rec[$nCnt]{'項目名'};
print $rec[$nCnt]{'項目名'};
}
-------------------------------------------------------
とりあえず、1個目のみ表示させようと思ったのですが、配列1番目のデータしか表示されません。
$nCntを表示させてみたのですが、ループはきちんとしているようです。
多分、ループ前の部分がおかしいとは思うのですが…。そもそもarrayの使い方あってるのでしょうか?
0040nobodyさん
2005/07/13(水) 18:45:43ID:???$rs = mysql_query("SELECT * FROM hoge");
$rec = array();
$nCnt = 0;
while( $rec[$nCnt] = mysql_fetch_array($rs, MYSQL_ASSOC)){
?print $rec[$nCnt]['項目名'];
}
$nCnt = 0;
while(isset($rec[$nCnt])){
?print $rec[$nCnt]['項目名'];
}
こういうことじゃ?
0042nobodyさん
2005/07/13(水) 18:55:25ID:???状況としてはアップロードした結果
$_FILES['XXX']['name'] : クライアントのファイル名
$_FILES['XXX']['type'] : null
$_FILES['XXX']['size'] : 0
$_FILES['XXX']['tmp_name'] : null
$_FILES['XXX']['error'] : 6
となるのですが・・・
神さま何か考えられる原因を教えてください。
Linux+Apache2.0.54+PHP5.0.6(mod_php)
0043nobodyさん
2005/07/13(水) 19:08:28ID:???0044nobodyさん
2005/07/13(水) 20:55:10ID:???0047nobodyさん
2005/07/14(木) 06:53:29ID:???while( $rec[] = mysql_fetch_array($rs, MYSQL_ASSOC)){
これでキーが自動的にインクリされる
0048nobodyさん
2005/07/14(木) 12:46:26ID:SdE/T/Mcphp 5.0.4
zlib-1.2.1.2-2.fc3
./configure で --with-zlib-dir=/usr/lib/
libz が見つからないとおこられます。
$ which libz
/usr/lib/libz.so.1
/usr/lib/libz.so.1.2.1.2
php4のインストール時にはでないのですが、どうすればいいんでしょうか?
0052nobodyさん
2005/07/14(木) 13:46:38ID:SdE/T/Mcありがとうございます。
解決しました。
だめだったとき
zlib-devel 入れて
--with-zlib はずして
--with-zlib-dir=/usr/lib/libz
で解決しました。
ひっかかっていたのは ZLIBサポートなしで GDのpngサポートをやりたかったのですが、
--with-zlibはつけずに通りました。
0054nobodyさん
2005/07/14(木) 13:52:45ID:???zlibフォーマットで圧縮する画像形式だと思ってたけど。
0055nobodyさん
2005/07/14(木) 14:15:44ID:j5wQR+Ydimap_fetchbodyでデータは取得できるのですが、ファイル名もしくは拡張子がわからないとコピーできなくて困っています。
005631
2005/07/14(木) 14:30:26ID:???表示件数を指定したい時は、for文もしくはwhile内でIf文なんですよね?
今はfor文でやってます。
PHP+MySQLは初めてなのですが、
ネットで調べても中々いいサイトがないです。(本家が一番?)
困ったらここで聞けばいいなんて甘えが出てきそうなので、
何かおすすめの本があったら教えてください
m(__)m
005748=52=53
2005/07/14(木) 17:14:23ID:???zlib有効にするのと、GDのpngでlibz使うのとは別物かと思っとりました。
( configure で --with-zlibつけずにやると zlib support = no みたいに出てきたようなので)
んでも いま phpinfo見ると 確かに zlibも有効になってました。
./configure がなんなのか意味もよくわかってなかったりすんですが(;・∀・)
また勉強しときます
0058nobodyさん
2005/07/14(木) 19:29:17ID:???$_REQUEST['get']で書いているのだけど
何か不都合ある?
0059nobodyさん
2005/07/14(木) 19:33:57ID:???悪意のあるなしに関わらず、
クライアントが送ってきた Cookie などに
上書きされる可能性があるため
$_GET を使えばいらなかった心配をするハメになって確認の処理が面倒。
あまりスマートとは思わんな。
0060nobodyさん
2005/07/14(木) 20:39:43ID:???dクス
呼び出し元ページでPOSTにしたいときに楽かなー、とか思ったが
果たしてそんなケースがあるのか疑問になってきた
そもそも何のためにあるんだろ>$_REQUEST
0061nobodyさん
2005/07/14(木) 21:04:55ID:SdE/T/Mcぐぐっても 早くなると書いてあるくらいで、
短所などが書かれてなくて逆に不安なんですが
使うことでマイナスになる点ってありますか?
0062nobodyさん
2005/07/15(金) 00:29:12ID:???別に$_REQUESTでも問題がないと思うんだけど。
必ず、受け取ったパラメータの値に不正なデータが入っていないかチェックしていれば。
006331
2005/07/15(金) 01:55:51ID:OBw0hLoz今までの応用だと思うのですが、
$rs = mysql_query("SELECT * FROM hoge");
$rec = array();
for($nCnt=0; $nCnt<$pageCnt; $nCnt++ ){
$rec[$nCnt] = mysql_fetch_array($rs, MYSQL_ASSOC);
print $rec[$nCnt]['項目名'];
}
とし、$page_Cnt=10で、10件表示にさせました。
10件以上ある場合は、次ページへ移動させるのですが、
その場合は、配列を10番目〜19番目で表示させようと思ったのですが、うまく行きません。
上のプログラムを少し変更し、次ページに行った時には
$nCntは、10〜19と増えていくことを確認しました。
でも、表示されるデータは0〜9番目のデータを、
1ページ目と何も変わらないのです。
どうすれば、次ページには途中からの配列のデータを表示できるのでしょうか。
0065nobodyさん
2005/07/15(金) 06:55:03ID:???$rs = mysql_query("SELECT * FROM hoge");
$rec = array();
while($rec[] = mysql_fetch_array($rs, MYSQL_ASSOC)) ;
for($nCnt=0; $nCnt<$pageCnt; $nCnt++ ){
print $rec[$nCnt]['項目名'];
}
$start = 10;
$pageCnt= 10;
$rs = mysql_query("SELECT * FROM hoge");
mysql_data_seek($rs, $start);
$rec = array();
for($nCnt=$start; $nCnt<$start+$pageCnt; $nCnt++ ){
$rec[$nCnt] = mysql_fetch_array($rs, MYSQL_ASSOC);
print $rec[$nCnt]['項目名'];
}
0066nobodyさん
2005/07/15(金) 11:51:15ID:???初歩的な質問ですみませんが、$_REQUESTの不正なデータっていうのは具体的にどういうデータの事なんでしょうか?
POSTやGETでも、HTMLタグや\や"などを処理しますが、それとは別に$_REQUESTで送られてくる特有の不正なデータがあるんでしょうか?
0068nobodyさん
2005/07/15(金) 12:10:19ID:???$_REQUEST['get']には$_GET['get'] $_POST['get'] $_COOKIE['get'] ($_FILE['get'] PHP4.3未満)
のどれで上書きされてるかわからなくなるなる可能性がない事もないということやろ
0070nobodyさん
2005/07/15(金) 12:55:17ID:???では、「mode=nantoka(処理分岐用のパラメータ)」みたいに、GETでもPOSTでもどっでも良い場合は、$_REQUESTった方がいいのかにゃ?
0071nobodyさん
2005/07/15(金) 13:03:54ID:NQKXwLdK全然、分かってないだろ。
0072nobodyさん
2005/07/15(金) 13:33:01ID:???0073nobodyさん
2005/07/15(金) 13:40:22ID:???cookieに上書きされて気づかずにハマっていても自己責任だし。
俺も、_REQUEST使ってOKと判断したら、結構使っているし。
0074nobodyさん
2005/07/15(金) 16:37:15ID:???$GLOBAL['form']['〜']
0075nobodyさん
2005/07/15(金) 16:47:27ID:???使ってる人教えて。
いや、Mojavi導入したらもはや関係ないんだけどさ・・・。
0076nobodyさん
2005/07/15(金) 18:00:51ID:SL/muoKmひょっとして再帰的に
ファイル消す->フォルダ消す
という作業をを繰り返さないといけないのですかね?
rmdir()は指定ディレクトリ内にファイルが存在すると
エラーになってしまう。
007773
2005/07/15(金) 18:07:25ID:???便利というか、GPCを見分ける必要があるのなら、
それなりのリクエスト処理クラスを用意するし。
逆に言うと、$_GETとか$_POSTはリクエスト処理クラス以外では使わない。
処理クラスを用意するまでも無いのなら、$_REQUESTで十分てな感じか。
もちろん、例外も有りますが。
0079nobodyさん
2005/07/15(金) 18:13:06ID:???正解。
自分で作るか、>>78のように再帰的に消すコマンドを使うか、pear辺りに転がってる誰かが作ったものを使うか。
0080nobodyさん
2005/07/15(金) 19:16:49ID:???この間それ作っていてふと思ったんだけど、運用ではなくもしスクリプトを作ってる途中に
うっかりミスとかして、ローカルのルートから全部ファイルが消えてしまった!!
とかやった奴おる?
0084nobodyさん
2005/07/16(土) 09:54:26ID:???昔のスクリプトをいじったりするときに新しくクッキーを追加したらバグったとか
可能性があるってことで実例はないと思う
0085nobodyさん
2005/07/16(土) 10:02:31ID:???0086nobodyさん
2005/07/16(土) 13:32:38ID:???ぼきはWindowsにApache入れてるんだけど。
0087nobodyさん
2005/07/16(土) 13:45:57ID:???0088nobodyさん
2005/07/16(土) 13:47:49ID:???0090nobodyさん
2005/07/16(土) 16:46:07ID:???0091nobodyさん
2005/07/16(土) 17:17:02ID:???変数付きのURL(http://hoge.com/test.php?id=a&dr=tn)から
変数のidとdrの値を取得したいんですが、
下記のようにやってもうまくいきません。
どなた様かご教示お願いします。(URLは$urlとしています)
$u = parse_url($url);
$query = $u["query"];
$id = $query["id"];
$dr = $query["dr"];
echo "ID:$id";
echo "DR:$dr";
0092nobodyさん
2005/07/16(土) 17:24:29ID:???$id = $_GET['id'];
$dr = $_GET['dr'];
0093nobodyさん
2005/07/16(土) 17:44:36ID:???PHPのわかりやすさは拍子抜けするほど。
0094nobodyさん
2005/07/16(土) 17:55:11ID:???の resource ってセッションに入れたり出したりしても良いのですか?
0095nobodyさん
2005/07/16(土) 18:00:12ID:???一番最初に $url = 'http://hoge.com/test.php?id=a&dr=tn'; というのがあって、
それをパースしたいってことだろうねぇ。
$query を parse_str() に突っ込めばよいかと。
0098nobodyさん
2005/07/18(月) 15:20:42ID:igP0jwKzメーカーの仕様によらず、各社共通して
・F値
・シャッター速度
・露出補正
・ISO感度
・焦点距離(35mm換算)
・露出モード
・撮影日時
情報を抽出するにはどういうパラメーターを指定して探索すればいいでしょうか?
0099nobodyさん
2005/07/18(月) 17:26:51ID:???つ[ttp://jp2.php.net/manual/ja/function.exif-read-data.php]
0100nobodyさん
2005/07/18(月) 19:05:50ID:???どの関数を使えば良いでしょうか?教えてください。
010198
2005/07/18(月) 19:33:41ID:???exif_read_data関数ですね。
私もそれを使おうと思っているのですがsectionsの中が
さらに区分けされているらしく(配列の配列?)、
どのパラメータを指定すればいいのかまでは
分かりませんでした。
配列を表示させてみたこともあるのですが似たような
名前のパラメータが重複して登場してたりして
各社共通のパラメータがどれなのかという情報も
分かりませんでした。
■ このスレッドは過去ログ倉庫に格納されています