【PHP】下らねぇ質問はここに書き込みやがれpart13
423 :
nobodyさん :
2005/12/04(日) 14:25:00 ID:82Fy3YTF >>420 ありがとうございます。
ぐぐってその方法は分かったのですが、日本語フォントをサーバに入れないと駄目みたいです。
verdana.ttf はどこにあるのでしょうか?
phpをテストしてたんですが、 mysql_connectを使用すると Call to undefined function: mysql_connect が出るページもあるし、出ないページもある。 こ、この挙動は何?汗 extension=mysql.soを加えたら ちゃんと動作するようになったが気持ち悪すぎる。 なぜ、動いたり動いてなかったりしたんだ・・・
>>424 Webサーバが実は多重化されてねぇか?
それだけかボケ
あぼーん
PHPを使ってローカル(windows)のファイルを操作したり、 テキストに書き込んだりするのは可能ですか?
>>428 可能可能。俺はWindowsでのファイルの整理(名前変更)や
抽出とかはPHPでやってるよ。
>>428 基本的には (PHP が動いてるマシン == ローカル) が成立する場合だけだけど
>>429 のようにできる。
>>424 ここはお前がいるスレではない
カエレ!!
>>428 ではないが、
そうかー、ローカルでもできるんだよな。こりゃー便利だな。今気付いたよ。
header("Content-Type: text/html;charset=UTF-8"); header('WWW-Authenticate: Basic realm="あいう"'); header("HTTP/1.0 401 Unauthorized"); という感じでベーシック認証に用いられる文字コードを指定できないのですね 他に方法あるのでしょうか?
HTTPヘッダにmultibyteをそのまま入れるなんてオレには真似できねぇな
PHPの関数一覧どっかにない?
>>436 プチリファレンスとかポケリファレンスとかの索引
マニュアルに関数一覧があるだろボケ
本当にくだらないんだけど、array_unique()使うときって、 特に配列内の順序を気にしないなら直前にarray_sort()しといたほうが速い? 全然意味ないかな?
無し
内部でquick sortしてるから意味無いし、下手すりゃ遅くなるね。
>>438 あれ見づらいから聞いてんだよーお前ってばかだなあ
あれ以上見やすいものはないよ。
その馬鹿は騙りだろw
PHPのマニュアルは最高だけど バイナリセーフかどうかぱっと見て分かるともっと素敵 何か傾向はないのかな?
信者はみづらいとは言わないもんだよね
>>445 バリデートとかファイル操作で使う奴なら自分でちまちま調べてメモってる。
チートシートにして公開してみようかな。
>>446 どう見づらいのかは上で質問した本人にしか分からんよ。
つか
>>436 →
>>442 分かるわけねーだろwww脳みそ足りねえwww
というか見づらい見づらくないというものじゃないでしょ。
何か別のものでも見てるんじゃないの。
バイナリセーフなファイルハンドラはねーだろ? 入力値は全部サニタイズしてしまえ
PHPのマニュアルは、検索が使い物にならんのが一番むかつく。 ぐぐってPHPのマニュアルにたどり着くことの方が多いというのは如何なものか。
何を言ってるかわからんね
サイト検索するとGoogle先生にリダイレクトされるしなw
オイラがPHPで最初に書いたスクリプトは、 マニュアルのMany HTML Files版のディレクトリを走査して ファイル名から関数一覧を作成するスクリプトだったなぁ。 こんな関数あるのかな?って感じで単語で検索するのに重宝した。 今はchm形式のを使ってるけど。 ・特定のディレクトリを開く、ファイル名取得する。 ・特定の文字(function)が含まれているか調べる ・文字の置き換え(ファイル名から関数名を取り出す。リンクを作成する) ・ファイルへの書き込み(一覧htmlを作成)
俺、最初はレッツラPHPのナマズに世話になってた。 一通り目録を見通した後は検索しなくなったけどね。
>>453 あれは検索語の塊であるユーザノートが引っかからないのが痛い
グーグル以前なら仕方ないけれど
455 :
nobodyさん :2005/12/05(月) 19:12:54 ID:OEVC/8Kz
全角の英数字や記号を半角に変えるには、 テキストの文字数を取得して、 一文字一文字チェックして変えるしかないんでしょうか。
あれって英数字にもいけるの?
>>442 確かに見づらいかもしれないね。
なんつか、文字小さいからいちいち大きくしてるし、色の関係で読む気が失せる。
CSS切るか…
>>460 頭の回転いいなw
しかし面倒だ罠。CSS切っちゃえっ☆
CSS? なんか妙な関数一覧を見てる奴が居るな。
>>462 Cascading Style Sheets
つか字が小さいってどこのマニュアルだろ。 大体一覧って読むとこないし。
442=459他は左カラムのアレのことを言ってるんじゃまいか 実は索引や一覧を求めてるわけじゃないと見たが、どうよ?
467 :
459 :2005/12/05(月) 21:11:09 ID:???
>>465 442とは別人です。
勝手にイコールで結ばないでください。
468 :
nobodyさん :2005/12/05(月) 21:16:44 ID:SiZlFUzU
フォームメールを作成しましたが…
メールを受信しても文字化けしてしまいます。何故でしょうか?
■HTML
<form method="post" action="./sendmail_script.php">
<p>
<input type="hidden" name="_email" id="_email" value="
[email protected] " />
<input type="hidden" name="_subject" id="_subject" value="アンケート" />
<input type="hidden" name="_result" id="_result" value="<?php print($_SERVER['PHP_SELF']);?>" />
</p>
<dl>
<dt>名前</dt>
<dd><input type="text" name="name" id="name" size="50" maxlength="35" /></dd>
<dt>メールアドレス</dt>
<dd><input type="text" name="_from" id="_from" size="50" maxlength="255" /></dd>
<dt>メール本文</dt>
<dd><textarea name="memo" id="memo">本文記入欄</textarea></dd>
</dl>
<p>
<input type="submit" value="送信" />
<input type="reset" value="取り消し" />
</p>
</form>
469 :
468 :2005/12/05(月) 21:17:25 ID:SiZlFUzU
■PHP <?php $header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion(); $body="「".$_POST['_subject']."」\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.="[".$key."]".$value."\r\n"; } } mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info); header("Location: ".$_POST['_result']); ?> よろしくお願いします。
470 :
nobodyさん :2005/12/05(月) 21:20:51 ID:H0N4uvhb
文字化けといったら文字コード
471 :
468 :2005/12/05(月) 21:31:49 ID:SiZlFUzU
>>470 PHP の方で、> text/plain;charset=ISO-2022-JP と指定してるのですが
送られてきたメールを見ると、何故か文字化けしています。
何故なのか分かりません。
>>469 よく判らんけど、内部エンコードがSJISじゃないんじゃないかと
>>471 それはPHPが勝手につけるから指定しなくていいでしょ。
PHPの場合はmbstring.internal_encodingをきちんと指定しておけば、勝 手に文字コードを解釈してくれるんじゃなかったでしたっけ?
windows2000、php4.4.10でXdebugを使っています。 エラー時にスタックトレースが出る場合と出ない場合があります。 これは一体なにが悪そうでしょうか? 設定としましては、 ダウンロードしたdllをextensions以下に配置し、 php.iniに記述したのみです。 phpinfo()により確認済みです。 よろしくお願いします。
スレ違いグッバイ
479 :
468 :2005/12/05(月) 21:51:24 ID:SiZlFUzU
エラー出ました。内部エンコードは…おかしいですね。orz Undefined variable: B in /home/hoge/sendmail.php on line 7
480 :
>>475 :2005/12/05(月) 21:56:28 ID:???
>>476 誘導・回答有難うございます。
CGIの制限は、「使えるスクリプト」が限られていて
CGIを探して使おうにも登録が必要なんですね。
が、管理人さんが忙しいなのかは知りませんが
その作業にまったく手をつけていないので結局PHPに頼ろうと思ったのです。
借りているのは
ttp://www.freespace.jp/です 。
481 :
477 :2005/12/05(月) 22:02:57 ID:???
>>478 まじですか。
ここが適しているかと思い質問させて頂いたのですが、
他探してみます。
まあプログラムを書く人の板だからねえ
483 :
475 :2005/12/05(月) 22:20:52 ID:???
ああ、探してますスレはPHPでもOKなんですね。早とちりしてました 有難うございました。いってきます。
abstractクラスのコンストラクタは 全部protectedにしておいて問題ないですか?
array配列の値が123だったらその値を削除しようとしているのですがこれだと他の値が 消えてしまう事があるようです。どうしてなのでしょうか?。 $dat = array('000','123','457','999'); $no = in_array('123',$dat); unset($dat[$no]);
きっと'123'の部分が変数なんでしょ。 その値が間違って渡されてるに1票。
487 :
軟式PHP :2005/12/06(火) 09:21:20 ID:???
そもそもin_arrayってboot値が返るのでは。 485の意図している動きをさせるならarray_searchの方を使わんと。
>>486 ,487
マニュアル読んできました(^^;
487さんがおっしゃるようにboolが返ってきてきていました
ありがとうございました
490 :
455 :2005/12/06(火) 10:09:20 ID:???
>>456 遅れましたが、ありがとうございました。
携帯サイトでPHPに使用してるファイル全部SJISで書いてるんですが、フォームから送られてくる一部の文字が文字化けします。 これを解決する方法はありますか?レン鯖を使用してるのでphp.iniの設定は変えれません。ヒントだけでもお願いします。
確かにバージョンの問題もありますがmb_send_mailはmb_languageとか設定しないと 普通に化けますよ(^^;
493 :
軟式PHP :2005/12/06(火) 11:41:52 ID:???
>>491 その一部を教えてくれんと「表示」「ー」等が化けるとか。
Vodaの機種でUTF-8で送信されてくるやつもあるから注意せんとな。
1つのform内に2つのボタンを設置した場合に どちらのボタンが押されたかを判断する方法を教えてください
>>493 レスありがとうございます。
表、能、ー、とかKENT WEBで説明されてるやつですね。
あと、半角カナでドラエモンなど長めの文字がなります。こちらは原因が違うような気がしますがどうなんでしょう?
496 :
nobodyさん :2005/12/06(火) 11:53:15 ID:kEMoA+0o
>>494 <input type="hidden" name="hehehe" value="hohoho">
<input type="submit" name="hoge" value="fuga">
↓
hehehe=hohoho
hoge=fuga
>>496 ありがとうございます。
<input type="submit" name="hoge1" value="メモ1">
<input type="submit" name="hoge2" value="メモ2">
こういう場合はどうやって判断したらいいでしょうか?
>>497 <?php print_r($_POST); ?>
やってみればすぐわかる
>>497 nameは同じにしてvalueだけ変えたほうがよくね
ディレクトリ内のファイルを一つ一つのサイズを取得するのではなく ディレクトリ内のトータルなファイルサイズを 一回で取得する関数なんてありませんか?
探してなければ作ればいいじゃない
>>496 さんみたいによく非表示の
<input type="hidden" name="hehehe" value="hohoho">
を使うのをみますが、これっての真意をしりたいというか
これってformが複数ある場合の識別に使ってるんですか?
>>502 一つのPHPで処理するときにhiddenの値でアクションを切り替えたりするのに使ったりする。
>>502 使う必要に迫られないってことは、君には必要ないのだと思う。気にせずスルーで。
#ってか普通にWebプログラム作ってりゃ使うんじゃね?
>>505 知ってて言ってることが判らないのだろうか...
マテリアルってどういう意味?
まさかと思った判らなかったのか。
>>502 入力の必要がない値を渡す。
たとえば2ちゃんねるなら板名、スレッドキーなどがhiddenで渡される
>>484 publicにしとけ
サブクラスがnewできないものと紛らわしい
>>485 in_arrayの戻り値はBoolean
array_searchと勘違いしてるだろ
PHPのHTTPセッションを使ってみたのですが、IEや火狐、ネスケでは正常に動作するのにOperaでだけおかしな動作になります。 仕様の違いによるものなのでしょうか…? 設定はデフォルトのままです。
515 :
軟式PHP :2005/12/06(火) 19:32:54 ID:???
そこでエスパーの登場ですよ。
クッキーが拒否設定にでもなってるんじゃねーの。
いや、おかしいが動作しているわけだ
まぁ、なんだ、どうやってセッションを実現しているかはマニュアルに記載があるし、 それらを制御するphp.ini等の設定方法も載ってるしなぁ。 利用時の出力htmlソースを見るなり、httpヘッダを見るなりして、 自分で原因(つーかたぶん勘違いしてるんだろうと思うが)を突き止められるべ。 それが学習ってもんよ。てやんでぃ。
519 :
514 :2005/12/06(火) 21:31:01 ID:???
具体的には、「食べる」ボタンを押した際に $_SESSION["onaka"]=ippai; として、別ページに <?php if (isset($_SESSION["onaka"])){ ?> お腹いっぱい <?php }else{ ?> お腹すいたよ <?php } ?> とし、食べるボタンを押した場合とそうでない場合に違う表示がされる様にしたのですが、Operaだと食べるボタンを押しても別ページではelseの表示になってしまいます。
>>519 「食べる」以外のボタンがあるならphpじゃなくhtmlの問題かと
ヘッダ見るのが手っ取り早い
既に変なクッキー食わせてるとかウィンドウが別インスタンスだとか
operaの設定の問題でしょ
524 :
514 :2005/12/06(火) 22:32:34 ID:???
すみませんごめんなさい。 オフライン作業にしてました…Д 戻したら正常になりましたー…逝ってきます…
お、オフライン作業だってー!?
取得したhtmlソースをテキストエディタで見るようにタグを色分け整形出来るようなライブラリ無いでしょうか?
それPHPソース用
530 :
nobodyさん :2005/12/07(水) 17:53:51 ID:qi78BylE
Windowsでphpをコマンドラインで動かす方法を教えてください php5.0.5 Winxpです
ちょっと伺いたいのですが、 php5からjavaは使えないのですか? php4はできるみたいですが。
>>532 まず PHP5 で Java が使えないと思った理由を教えてもらおうか。
>>533 phpマニュアルのphp/javaの連携という項目で、
php4/ext/java/READMEに手順が書いてあるといっていますが、
存在しません。また、php4の設定方法はサイトがあるんですが、
その方法ではphp5で使えません。
peclに移動になっただけでphp4と同じ手順でおk ただ実用性はあんま無いと思う
537 :
nobodyさん :2005/12/08(木) 15:13:55 ID:IuQb+C4+
ライブラリのインストールってどうやるんすか? マニュアル英語だし「ライブラリ インストール」などで検索かけても、 それっぽい解説サイトが見つからないので・・・。 winでgdlibraryってのを入れたいです。
>>537 php_gd2.dllならバイナリのパッケージに入ってるだろ
実行しているプログラムのファイル名を取得する関数はありますか?
>>540 $_SERVER['PHP_SELF']
$_SERVER['SCRIPT_NAME']
あたりでは?
プロセスは複数のソースファイルからコードをピックアップするのは よくあることだが
543 :
537 :2005/12/08(木) 15:55:09 ID:???
>>538 インストーラの方で既にインストールしてあるんです。
追加できないものかなーって。
>>539 検索して出てくるのがLinuxのサイトばかりな気がします。
もう少し粘ってみますけど・・・。
GDのデベロッパに質問したおした馬鹿がいたのか PHPに見られるとへんたいだな
546 :
537 :2005/12/08(木) 16:26:47 ID:???
こんなCGI捜してます って感じのスレはないですか?
Web製作にある
あああ そっちにありましたか! マジ蟻がd
>>537 dllで気づけよ。
つ php.ini
551 :
537 :2005/12/08(木) 17:32:24 ID:???
やたー!できましーたー!みなさんありがちょちょん。
552 :
nobodyさん :2005/12/08(木) 17:54:43 ID:AkLZQBwk
特定のlinuxコマンドを特定のUnix ユーザの権限で動作させたいのですが、 どんな方法があるでしょうか? ちなみにUnixユーザはsshは使えませんが、 ID/PASSWORDはわかります。 またUnixユーザは複数いてphp内で状況によって切り替えるように したいと考えています。 動作させる権限を気にしなければ、exec()とかでいいと思うのですが・・・
553 :
552 :2005/12/08(木) 18:29:56 ID:???
su使えばいけるような気がしたのですが、 passthru("su userid"); passthru("password"); passthru("whoami"); ではユーザの切り替えができませんでした。 対話形式?だから無理なのでしょうか? ヒントだけでも貰えたら幸いです
apache_2.0.55のWindows版でPHP5.1.1のWin版をモジュールとして読み込ませたいのですが, 設定の仕方が分かりません。PHPは解凍しただけです。 httpd.confに以下を追加したのですがまだ他に足りないのがあるでしょうか? LoadModule php5_module "D:/tool/php_for_Win32/exe/php5apache2.dll" AddType application/x-httpd-php .php # configure the path to php.ini PHPIniDir "D:/tool/php_for_Win32/exe"
>>553 スクリプトファイルを作ってexec()は?
ワロスw
ちょっと基本的なことを教えてくださ $iとかに数値を入れて扱うとこれってshortつうか16ビットですか?
558 :
553 :2005/12/08(木) 19:12:45 ID:???
>>555 setuidとかsuexecにするということでしょうか?
useridを動的に変えたいので、その方法だとユーザ分スクリプトを作る必要が
出てきてかなり厳しいかなと。
色々とぐぐって見たのですが、sudoしろとかいった内容しか見つかりません。
sshでアクセスする場合などのパスワードなんかを聞いてくるような
場合の処理はphpでは不可能でファイナルアンサーでしょうか?
mail()関数のadditional_headersにFromなどを入力する際、 ヘッダの改竄を防ぐためにどのようなサニタイズを行ったら良いのでしょうか?
562 :
nobodyさん :2005/12/08(木) 21:38:33 ID:uvzNzscr
まぁ、要求は満たせるな
for($s=0; $s<count($d_file); $s++){ echo "<FORM ACTION='next.php' METHOD='POST'>"; echo "<CENTER><INPUT type='submit' name='add$s' value='ぽち'></CENTER></FORM>"; } とした場合、ぽちボタンが押された時〜を実行するという記述をしたいのですが、 if ($_SERVER["REQUEST_METHOD"]=="POST"){ if (isset($add$s)){ 〜実行部分〜 } としても、エラーを吐くみたいです。 $add$sあたりが怪しいと思うのですが、どう書けばいいでしょうか? } とした場合、ぽちボタンが押された
表示ばぐったみたいです。 if ($_SERVER["REQUEST_METHOD"]=="POST"){ if (isset($add$s)){ 〜実行部分〜 } } です。
>>567 どんなエラーが出てるかも分からないのに
何を解決しろと言うのか
570 :
567 :2005/12/09(金) 10:59:23 ID:???
>>569 すいません、そうですよね。
25行目のdie("Error: " . PDF_get_errmsg($p));でParse Error
31行目のPDF_begin_page_ext($p, 595, 842, "");でFatal error: Call to undefined function: pdf_begin_page_ext()
33行目の$font = PDF_load_font($p, "KozMinPro-Regular-Acro", "Ext-RKSJ-H", "");で上と同じエラー
今のところこういう感じです。
>>570 PDFlibをインクルードしてないからじゃねーの?
>>565 おまえもどんなエラーだか明記しろよ。
つーか、POSTされたものは$_POST[]だろ。
ま、register_globals=onなら別だが。
syntax err
574 :
567 :2005/12/09(金) 11:21:57 ID:???
>>571 すいません、どのようにすればインクルードできるのですか?
何分素人なもので、よく分からなくて…。
>>574 あ、ちと勘違いだ。
PDF PHP インストールでぐぐってみて。
要するに、PDFlibで使えるようになる関数がundefined functionなわけ。
つまりちゃんといんすとーるされてないってことだから。
dl("libpdf_php.dll");
577 :
567 :2005/12/09(金) 11:39:26 ID:???
>>575 ありがとうございます。それでやってみます。
>>577 libpdf_php.dllってファイル持ってるのかよ
そもそもphp.iniを読み込めてないんじゃないの
phpinfo();で確認しろ
>>567 そこの記述は古いのでエラーがでるのが正常です
もう使えない関数を使ってます
他のwebから指定されたタグ以降を取得するような サンプルソースってどこかないですかね?
581 :
567 :2005/12/09(金) 12:05:53 ID:???
>>578 libpdf_php.dllは、PHPのextensionsフォルダにあります。今確認しましたが、
認識はしてくれているようです。
>>579 そうなんですか…。では、なんとか他の方法を探ってみます。
お二人ともありがとうございました
最初にマニュアルを読んでない時点でお前は負け組みなんだよ
>>581 phpinfoでPDFlibのバージョンチェック
PDFlib GmbH Version が6以上ならPDF_begin_page_extが使える
5なら使えないのでDF_begin_page関数に変える
>>580 file()で配列にしちゃえば後は簡単なんじゃ。
配列にタグ入ってるかチェックしてそれまでを削除で完了
>>581 PDFlibでぐぐればほかにもいろいろあるから探して。
で、これって有償なのは分かっている?
指定したサイトに自動でジャンプってphpでできますか?
587 :
580 :2005/12/09(金) 12:22:24 ID:???
589 :
567 :2005/12/09(金) 12:39:51 ID:HHj6b6mW
>>583 バージョンは6.0.1でしたが、PDF_begin_pageしか動かないようでした。
>>585 ありがとうございます。それは承知しています。
590 :
565 :2005/12/09(金) 13:26:31 ID:???
すみません、説明不足です。 next.php内で if ($_SERVER["REQUEST_METHOD"]=="POST"){ for($i=0;$i<20;$i++){ if (isset($add$i)){ 実行部分 のように、POSTされてきたのが、$add0だったら〜、$add1だったら〜、$add2だったら〜・・・ としていきたいのですが、$add$iの書き方がまずいらしく、エラーが出ます。 $add[$i]と書くとエラーは出ませんでしたが、上手く作動しませんでした。 一つ手前のphpのフォームの部分は for($s=0; $s<count($d_file); $s++){ echo "<FORM ACTION='next.php' METHOD='POST'>"; echo "<CENTER><INPUT type='submit' name='add$s' value='ぽち'></CENTER></FORM>"; } といった感じで、ボタン毎にadd0 , add1 , add2・・・となっています。 といった感じです。 下記エラー内容です。 「Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ')' 」 ラインは、「 if (isset($add$i)){」この部分でした。 解決策があれば、教えて下さい。
592 :
nobodyさん :2005/12/09(金) 13:49:39 ID:hr0We1go
文字列連結すりゃいいんじゃねーの?
>>591 ,592
ありがとうございます。
しかし、色々試行錯誤するも出来ないのです
もう少しヒントを下さい
>>593 今回だけだぞ。
ヒント: $add{$i}
ホントに下らない質問だから、次回からはきちんと調べるようにwww
>>590 確かめてないけど
for($s=0; $s<count($d_file); $s++){
echo "<FORM ACTION='next.php' METHOD='POST'>";
echo "<CENTER><INPUT type='submit' name='add[$s]' value='ぽち'></CENTER></FORM>";
}
isset($add[$i])
>>594 ,595
出来ました、ありがとうございましたm(_ _)m
>>596 つーかさ、さっきも書いたけどregister_global=onでプログラムするなって。
598 :
nobodyさん :2005/12/09(金) 15:09:37 ID:AOiVoXBq
MySQL+PHPでやってます。 SQLのint型のフィールドに放り込んである値を mysql_fetch_arrayで取り出してそのまますぐにtypegetに入れたらstring ってでるんですけど、これはいったい・・・。 型変換すればいいんですけど、どういう時にこういうことがおきるんすか?
599 :
598 :2005/12/09(金) 15:10:43 ID:???
あ、先にSQLの方で質問したらどうもPHPの方の問題だと言われたので、 こっちで改めて質問しなおしてます。マルチっぽくてスイマセン。
DBからレコードを取り出すとき
>>597 あら、PHP5で register_globalをonにした覚えが無いのでoffのはずなんですがorz
デフォでoffですよね
602 :
598 :2005/12/09(金) 15:44:28 ID:???
うへ。 じゃあDBでどのような型に入ってたとしても、 PHPに読み込むと必ず文字列になると認識をして無いと危険と言うことですね。
>>601 じゃ、add$iでポストされた変数はを$add$iじゃなくて、
$_POST['add{$i}']だろ。
キャストする理由が思い浮かばないが
>>603 何故かそれだと出来なくて、 add[$i]でポストされたのを、
if ($_SERVER["REQUEST_METHOD"]=="POST"){
for($i=0;$i<count($rp);$i++){
if (isset($add[$i])){
で受け取れています・・・。
globalはoffなんですが、どうしてでしょうかorz
失礼しました、add[$s]でポストされたのです。
最初あたりでextractしてんじゃないの?そこらじゅうにサンプルとしてあるから真似したくなるけど、よくあるダメソース。
>>606 add[$i]でポストされたものなら、
$_POST['add'][$i]
だろ。
>>610 意見ありがとうございます。
add0でポストされていても、i=2になっていたりするので、上手くいかないのですorz
breakしてないからかもですが・・・。
現状で上手く動作してるので妥協してるのですが、もう少しいじってみます。
$fruit =array("りんご","ばなな","めろん","いちご/ぶどう/なし"); となっていて、配列$fruitにぶどうがある場合、falseにしたいんですけど、 これって、list($f[0],$f[1],$f[2]) = expload("/",$fruit[3]); みたいに分解してからチェックするしかないですかね? スマートなやり方があれば教えて欲しいんですけれど、公式でarrayの関数順番に見るもそういう関数が見当たらないので(´д`)
よし俺がスルー
>>612 配列$fruitにぶどうがある場合って、"いちご/ぶどう/なし"が要素にある場合も含めるの?
だったらpreg_grepかな。
>>614 でもって、「ぶどう」のみならin_arrrayと。
>>614615 様
ぶどうのみなのでin_arrayかな・・・。
となると、
$fruit =array("りんご","ばなな","めろん","いちご/ぶどう/なし"); で、
if(in_array("ぶどう","$fruit)){
echo "ぶどうあり。"
}
だと、trueって事ですか・・・。
しらなかったです。ありがとう!
先生、ぶどうありって出ません゜ + 。・゜・(ノД`)
HAHAHA! in_array()のマニュアルよく読んでみ
>>617 だから、
614が"いちご/ぶどう/なし"が要素にある場合も含めるのかって書いてるじゃん。
正規表現まだ勉強してなかったんですけれど、これむずいですね(ノД`) 特殊な法則みたいなの覚えないと駄目みたい・・・。 取り合えずはexploadで分解してチェックする事にしますorz
621 :
nobodyさん :2005/12/09(金) 18:42:56 ID:JUWxzeIo
ImageCopy関数で、 画像のサイズは指定し縮小はできますが、画像の容量を指定し 縮小する方法はありませんでしょうか? 50KB 横240 縦180 ↓ 10KB 横* 縦*
無い
>>620 よ expload じゃない。explode だ。英語頑張ろうな。
設置したsubmitボタンをある条件を満たすと他のボタンに取り替えるという事はできますでしょうか? ご存知の方やり方を教えて頂けると幸いです。
$_GETや$_POST、$_SESSIONなどの変数の値に応じて変更させるとか。
ありがとうございます。 既にボタンを設置した後だと駄目なんですかねぇ・・・。
(゚Д゚)ハァ?
いえ、submitのようなボタンにも、str_replaceのような関数があればいいなと思ったんです。 意味不明な事言ってたらすみませんm(._.)m
>>631 それはJavaScriptでできるだろうが
あぁぁ、JavaScriptですか、なるほど! ありがとうございます!
アホだ・・・
ログイン後の各ページで、ログイン状態か否かをセッションで 判定してます。 [login.php] ini_set('session.gc_maxlifetime', "3600"); session_start(); $_SESSION["lid"] = $hogehoge; header("Location: index.php"); [各ページ] ini_set("session.gc_maxlifetime", "3600"); session_start(); if (!isset($_SESSION["lid"])){ header("Location: login.php"); } gc起動して掃除→login.phpへリダイレクトされるまで 3600秒のハズですが、 なぜかデフォルトの1440秒でセッションが切れ、login.phpへリダイレクトしてしまいます。 session.gc_maxlifetimeの内容をdumpしてみたのですが、ローカルでは3600に なっているようです。 共用サーバーなのでphp.iniの直接変更はできません。 どうにも原因がつかめません。 解決の糸口はありますでしょうか…
>>635 連鯖だとセッションを同じところに保存するかもしれないので無理かも
phpinfoでsession.save_path見てみれ。/tmpなんぞになってると他人に
GCされてる可能性蟻
.htaccessでphp_valueが設定できるならsession.save_pathを指定するか
session_save_path()して変更して確認してみれ
638 :
nobodyさん :2005/12/10(土) 12:03:17 ID:A5Y35bGz
GDライブラリを使って動的に画像を変更させたいです。 (例えば生徒の点数を入力すると点数の分布の折れ線グラフが出るとか) イメージを表示するファイルの変数をdefineとかで記して、 直接ファイルを書き換える以外に方法はありますか? できたらファイルを弄らずに関数みたいに出来たらと思うんですが。
>>638 画像ファイルをいじるのではなく、その都度生成すれば?
Win版 PHP5 + Apache2で環境作っててハマってます。 症状: GDやMb_Stringなど追加モジュールが、Apacheから php5apache2.dllモジュール経由だとロードできてないが、 同じスクリプトを、コマンドラインから php.exeで実行すると追加モジュールのロードはできる。 環境: Apache 2.0.55 + PHP 5.1.1および5.1.2-dev ※httpd.conf LoadModule php5_module D:\php\php5apache2.dll AddType application/x-httpd-php .php ※php.ini #php.ini-distからの変更点 magic_quotes_gpc = Off extension_dir = "D:/php/ext" upload_tmp_dir = "C:/tmp" extension=php_exif.dll extension=php_gd2.dll extension=php_mysql.dll extension=php_mbstring.dll Linuxで自分でビルドする方が楽だと思う今日この頃。
>>640 php.ini自体が読み込めてないんじゃないの
phpinfo()で確認してみ
>>642 さんくす、ビンゴだった。
Win版は、C:\WinNT に php.ini 置かないといけないのね…。
Linux, Unixでしか環境作ったことないから、php.ini は、
インストールディレクトリで良いとばっかり思ってたよ。
>>643 俺はいちいちコピーするのがめんどくさいので
httpd.confに
PHPIniDir "C:\php5.1"
と書いてる
645 :
nobodyさん :2005/12/10(土) 13:02:21 ID:9PXirItw
参照渡しについて質問なのですが 仕事で見せられた規約には「なるべく参照渡しを使え、理由は値渡しよりパフォーマンスがあがるから」ということです。 理由付けはどうでもいいのですが、既存の他の人のコードを見ると参照渡しの実際の書き方についていくつか方法があるようで私なりに意味を考えたのですがおかしいところがあればつっこんで欲しいのです 1番 $obj = &new Object(); $objには(どこかに実体が存在している名前無しのnew Object()の)参照が入る 2番 function &getValue() { return $obj;} $objは実体(インスタンス)だが $retObj = getValue();で取得した$retObjは$objの参照となる 3番 function &getValue(){}を呼び出すとき $retObj = &getValue(); $retObj = getValue(); のどちらでも変わらない 両方とも結果の参照が入る(2番と同じ状態になる) 4番 function getValue(){}を呼び出すとき $retObj = &getValue(); は結果の参照が入る(2番と同じ状態になる) $retObj = getValue(); は結果のコピーが入る 5番 $strVal1 = &$strVal2; 参照が入る? 6番 function setValue(&$strVal){$this->val=$strVal} 5番と同じ状態になる? 7番 function setValue(&$strVal){$this->val=$strVal} となっている状態で $strMyVal = "abc"; setValue($strMyVal); とやると、$strMyValの参照が自動的に渡される 8番 上記7番の状態で setValue(&$strMyVal); を呼び出すと・・・?どうなる?
646 :
645 :2005/12/10(土) 13:06:23 ID:9PXirItw
という風に、双方向から&を使うとわけがわからなくなるので 関数の引数はdefineで定義したものも入れたいこともあるでしょうから すべて function setValue($strValu)と&無しで書いて 呼び出し元の方で参照を渡すのか参照を取得のか↓したほうが混乱しないと思うんですが・・・ // 呼び出し setValue(&$strTest); // 取得 $strVal = &getValue();
>>644 そっちの方がスマートなんで、それ採用。
ありがとです。
>>646 call_time_pass_reference はそのうちサポートされなくなるらしいよ。
その呼び出し時に参照を渡すって奴ね。
>>646 マニュアルにもそう書いてあるしね。
一番の解決法はPHP5を使う
650 :
638 :2005/12/10(土) 14:40:59 ID:???
>>639 やー、何かファイル作ったりとか怖いんで。
初心者につきビビリーです。
>>641 便利そうなのかな。ちょっと試してみますね。
>>45 1番参照
2番はコピー
3番は上は参照、下はコピー
4番どちらもコピー
5番参照
6番コピー
7番コピー
8番コピー
マニュアルにある通り、参照を受け取っても=演算子を使えばコピーされる
>>646 はphp4で書くなら悪くない選択
ちなみに「リファレンスが高パフォーマンス」はよくあるガイセビア
これが正しいのはメソッド内でパラメータを「書き換える」場合のみ
その他の場合ではコピーオンライトなPHPでは参照を使ったほうが
遅いしメモリ喰い
参照で受けたパラメータをコピーすると(6番のケース)値コピーで
渡す場合にくらべて1000倍ほど時間がかかってビビるのは初心者に
ありがち
駄目なコーディング規約を嘆きつつ、次のプロジェクトでは規約の
改定に挑みましょう
>
>>646 はphp4で書くなら悪くない選択
えぇぇぇぇ!?
同じ理由でこれも遅い。 setValue($strVal) { $this->val =& $strVal; } } $obj->setValue($strMyVal); or $obj->setValue(MY_CONST); まあ実行コストの話は置いておいて、関数がなぜデフォルトで 値渡しなのか小一時間考えたほうがいいかもね。
654 :
645 :2005/12/10(土) 16:19:23 ID:???
皆さん ありがとうございます >参照で受けたパラメータをコピーすると(6番のケース)値コピーで >渡す場合にくらべて1000倍ほど時間がかかってビビるのは初心者に >ありがち あーなんか始めたばっかりのころ、 ぜんぜん画面が出ないなぁと思って 「&」 消したら直ったことがあったのですが そういう理由だったんですねぇ そのときから、「&」に対して避けて通ってきた 関数に渡すときに、その値を関数内で変更する必要があるとき以外は普通に書いておいたほうがよいのでしょうかね?
半角スペースを区切り文字としてそれぞれ文字列に格納したいのですが、 (例:「1 2 3」を$a=1,$b=2,$c=3といった具合) 半角スペースが区切り文字だと何か不安です。 環境によっては上手く動作しないような。杞憂でしょうか?
657 :
nobodyさん :2005/12/10(土) 16:49:21 ID:vDRN2V5d
>>656 不安って…EBCDIC環境とかか?
ASCIIコードが使えない環境まで考慮するのは考えすぎじゃないのか?
>>657 なんでPerlスクリプトの質問をここでするん?
なんだったら\x20で書き出せば
661 :
nobodyさん :2005/12/10(土) 20:05:54 ID:UVx/Wp+9
phpのインストールについてはこのスレでいいんでしょうか? もし、専用のスレがあれば誘導をお願いします。 現在、RedHatEnterpriseLinux3 ES を使っています。 Apache : 2.2.0 php : 4.4.1 をソースからのコンパイルでインストールしています。 上記環境で、SimpleXMLを使用したく、phpのconfigureオプションに--enable-simplexmlを追加して コンパイル→インストールを行ったのですが、simplexml_load_file(FILE)関数が"undefined function"となってしまいます。 コンパイル時やインストール時には、エラーの類は出ておりません。 phpinfo()のConfigure Commandにもちゃんと--enable-simplexmlが表示されています。 PHP4でのSimpleXMLの情報が少なく行き詰ってしまいました。 php-4.4.1にてSimpleXMLを使用するにはどうすればいいのでしょうか? 宜しくお願いします。
>>661 SimpleXMLってPHP4にバックポートされたの?PHP5のみだと思うけど。
マニュアルのsimplexml_load_file()の項とか
configureオプション(マニュアルじゃなくてソースの方)を確認してみな。
>>664 すみません。ありがとうございます。
今、手持ちの本を見返して見た所、
「SimpleXMLを使用するにはconfigureオプションで組み込むか、PHP5からは標準で組み込まれた・・・」
というような書き方がされていまして、てっきりconfigureオプションで組み込めるものだと思い込んでいました。
>>663 のサポートボードの質問に対して、
xreaのWebmasterが4.4.2に入れ替える時に検討します。って返事かいているもんで、完全に勘違いしておりました。
そのサポートボードにも、他のPHP4系へのSimpleXML導入してください。ってメッセージもありました・・・
666 :
nobodyさん :2005/12/11(日) 00:07:12 ID:CWApnEja
667 :
nobodyさん :2005/12/11(日) 00:11:00 ID:CWApnEja
失敗
xreaに
http://php.s3.to/net/kusi.phpsをアップしてパーミッションもちゃんと設定したんですが 、
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen().
If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer.
in /virtual/アカウント名/public_html/kusi3.php(ファイル名) on line 76
とエラー表示されてしまいます。使用はできるんですが動作が重いような気がします。tok2などの鯖では正常に動作しました。
何が原因でしょうか?スクリプトに文法的な間違いがあるのでしょうか?
_, ._ (;゚ Д゚) 俺にはwarningに見えるんだが?
warningってなに?
>>667 エラーメッセージに書いてあるそのまんまなんだけどな。英語読めないとか言うなよ。
元々xreaではその手のCGIは歓迎されておらず、制限が厳しめになっている。
671 :
nobodyさん :2005/12/11(日) 00:21:12 ID:CWApnEja
頑張ってよんでみたんですが allow_call_time_pass_referenceを設定すればOK?ただし推奨しない? わからん・・・つまりxreaに嫌われてて対処法はないってことですか?
warningってことはつまり無視して良いよって事だよ
673 :
667 :2005/12/11(日) 00:25:07 ID:???
本当はおまえらわかんないだけだろ?直せないなら最初から正直に言えよな。
WinXP+Apache2.0.54.0+PHP5.1.1でapacheを停止させるとphp_mysql.dllで エラー吐いてる人って居ない?。必ずエラーはくんだが・・・・。
675 :
667 :2005/12/11(日) 00:36:01 ID:CWApnEja
>>673 エラーのまんまじゃん、そのソースの76行目
$fp = fsockopen($host, 80, &$errno, &$errstr, $time_out);
実体参照使っている。xreaのPHPは実体参照時にWarningがでる。
実体参照を使わずに、一時変数を使って場を凌げ。
じ、実体参照ぉ? 一時変数っていうか、&とればいいのでは?
微妙に香ばしいな >ID:CWApnEja
2ちゃんで自演でもしようとたくらんでんじゃね?
まぁどのみち
>>667 のスクリプトでは、改良しない限り書き込みできないがw
681 :
635 :2005/12/11(日) 01:55:45 ID:???
変数$a = 1,2,3,4 で1〜4をランダムに削除したい場合どんな方法があるでしょうか? 例:$a = 1,3,4 考えたのが$aを配列に返還して、要素を抜き取るって 再度結合というのなんですが、一部の要素を抜き取る方法がわかりません。 お助けを。
683 :
682 :2005/12/11(日) 02:59:30 ID:???
日本語ごちゃごちゃですな、深夜なのでスマソ
$a = '1,2,3,4';か? それならexplode。
>>682 配列から一部の要素を削除するには
array_splice(), array_shift(), array_pop(), unset()
のいずれかを使えばOK
$a = "1,2,3,4"; $b = explode(",",$a); array_splice($b,array_rand($b),1); $c = implode(",",$b);
計算機のようなものを作っているんですけど、 1度入力したものが計算と同時にリセットされてしまいます。 クッキーを使う以外の方法で直前にポストしたものを、 また表示するというようなことはできないでしょうか? <option>タグでプルダウン形式にしてるので、 クッキーを使う方法だと難しそうなのでできないのです。
>>687 どうやっているのかが書かれていないので想像するしかないんだが、
> 計算と同時にリセット
つーのが考え違いしてるんじゃないかな?
フォーム要素に初期値(デフォルト値)を設定していないものを
単に"新しく"読み込んでいるだけっしょ。
ならば、"適切に"初期値を設定してやればいいっしょ。これはHTMLレベルの知識っしょ。
689 :
687 :2005/12/11(日) 07:42:22 ID:???
>>688 レスどうもありがとうございます。
わかりづらくてすみません。
入力フォームと、結果を表示するフォームをわけているんですが、
計算実行のボタンを押して、
結果を表示しつつも、入力フォームを残すようにしています。
計算実行のボタンをおした時に、
入力フォームの値がデフォルト値に戻ってしまうので困っています。
ソースですが
$a=$_POST['a'];
$b=$_POST['b'];
$c=$a+$b;
print $c;
html側は
<form method="post" action="$_SERVER['PHP_SELF']">
<select name="a">
<option value="1">1</option>
<option value="2">2</option>
</select>
+
<select name="b">
<option value="1">1</option>
<option value="2">2</option>
</select>
こんな感じです。
デフォルトでは1+1になりますが、
2+2を選択して計算を実行したあとに、1+1に戻ってしまいます。
これを2+2のままにしたいということです。
フォームの出力の際に、<option 〜 selected>のようにして、適切なoptionを選択状態にすればいいよ。 そうすれば、まるで選択したものが残っているかのように見えるから。
>>689 688さんが言われるとおり,HTMLの問題だよ.
option要素にselected属性を使う.
a,bの値で条件判定して,初期選択にしたい方に
<option value="N" selected="selected">N</option>
となるようにPHPを書けばOK.書き方はいろいろあるから,考えてみて.
692 :
687 :2005/12/11(日) 07:57:30 ID:???
>>688 >>690 >>691 皆様どうもありがとうございます。
1をselectedにして、2を選択したところ、
selected(1)に戻ってしまいました。
どうも考え方が間違ってるようなので
頑張って考えて方法を探したいと思います。
693 :
691 :2005/12/11(日) 08:03:41 ID:???
>>692 >1をselectedにして、2を選択したところ、
>selected(1)に戻ってしまいました。
…当たり前じゃん.1が初期選択になっているんだから.
$_POSTの値によって,どれをselectedにするかをPHPで書くんだよ.
2だったら,1じゃなくて,2にselectedを指定しなきゃ.
694 :
687 :2005/12/11(日) 08:06:11 ID:???
>>693 >$_POSTの値によって,どれをselectedにするかをPHPで書くんだよ.
これはいいヒントをどうもありがとうございます!
頭が固いもんでorz
早速書き直してみたいと思います。
関係ないけどSELECTのデフォ指定ってベタ書きするのめんどくさいよね
もしかして、クラスメンバの宣言でPHP4互換のvarではなく publicやprotected、privateと宣言した方がパフォーマンス良いの? 書き換えていったら動作が機敏になった・・・
<OPTION VALUE="1"<?php if ($a == 1) { echo " checked"; } ?>>あ</OPTION>
みにくーい
埋め込みは嫌いなのでタグの出力は全部echoなりで括るのがマイルール
<?= ($a==1) ' checked' : ''?>でいいじゃないか。
>>689 いっそ入力フォームのページと結果のページを分けてしまって、
別targetのウインドウで結果ページを出してしまうとか。
そうすれば入力側のリロードは発生しないから入力内容を再現する必要なし。
ブラウザが別に立ち上がってしまうのがイヤならframeかiframeで。
>>699 俺はむしろPHPコードの中にHTMLタグが埋め込まれてるのが嫌いなので
echoでHTMLタグを出力するのは絶対禁止派。
あと、HTMLの中に<?〜?>を埋め込むスタイルならPeggyとかで
閉じタグジャンプが使えるので、閉じ忘れなどのミスも防ぎやすい。
>>697 が何百行もあると鬱になるなあ。
JSPでこれをやったら半殺しの刑にされるけど。
>>697 俺は普段こう書いてる
<OPTION VALUE="1"<?php if($a == 1) { ?> checked<?php } ?>>あ</OPTION>
>>703 たくさん必要なら関数作るだろうからあんなの何行も書くことはないだろ。
プルダウンやテキストボックスなんかはフォーマットが決まっているから関数にし易いし。
おれ、Smarty使ってるんで関係ないや
checkedじゃなくて selectedじゃね?
一度の読み込みで画像の容量、横縦サイズを取る方法はありませんか? $file_name = "sample.jpg"; $size = filesize("$file_name"); $im_in = ImageCreateFromJPEG("$file_name"); $ix = ImageSX($im_in); $iy = ImageSY($im_in); print "サイズ:{$size} 横縦:{$ix}x{$iy}";
getimagesize 大きさだけ
>>709 「一度で」ってのは無い。
filesize
と
getimagesize
二回やってもたいしたこたねぇよ。
(少なくともimageオブジェクトつくるよりゃ)
サンプルプルプルプルップルッ!
別窓でリンクを開く方法を教えてください
HTMLだろ
そうなんですけどheader関数でheader( "Location: URL" );で開く場合に 別窓で出す方法を教えてください
>>613 あり得ない。
より良い理解のために、サーバーでの処理とクライアントでの処理を分けてよく考えた方がいい。
ヒント:別窓を開くのは誰の仕事なのか?なにをキーに別窓を開くのか?
スルー出来てないぞ
move_uploaded_file($_FILES['a']['tmp_name'][$i],uniqid());だとファイルが生成されないのは 何故でしょうか?。uniqid()の代わりに'test.dat'とすると正しくファイルが生成されます。 uniqid()で生成される文字列にファイル名に利用出来ない文字が含まれているのでしょうか?。
>>720 おそらく、uniqid() の時点でエラーになっている物と思われ。
move_uploadfileする前に、
$outfile = uniqid();
ってやってみ。
※エラー出力はonにしてからね。
error_reporting(E_ALL); ini_set('display_errors',1); echo uniqid(); 結果 439d1ea43d094 それがエラーも出ない 「439d1ea43d094」という文字列に問題があるとも思えないし・・・
>>720 $file = uniqid();
touch($file);
move_uploaded_file($_FILES['a']['tmp_name'][$i], $file);
「速効!図解プログラミングPHP + MySQL」PHP5対応 この本買おうと思ってるんだけど、 今使ってる鯖は3,4までしか対応してないみたい。(xreaの34鯖) まったくphp触ったことないので 試しながらやる時に、バージョン違いによる不具合とか出て 困ること多いのかなぁ〜と心配なんですが、だいじょーび?
>>723 だめですね。それでもファイルが作成されません。
WindowsXP+PHP5.1.1+Apache2.0.54.0かな。
move_uploaded_file($_FILES['a']['tmp_name'][$i],$_FILES['a']['name'][$i]);
ではsjis環境で日本語ファイル名ですら作成できるのですけどね。
>>725 >>723 のコードでファイルが作成されない、ってことはmove_uploaded_file以前の問題だよね。
先の結果の439d1ea43d094を使って
<?php
touch('439d1ea43d094');
?>
とか、エクスプローラで問題のディレクトリに439d1ea43d094という名前のファイルを作ってみるとか
別のディレクトリに作るとどうなるかとか、調べてみれば?
ファイルシステムの制限とかあるのかな。。。
そのディレクトリが存在するドライブはNTFS?
共有鯖でテストイクナイ
WindowsXPの共有鯖なぞ希少だな
>>724 PHPはバージョン違いによる苦しみが他の言語の数倍多い。
おまけに質問時に本と環境でバージョン違うんですがとか言ったら
バカジャネーノ?とタコ殴りにあうことうけあい。
バージョン間で何が違うのかをまず勉強して、把握した上でその本を使うならOK
731 :
725 :2005/12/12(月) 18:51:34 ID:???
touch('439d1ea43d094'); ← ファイル作成成功 $name = uniqid(); echo $name; ← 結果 : 439d471cc9f9c touch($name); ← 結果 : ファイル作成失敗 touch($name+'add'); ← 結果 : 439というファイル名が生成出来た・・・d以降は何処に・・・ どういうこっちゃねん。エロイ人、理由を教えてっ!!。 共有鯖ではないよ
732 :
725 :2005/12/12(月) 19:00:26 ID:???
move_uploaded_fileをコメントアウトして気づいたのですがmove_uploaded_fileがファイルを 削除してくれるみたいです。 touch($name+'add'); 間抜けだった・・・ touch($name.'add');でしたね(^^; touch($name); ← ファイル作成されてた move_uploaded_file($_FILES['a']['tmp_name'][$i],$name); ← どういうわけか、ここでファイルげ消されてる
>>731 + は 文字列の結合演算子では無い。
なので前後のオペランド($nameと'add'の事)は数値(整数値)として評価される。
$nameは、有効な数値部分439がその値として使われ、
'add'は有効な数値部分が無いので 0 として使われる。
そして、その結果は 439 + 0 = 439となる。
割り算したら少数になるんですが、これをCみたいに切り捨てする方法を教えてください
735 :
725 :2005/12/12(月) 19:35:27 ID:???
アンケート等でラジオボタンを使用するとき送信を押した後、 選択したラジオボタンが選択されたまま、ラジオボタンを表示させるにはどうすればいい?
エスパーキボンヌ
選択したいラジオボタンに checked を付けて出力する PHPではなくHTMLの話でしょ? <input type="radio" name="hoge" value="xxx" checked>aaaa
>>689 - あたりと同じ事じゃね?
見た目が「あたかも」選択されたままになっているだけで、
実際には全く新しいページとしてラジオボタンが表示される。
選択状態のラジオボタンを表示したいなら、checkedを付けたradioを出力すればいいだけ。
>>689 と同じということで
とりあえず
>>704 をみて
<input type="radio" name="SEX" value="1"
<?php if($SEX == "男性"){ ?>
checked
<?php } ?>
>男性
<input type="radio" name="SEX" value="2"
<?php if($SEX == "女性"){ ?>
checked
<?php } ?>
>女性
って書いたんだけど間違ってる?
a.phpに<?include("
http://hogehoge.hoge/b.php ");?>と記述すれば
b.phpの中身が全部a.phpの中へ挿入されます。
しかし全部ではなく一部を挿入させたい場合はどのようにすればよいのでしょうか?
例えばb.phpの中に
<div id="a">
<p>ほげほげほげほげ</p>
</div>
<div id="b">
<p>HOGEHOGEHOGE</p>
<p>hogehogehogehoge</p>
</div>
<div id="b">
<p>ホゲホゲホゲホゲ</p>
</div>
という内容があって、<div id="b">のdivボックスだけ抜き出してa.phpに挿入するにはどうしたらよいのでしょうか?
スクリプトを教えてください。m(_ _)m
>>742 質問文がなんかヤラシイ(*^^*)
それはともかく、b.phpはphpである必要はなさそうだし、
includeの使い方としては方向性が違っている。
file()とか、file_get_contents()とかで読み込んで、
eregとかpregとかでゴニョゴニョするのがよかろう。
744 :
742 :2005/12/12(月) 23:51:51 ID:???
PHP4でクラスのメソッドを呼び出す時、 同じクラスの場合は$this-> 親クラスの場合はparent:: をメソッドの頭に付けて呼び出しますよね。 PHP5では$this->ではなくself::使って呼び出すのが正しいやり方なんでしょうか?
%php -i | grep mbstring mbstring.http_output => UTF-8 => UTF-8 mbstring.internal_encoding => UTF-8 => UTF-8 mbstring.language => Japanese => Japanese こういう設定のサーバで、以下のスクリプトを実行すると、 <?php $str = "システム"; echo mb_internal_encoding() ."\n<br>"; echo mb_detect_encoding($str) ."\n<br>"; $str2 = trim($str, ' , '); echo mb_detect_encoding($str2) ."\n<br>"; mb_convert_variables(mb_internal_encoding(), mb_detect_encoding($str2), $str2); echo mb_detect_encoding($str2) ."\n<br>"; ?> $str2 = trim($str, ' , '); の行で(trimの対象は半角と全角空白です)文字列が 壊れるらしく、 %php test.php UTF-8 UTF-8 SJIS UTF-8 とSJISとみなされてしまいます。 全角空白をtrimするにはどのように書くのが良いのでしょうか。
>>747 PHPのバージョンが4.1.0以上なら
trim
(PHP 3, PHP 4, PHP 5)
trim -- 文字列の先頭および末尾にあるホワイトスペースを取り除く
説明
string trim ( string str [, string charlist] )
注意: オプションのcharlistパラメータは、PHP 4.1.0で追加されました。
charlistパラメータにより、削除する 文字を指定することも可能です。
削除したい全ての文字をリストに してください。..を文字の範囲を指定する際に 使用可能です。
だってさ
>>746 俺は、基本的には$thisで呼び出す。但し、定数だけは、わかり易くするためにself::を使用。
>>747 trimにマルチバイト文字は指定できないよ
755 :
747 :2005/12/13(火) 15:25:02 ID:???
trimにはマルチバイト文字は指定できないんですね。 正規表現かMLの方法で対応したいと思います。 ありがとうございました。
コンボボックス(selectタグ)で項目が変更されたときに処理をしたいのですが どのようにして変更を察知すればいいでしょうか?
>>756 そういうのはクライアントサイドスクリプトのお仕事。
>>758 AJAXみたいに操作するたびにJavaScript経由で毎回通信させれば
PHPも挟めなくはないが、基本的にブラウザで操作中はPHPは動いてもいない。
メール(pop3)のユーザ名とパスワードでサーバに接続し、認証できるかどうかという仕組みを作ってるんですが。 パスワード用のサニタライズはどの文字をすべきでしょうか。 また簡単に出来る関数は無いでしょうか?
とりあえず「サニタライズ」は突っ込むところ?それとも釣? それは兎も角、専用の関数は無かったかと。 一番簡単な方法は、ID/パスワードに使えない文字は通さないようにする。
>>758 出来るけど、PHPはクライアントサイドスクリプトとしてはメジャーじゃないので
そういうのはJavaとかJavascript/VBScriptとかActionScriptとかの
メジャーで、クライアントに実行環境が既にあると期待できる言語を利用するのが常套。
PerlScriptは見たことあるけど、 PHPもクライアントスクリプトとして HTMLに記述とかできるんだっけ?
>>763 いや、JavaやActionScriptと一緒でプラグインされた別エンジンが実行。
だからコンボボックスをhtmlでやらせてる場合には、Javascript等の介在が必要だね。
インラインで記述されたPerlを解釈できるブラウザは存在するの?
ActiveStateがそういうの用意してるんだ。 自分が見た事のあるのとは違うな。 まあ、どっちも実用には…なのは同じような感じだったが。
ActivePerlをインストールすればIEはインラインで扱えるようになるとオモタ
確かに実用では疑問。 個人用かイントラ用だよな。
$a[0] = orange; $a[1] = apple; $a[2] = peach; $a[3] = banana; でkey順に並べる時、 ksort($a); で、key逆順に並べる時 krsort($a); で合ってますよね? krsort($a);が反応しないのですがorz
>$a[0] = orange; >$a[1] = apple; >$a[2] = peach; >$a[3] = banana; ↑何が定義されている? >krsort($a);が反応しないのですがorz 反応って?
>>769 > krsort($a);
> で合ってますよね?
合ってる。
> krsort($a);が反応しないのですがorz
多分、確認方法が間違ってる。
foreach($a as $d) print "$d\n";
なら逆順で出てくるのが確認できると思う。
恐らく
for($i = 0; $i < 4; $i ++) print $a[i]."\n";
みたいな確認方法をしてるんじゃないか。
順番がひっくり返っても、キーで呼び出してたら意味ないぞ。
>>770 すみません、
大きな勘違いでしたorz
$result_data = file($result_file);
krsort($result_data);
for($i=0; $i<count($result_data); $i++){
としていて、何故逆順に表示されないんだろうと思ってたんですけれど、
$result_data = file($result_file);
$result_data = array_values($result_data);
krsort($result_data);
for($i=0; $i<count($result_data); $i++){
でした・・・。
お陰で長く悩んでいた事から開放されましたorzありがとうございます。
>>771 全くその通りでした・・・。
失礼しました(汗
774 :
nobodyさん :2005/12/13(火) 21:14:57 ID:e5VQAK41
$result_data = file($result_file); krsort($result_data); $result_data = array_values($result_data); for($i=0; $i<count($result_data); $i++){ しかも、こうですし(´□`) スレ汚し申し訳ないです。
>>772 > $result_data = file($result_file);
と
> $result_data = file($result_file);
> $result_data = array_values($result_data);
って何が違うんだこれ?
>>772 そんな面倒なことしなくてもこれでいいと思うんだが。
$result_data = file($result_file);
for($i=count($result_data)-1; $i>=0; $i--){
どっちにしろ、そのケースならkrsort()でなくrsort()の方が速いと思う。
778 :
nobodyさん :2005/12/13(火) 21:25:59 ID:e5VQAK41
>>777 なるほど、そうした方が行も減ってスマートですよね。
どうして思いつかなかったのか悔やみます・・・。
勉強になりましたm(__)m
779 :
nobodyさん :2005/12/14(水) 11:32:35 ID:CwjBoKRv
文字を エンティティコードに変換する関数はありますでしょうか? 例えば… & を & に変換するとか…
781 :
nobodyさん :2005/12/14(水) 11:47:17 ID:CwjBoKRv
>>780 おお、ありがとうございます。
マニュアルを探してて検索してたら 403 Forbiddenが出ててこまっておりました。
感謝です。
Googleの検索エンジンロボットがキリバン踏んでしまいました。
htmlspecialchars("
[email protected] ");
こうやってもエンティティ化されないのは何故でしょうか?
本当なら mail@hoge.com となるはずなのですが。
htmlspecialchars関数もやってみたのですが…駄目でした。
784 :
783 :2005/12/14(水) 12:44:48 ID:TiHY5j3U
ID表示します。
数字が出現した以降の文字列を取得したいのですが、 strstr($data,"[0-9]*") ではだめでした。 なにかよい方法はないでしょうか。
>>785 strstrでは正規表現使えない。
自分で関数を書く
>>783 だから、一部だって書いたのに……。
mb_encode_numericentity
789 :
785 :2005/12/14(水) 13:15:21 ID:???
>>786 やはりそれしかないですか。
ありがとうございました。
790 :
725 :2005/12/14(水) 13:29:00 ID:???
move_uploaded_fileの件なんだけどファイル名に数字入るとだめなんですね バグと言って良いのかなぁ・・・ 誰か検証頼みます Apache2.0.54.0+PHP5.1.1+WindowsXP PS2 move_uploaded_file($_FILES['a']['tmp_name'][$i],'./test.jpg'); ← 成功 move_uploaded_file($_FILES['a']['tmp_name'][$i],'./test1.jpg'); ← 失敗
>>790 お前、まさかその2行を同時に書いてるわけじゃないよな
moveは移動だから一回移動したら元は無くなるからね
792 :
725 :2005/12/14(水) 13:55:55 ID:???
>>791 それはない(^^;
なんかmove_uploaded_fileの前に他の処理をすると影響を受けている感じかな
793 :
725 :2005/12/14(水) 14:19:12 ID:???
わかった!! apacheをインストールしたディレクトリに作成されてた(笑 apache入れ替える時に気づいたよ・・・ って、これって問題ないのか(−−;
>>785 preg_replace('/([0-9].*)/)', '\\1', $data);
795 :
794 :2005/12/14(水) 16:13:24 ID:???
書き間違った preg_replace('/([0-9].*)/', '\\1', $data);
>>793 環境変数TEMPの設定ミスじゃないの?
798 :
725 :2005/12/14(水) 17:22:09 ID:???
>>796 いや、tmpにしてもアップロードフォルダにしても弄ってないからc:\woindows\tmp or tempだよ
それに一時ファイルはPHPの処理が終了した時点で消えるしファイル名も違うから間違いないよ
絶対パスを指定しない時に問題があるファイル名とそうでないファイル名があるみたい。
絶対パスで指定したら問題ないみたいだし、まぁ良いかなぁ。
>>793 カレントディレクトリの問題?
DOCUMENT_ROOTはどこになってるんだそれ
800 :
725 :2005/12/14(水) 18:29:23 ID:???
ServerRoot "C:/Server Files/Apache2" DocumentRoot "C:/public_html" おそらくカレントディレクトリの問題。 あぁ、これってroot権限で動いてるような馬鹿鯖でスペース提供してたり するとはっくれるかもね。私は興味ないから挑戦しないけど(^^;。
┐(´ー`)┌
phpでディレクトリ作ってそのディレクトリの中にlogファイルをこしらえようとした。 mkdirでディレクトリの生成には成功したものの、その中にlogファイルをfopenの "a"モードで作成しようとしたらエラーが返された。 Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid is 11040 is not allowed to access /tmp/directory_A owned by uid 1000 よく調べてみると、mkdirで生成したdirectory_Aというディレクトリの所有者がapacheに なっていて、他のuploadしたファイルの所有者が自分のアカウント名だったのと比べて 違っていることが分かった。もうひとつ気になった点は属性が755(rwxr-xr-x)となっていた点かな。 なんとかこのディレクトリの中にファイルを生成できるようにならないかな?
CGI版PHPまたはFTP
>>803 なんで素のPHPじゃディレクトリ作ってその中にファイル作れないかね・・・?
XREAスレの人ですか?
>>804 Apacheさんが作ったディレクトリをどこの馬の骨とも知れない
お前なんぞに弄らせるかよwww ってこと
>>804 つーかsafe_modeの方が素では無い罠
808 :
802 :2005/12/14(水) 23:48:49 ID:???
>>805 ( ´∀`)ノ < そうそう、あっちのスレから島流しにあってきた
>>806-807 xreaに限らずレン鯖はどこもsafe_modeでの運用が多いってことかね( ゚Д゚)?
cgiならディレクトリつくってその中にいくらでもファイル作成できるっていうのに
なんかPHPだけ不公平って感じやな。ディレクトリ作って中にファイル作りたい
なんて需要は結構あるやろ。つ〜か何層も入れ子にしてディレクトリを作りたい
なんて贅沢なことは言わないから、せめて1層のディレクトリを作ってそのなかに
ファイルを生成することくらい許可してくれってことよ、俺が言いたいのは(´ー`)y−~~~
809 :
nobodyさん :2005/12/14(水) 23:57:11 ID:6RnHukHD
簡単そうに思えて、全然思いつかないです。 変数内に$hoge='"hoge1" . "hoge2"' と入っていて、$hogeから、最終的に hoge1hoge2 を得たいのですが、どのようにしたら良いでしょうか?
ディレクトリもファイルも好きなだけ作れる UIDかGIDでの同一性が要求されるだけ 要は「他人のファイルが覗ける」状態をどう考えるか
>>809 それだけなら余計なものを空白に置換するだけでいい
どういうデータを前提してるのかわからんから答えようが無い
CSV的なものなら正規表現で拾ったら?
正直safe_modeなんていう怪しい動きのする機能は使わないのが正解では?
815 :
802 :2005/12/15(木) 01:09:42 ID:???
>>813 > 1個くらいなら自分で作れ
残念ながら月毎に一つフォルダが作られる。
年に1個くらいならそりゃ自分でフォルダくらいつくってもいいですよ、って思えるが
流石に月一は(;´Д`)・・・
そんな物Perlと併用すれば良いだけだろ
読んでないけどまたエスパー希望のアホ質問か ディレクトリの有無なんて設計でどうとでもなるだろうに
読め 即行解答でてる
820 :
802 :2005/12/15(木) 01:31:58 ID:???
>>810 > ディレクトリもファイルも好きなだけ作れる
> UIDかGIDでの同一性が要求されるだけ
>
> 要は「他人のファイルが覗ける」状態をどう考えるか
user権限でPHPにアクセスした結果作られるディレクトリの所有者はapacehだったけど
さらにその中に作られるファイルの所有者もapacheということにすればUID/GIDは同一
だから問題ない気がするけど・・・
>>819 > 今日12個作れよ
( ゚д゚)・・・
(゚Д゚)ハッ!
そのファイル作成を実行してるスクリプトが誰のものか考えろ つーかまずマニュアル読め
まあぶっちゃけこんなとこで聞くよりマニュアル読んだほうが速いよな
プログラム以前にやる気ぐらい出せよ
825 :
802 :2005/12/15(木) 02:33:07 ID:???
やる気か・・・ ニートの俺が今一番欲しいものの中の一つだな(´・ω・`)・・・
systemでmkdir→chmod 777ってのは無理?
chmodしてもumaskの影響があるしなぁ。 まぁ、それ以前にchmod自体が許可されない場合もあるが。
>>809 $hoge='"hoge1" . "hoge2"';
eval('$hogehoge = ' . $hoge . ';');
print $hogehoge;
>>816 せめてCLI版PHPとの併用にしよーぜw
セーフモードでsystem? だいたいパーミッション関係ないし
831 :
802 :2005/12/15(木) 02:55:55 ID:???
>>826 chmodでアクセス権は変更できたけど、ファイルを生成する段階でやはり
「UIDが違う」という理由で失敗するみたい(´・ω・`)ショボーン
mkdir→chown…はさすがに無理か?
>>829 すでにある資源を使えばいいと思うが
XREAがオフィシャルで用意してるものがあるわけで
>>802 だからさ、mod_phpのsafe_modeはそういう仕様なんだから諦めろっての。
CGIで動かすなり何なり手段は残されてるんだからさ。
>>808 > なんかPHPだけ不公平って感じやな。
実行速度を高速にする代わり共有で使うにはセキュリティ的に危険な
Webサーバーのモジュールとして動かそうとしてるための措置。
別に、Perlと同じCGIで動かすようにすればその辺の弊害はなくなる。
その代わり、PerlなCGIよりもっと遅いけどw
プロセスとスレッドで実行速度が変わるというのは新説だな
CGIはシェル経由で呼び出すんだから レスポンスが当然遅いだろが
実行速度
処理速度は一緒。実行速度は遅い。ってことじゃねーの?
>>837 パスを解釈してバイナリ叩いてるのはWeb鯖じゃないのん?
もしかしたらSynchronizeのコストのことを言ってるんです
あー。Winodwsサーバーだとそういう動きになるのか。
Winodwsってなんだw
845 :
nobodyさん :2005/12/15(木) 06:37:41 ID:TFBuiRij
女という生き物は、大体、シャワーついでに風呂場でシッコもしてて 便秘で、パンツにウンスジが付いてて、パンツはオムツみたいにオールウェイズ汚くて めこが臭くて、男より足も臭くて、寝起きが別人で、寝起きの息が臭くて 隠し事が好きで、オパーイがデカイと喜んで、オケーツがデカイと悲しんで 愚痴、陰口、人の噂話が好きで、相談が趣味で、基本的に甘えん坊将軍で 基本的にMっ気があって、取り扱い危険物で、基本的にちょっとアホで 泣き虫で、ムッツリスケベで、変なところで深読み、裏読みして自爆して、男に振り回されるのが趣味で、一喜一憂するのが好きで お金が好きで、基本的に臆病だけど反面、冒険が好きで、芋系統が好きで 男によく騙されるのが趣味で、でもそのかわり、化粧と詰め物と補正下着で男を騙すのが趣味で ダイエット中らしいのに何故か甘い物とかお菓子食ってて、イベントごととか行事ごと、記念ごととかが好きで Hしたい時は恥ずかしいから基本的に自分からHしたいとは言わず、Hな下着を装備して 男から言わせたり、誘導したりするのが趣味で、実はよくおならします
そうだったの( ̄□ ̄;)!!
848 :
nobodyさん :2005/12/15(木) 07:49:08 ID:dK1AjZcq
すれ違いかも知れないですが、受信したメールの整形の仕方を解説したサイトを知ってる方いませんでしょうか。 もしくはpearのNet/POP3の使い方を説明してるサイトでもいいんですが。。
もっとボーイッシュな女の子に出会いたい(´・ω・)
俺の彼女もうんこついてたけど愛してやったぞ。昔ね。
851 :
nobodyさん :2005/12/15(木) 11:33:24 ID:UeTwmalZ
異なるパスに相対参照でincludeしているライブラリにさらに別のパスからincludeするとうまくいかないです 例: ~user/public_html/hoge/hoge.php ----------------------- <?php include '../library.php'; ----------------------- ↓ ~user/public_html/library.php ----------------------- <?php include '../db/db_control.php''; ----------------------- ↓ ここ失敗 failed to open stream: No such file or directory in ... ~user/db/db_control.php ----------------------- <?php ... ----------------------- しかし~user/public_html/library.phpから同じディレクトリのファイルはincludeできます。 何が原因なのでしょうか・・・
>>851 最初に実行したファイルのディレクトリをカレントディレクトリとして、
そこからの相対パスで探すから。
どのファイルでもhoge.php(include元)からのパスを記述する インクルードされる側のスクリプトからの相対パスを指定したいなら dirname(__file__)を使う 定数を使って設定ファイルでパスを管理 のいずれか
呼び出し元である user/public_html/hoge/hoge.php が基準となるからでしょ。
やっぱり呼び出し元が基準なんですね・・ だとすると ~user/public_html/library.phpから同じディレクトリのファイルなら呼び出せるのは何故なのでしょうか。 include_pathに./が含まれてるとしても変な感じがする ともかくdirnameなど試してみます、ありがとうございました
呼び出し元つーかワーキングディレクトリね
こんにちは。 少しお聞きしたいのですが、textに書き込む処理をするプログラムを作った時、 txtに書き込まれたものが文字化けするのですが、どうしてでしょうか? euc-jpモードでtxtを読み込むときちんと表示されましたが、 普通に開くと文字化けという感じです。 実際、euc-jpで言語書いてるので仕方ないんですかねぇ・・・(´・ω・`)
>>857 普通に開くってのはどういう意味さ。
euc-jpで書き込まれたテキストを
euc-jpに対応してないエディタで開いたなら、
文字化けしてあたりまえだぞ。
>>857 他の文字エンコードで書き込みたいのなら、mb_convert_encodingしたものを書き込みましょう。
>>858 ,859
即レスありがとうございます。
確かにそうですよね・・・。
失礼しましたorz
mb_convert_encoding勉強してきます。
861 :
nobodyさん :2005/12/15(木) 17:43:03 ID:x48kBhXK
メモ帳とかじゃ見れねえよ。
includeとかで他のPHPファイルとか読み込むととたんに変数の扱いが難しくならない? PHPって基本的に変数はグローバルだから読み込み先のPHPファイルとかでいきなり 見ず知らずの変数とかが登場したりするじゃん。 「この変数は一体どのファイルで定義されたんだろう」 ってことで探したり把握するので一苦労って経験無い?
863 :
nobodyさん :2005/12/15(木) 18:15:40 ID:tNJHcKWR
配列Aと配列Bがあるとします。 このAからBと重複する部分を削除した配列Cを出したいのですが、 簡単な方法などはないでしょうか? イメージとしては 配列C=配列A-配列Bという感じです。 配列Aの中から配列Bの要素を消したいと思っています。
>>862 >基本的に変数はグローバル
includeでベタソース読もうとするからそうなるんだろ。
functionにまとめるとか、ちゃんと考えて作れば何も苦労しないけど。
866 :
nobodyさん :2005/12/15(木) 18:44:29 ID:z/EbHORg
掲示板の書き込みなんかで20行より多いのを20行まで縮めたりするで、 改行ごとに区切って配列に入れて上から20個取り出すより良いやり方ありますか?
書き方が悪かったのですが その掲示板の書き込みというのは $kakikomi = "あ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ"; みたいなデータです。 この$kakikomiを $kakikomi = "あ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ\nあ"; こんな風にしたいんです。
>>868 1:explode
2:数合わせ
3:join
でどう?
PHPでは画像やFLASHなど作れますが、将来的にMIDIも作れるようになるんでしょうか。
>>871 PHPでFlash作れるの?知らなかった・・・。
ファイルの生成だけならphpに限らず大概の言語で出来るがな
>>873 CGIったら、ああPerlスクリプトのことが言いたいんだなと同程度には
Flashムービーファイルだと理解してやれよ。
876 :
nobodyさん :2005/12/15(木) 21:08:55 ID:lIkliCzn
Smartyのテンプレートにカタカナの「マ」が入っていると エラーがでてしまいますorz... 文字コードの問題なんだと思いますが、池沼なのでどうす ればいいか分かりません。 アドバイスおねがいします。
MIDIってFlashのことなのか?????
エスパー伊東に見えた
$dateが23か0じゃなかった場合にaaaを出力して、それ以外の場合はbbbを出力します。 if (($date !== 23)or($date !== 0)){ echo "aaa"; }else{ echo "bbb"; } これだと$dateが23の場合でもaaaが出力されてしまうのですが、どこが間違っているのでしょうか。
ANDじゃろ
>>880 $date が 23 の時
$date !== 23 は false
$date !== 0 は true
false or true = true
∴どんな数字を入れても成り立つ。
基本中の基本、というかこんな事で悩むなら作るの向いてないんじゃないか・・?
>>881-882 ありがとうございました解決しました。
前にも向いてないって言われました…。でも好きなんです。
>>883 わからないことを他人に頼るってのを直さないと何時までたっても上達しないよ
まぁ、生暖かく見守ってやるからガンガレ 煮詰まった時は、コーヒーでも飲んで小休止すると、悩んでたのが馬鹿みたいにあっさり解けたりするぞ
>>882 どーでもいいことだがPHPでは普通の論理は通用しないぞ
反例:
null == 0 は true
null == array() は true
しかし
0 == array() は false
!== だからいいんちゃう?
型チェックとかじゃなくて論理的な推移性の話だお
マニュアル読めよ
まったくしょうがねえなこいつらw
892 :
nobodyさん :2005/12/16(金) 05:29:21 ID:Tb6x4DJs
$dateが23または0 -> $date == 23 or $date ==0 !($dateが23または0) -> !($date == 23 or $date == 0) ↓ ド・モルガ〜ンッ!! $date !== 23 and $date !==0
>>876 デリミタを <{ , }> とかに変えればいいんじゃないかな?
ってか、なんのエラー出るのか確かめてないが。
895 :
nobodyさん :2005/12/16(金) 11:20:26 ID:FlVjXK6k
<input type='file' name='hoge'>でファイルをアップすることまではできたのですが、 ファイルが指定されてなかった場合という分岐を作りたいのですが、 そのやり方が分かりません。 if(empty($_FILES['hoge']['name'])){ print("エラー") } とやってみましたが、どうもファイルが指定してない場合は $_FILES['hoge']['name']は1を返してしまうようです・・・涙 よろしくお願いします。
896 :
nobodyさん :2005/12/16(金) 11:31:15 ID:S7k/7Vdp
move_uploaded_file()かis_uploaded_file()を使え
>>895 switch ($_FILES['hoge']['error']) {
case UPLOAD_ERR_OK: echo "うp成功"; break;
case UPLOAD_ERR_INI_SIZE: echo "over upload_max_filesize"; break;
case UPLOAD_ERR_FORM_SIZE: echo "over MAX_FILE_SIZE "; break;
case UPLOAD_ERR_PARTIAL: echo "うp失敗"; break;
case UPLOAD_ERR_NO_FILE: echo "ファイルがありません"; break;
case UPLOAD_ERR_NO_TMP_DIR: echo "テンポラリフォルダがないよ"; break;
case UPLOAD_ERR_CANT_WRITE: echo "ディスクにかけない"; break;
default: echo "未定義エラー";
}
898 :
nobodyさん :2005/12/16(金) 13:56:04 ID:QT9mtH4K
htaccessになにか簡単に文字を追加すると任意のイメージファイル名 例:sample.jpg を読み込んだときに任意のイメージ群 例:sample1.jpg , sample2.jpg , sample3.jpg からランダムに生成してくれるようのがあったの思うのですが 思い出せません。誘導お願いします。 たしかなんかphpかなんかで記述したファイルの拡張子を.jpgに サーバー上で変えたような記憶があります。よろしくおねがいします。
なんか分からない。 記憶を辿ってググるかなんか、エスパー降臨なんかを待つしかないな。
900 :
898 :2005/12/16(金) 14:10:14 ID:???
すいません。sample.***をphpかなんかで書いて、サーバー上で拡張子を jpgに戻したってわけです。そいでもって、読み込むときsample.jpgと呼び出すと >例:sample1.jpg , sample2.jpg , sample3.jpg から適当に読み込んでくれるって感じです。
ランダムな画像を返すコードをhoge.jpgとかに書いて スクリプトとして実行させたいってことでしょ。
902 :
898 :2005/12/16(金) 14:14:33 ID:???
記憶が不確かですが、.htaccessにはsample.jpgをsample.phpと認識するように 指示する記述をしたようなしなかったような気がします。
pathinfoで拡張子消すときによくやるやつね
>>902 mod_rewrite
で
RewriteEngine On
RewriteRule sample\.jpg sample.php
ついでにsample.phpだ <?php $files = array("sample1.jpg", "sample2.jpg", "sample3.jpg"); $file = $files[array_rand($files)]; header("Content-Type: image/jpeg"); header("Content-Length: ".filesize($file)); readfile($file); exit; ?>
906 :
898 :2005/12/16(金) 14:53:33 ID:???
無事できました!ありがとうございます。 すばやいレス助かりました。(n‘∀‘)η
907 :
nobodyさん :2005/12/16(金) 15:52:47 ID:IKuokGUw
>>907 つ$_SERVER["REQUEST_URI"]
909 :
nobodyさん :2005/12/16(金) 16:15:26 ID:IKuokGUw
>>909 ?以降のみがほしければ
$_SERVER['QUERY_STRING']
一言掲示板を作ったのですが ブラウザの更新をすると直前に書いた内容がそのまま渡されてるっぽくて 二重登録になってしまいます。 これって、ボタンを押されたか更新されたかを区別する方法を教えてください
>>911 ここみたいに書き込み後にRefreshやLocationで表示しなおす
915 :
軟式PHP :2005/12/16(金) 18:58:04 ID:???
>>914 頭悪いやつはこれだから。他の板と同じノリでレスすんな。
913なんか十分に詳しいじゃないかwww
>>915-916 その程度のレスなら俺にもできるんだって馬鹿。
知らないならレスしないで荒れるから
二重投稿防止のためだけにセッション使うのは大げさじゃね
携帯の1568万色表示って、正確には何色でしょうか? 16777216ではないですよね?
hogemoehage という文字列中のmoeを取得したいのですが(moeは文字数不特定、hogeとhageは固定) どうやって取得するのか教えて下さい。
921 :
919 :2005/12/16(金) 19:44:55 ID:???
$str = "hogemoehage"; $hoge = explode("hoge", $str); $hage = explode("hage", $hoge[1]); $result = $hage[0]; echo $result;
hogeとhageを削除すればmoeが残るべ。 str_replace( )
923 :
919 :2005/12/16(金) 19:47:46 ID:???
924 :
nobodyさん :2005/12/16(金) 19:55:13 ID:VdLHldFd
array_mapは二次元配列には使えないの?
925 :
919 :2005/12/16(金) 19:55:43 ID:???
>>919 は完全にスレ違いなので放置でお願いしますorz
>>920 >>921 より↓の方が速そうですorz
moeの部分にhogeやhageが入る可能性があるなら正規表現使った方がいいんだろうけどわかりません。
$str = "hogemoehage";
$str = str_replace("hoge", "", $str);
$str = str_replace("hage", "", $str);
echo $str;
>>925 $str = "hogemoehage";
$str = preg_replace("/~hoge/", "", $str);
$str = preg_replace("/hage$/", "", $str);
>>925 926はちょっとタイポ。
$str = "hogemoehage";
$str = preg_replace("/^hoge/", "", $str);
$str = preg_replace("/hage$/", "", $str);
$str = "hogemoehage"; $str = preg_replace("/^hoge(.*)hage$/", "$1", $str);
929 :
920 :2005/12/16(金) 22:03:48 ID:???
大変申し訳御座いません。 後付け氏ねと言われそうですがhogeとhageの前後には文字があります。 このような文字列です。値が固定なのはhogeとhageのみです。 hdfjhhogemoehagejkfkj 上記についてご回答宜しくお願いします。
930 :
919 :2005/12/16(金) 22:14:28 ID:???
>>929 hogeとhageはその場所以外にでてこないの?
それでいいなら、
$str = "hogemoehage";
$str = preg_replace("/.+hoge(.*)hage.+/", "$1", $str);
preg_match('/hoge(.*)hage/', $str, $pattern); $result = $pattern[1];
>>935 934じゃないけど、変じゃない。
ってか、なんでみんな replace 系にこだわってんの?
元の質問から考えると、preg_match または preg_match_all のほうが良いのでは?
938 :
935 :2005/12/17(土) 02:37:19 ID:???
変数への代入が=じゃないから、個人的にはあまり好きじゃないなぁ
くだ質だからいんじゃね?
そんな論理は通用しない
まぁしたりしなかったり、だな
>>939 意味がわからん?
PHPは=で代入だよ
釣りだろ。スルーを覚えよう。
>>944 preg_matchの話だしょ
第三引数はoutパラメータ
preg_matchの返り値が検索結果ではない(返るのは合致件数)から、って事だろ
948 :
939 :2005/12/17(土) 12:36:24 ID:???
フォローサンクス この変数はどこから来たんだ?と思った時、replaceの方が直感で分かるんじゃね?といいたかった
replaceとmatchのそれぞれの目的の違いが返り値の違い
replaceは置き換えが目的なので、返り値は置き換えた文字列
matchは合致するかを調べるのが目的なので、返り値は合致数
>>932 は「全体を一部の文字列で置換」したパターンだな
preg_match_allがあるので、preg_matchは合致した文字列を返してもいい気はするけど。
>>948 受け取りの変数名を引数で指定してるんだから迷うようなものでは無いと思う。
よっぽど$1とかの自動生成されるシステム変数の方が不気味。
その上、replaceは元の文字列の編集も行うので処理コストが無駄に高い。
セッションを使ったサイトを作ろうとしているのですが、 ページをxhtmlで書き出すと、セッションに入れた値が表示されたりされなかったり不安定で、 htmlのhead内のtitle以外(meta等)を削除すると、なぜか正常に表示されます。 これって、どんな原因が考えられますか? バージョンは4.3.11です。4.3.10では、正常に動作しました。
同じく、セッションの質問になりますが、 新規セッションでのページアクセスは、 値が代入されていない場合、 if($_SESSION['name'] == ""){ 〜 } で防げるのですが、うちの借りているレンタルサーバーのセッション保持時間が24分でして、この時間が切れた後の確認が 上記の記述では出来ていないようなのです。 「一度ログインして、24分経過→$_SESSIOIN['name']が空になる」 この空の状態でもアクセスする事が出来、$_SESSION['name'] は、Arrayとなっています。 セッション切れあとにアクセスすると、ログイン画面に飛ばしたいのですが、どのようにすればいいでしょうか。 宜しければ、アドバイスお願い致します。
empty()かisset()、好みの関数を使って条件式を書き直すと良いと思う。
駄目だと思う。
955 :
725 :2005/12/17(土) 18:16:17 ID:???
>>952 $_SESSION['name'] がArrayになってる時点で何かゴミが入ってるですよ。
だから当然アクセスできるでしょうね。
レスありがとうございます。
>>954 さん
953さんのやり方だと出来ないのでしょうかね・・・。
>>955 さん
ゴミですか・・・。Arrayと表示されるって事は空では無いんですね。
少し記述を見直してみます。
Arrayの中身はvar_dump()かprint_r()すれば確認できるかと
一応、名簿のtxtがあるので、 名前一覧を配列 $meibo に入れて、 if(in_array(!$_SESSION['name'],$meibo){ ログイン画面にheaderで飛ばす } で緊急対処してみました。 これから957さんのおっしゃっているprint_r()辺りで探りたいと思います。 ありがとうございます。
sleepで寝かせて醗酵させたい。
$a->b;ではなくa::$bみたいにclass aの変数bを直接?参照する方法はないでしょうか?。 class a{ var $b; } $a = new a(); echo $a->b;
メソッドならともかく、メンバ変数の直接呼び出しなんてできたっけ??
フレームを使ったサイトのアクセス解析をしたい。 PHPでプログラムされたアクセス解析を埋め込むとき、PHPのコードをそのまま埋め込む方法と、 JavaScriptでコードを埋め込む2つの方法があると思う。 後者のJavaScriptの場合 document.referrer というところを parent.document.referrer に変更すればフレームのサイトでも正常にreferを取ることが出来るけど、 前者のphpのコードをそのまま埋める方法でreferを正常にとるにはどうしたらいい?
>>962 寝ぼけてた。
でも直接呼び出すということは、値が固定なんでしょ?
定数で良いんじゃね?
>>963 ヒント
print_r($_SERVER);
>>963 フレーム部分のHTMLをPHPにして、そこでアクセス解析する。
>>964 まー、クラス内での定義内容を知りたいんだろうけどね。
968 :
963 :2005/12/17(土) 23:47:44 ID:???
>>965 それだとrefer取っても自サイトのフレームが検出されちゃって意味無くない?
>>966 フレームだとどのページを読んだのか判別がつかなくなるような・・・
自分のサイトの中の複数のページを解析しているんだけどそれぞれ独立して
解析したもので・・・
>>968 どこのサイトから飛んできたのかを知りたいのなら
referer取るのはフレーム部分だけでいいんじゃないの?
「複数のページを解析」の中の1つとしてフレームも含めればいいだけのような。
各ページでまでいちいちreferer取る必要ないじゃない。
そこをあえて各ページでもフレームのrefererを取得したいと思うなら、
セッション、クッキー、各ページへの引数、などでデータをたらい回せば?
セッションやクッキーの方式ならリンク元が一緒でも別々のユーザとして特定できるから
ユーザ別の完全な行動履歴が記録できるかもね。
最近phpを勉強し始めたものですが ereg_replaceと正規表現が良くわかりません・・・ DBに電話番号を登録させていて 取得した電話番号が9999999999(10桁)として それを999-999-9999という風にハイフンを付加して表示させたいのですが ereg_replace("([0-9]{3})\([0-9]{3})\([0-9]{4})","\\1-\\2-\\3",$DB[tel]) とコーディングしましたところ無変換になって困っています… よろしければご教授ください
>>970 > ereg_replace("([0-9]{3})\([0-9]{3})\([0-9]{4})","\\1-\\2-\\3",$DB[tel])
途中の「\」が余分なだけかと。
972 :
970 :2005/12/18(日) 00:23:21 ID:???
>>971 おかげで解決しました
ありがとうございました 精進します
チェックボックスに入れたデータは、どのように保持すればいいですか?
<input name="変数名">で指定した名前でPHPでは $_REQUEST["変数名"]で受け取れるから それを使って好きなように処理すればいい
携帯ってセッション使えるの?
セッションの実装にはcookieとURL書き換えがあって、 URL書き換えの方なら携帯でも使えるべ
使える。 使ってる。
978 :
960 :2005/12/18(日) 08:43:58 ID:???
おはようございます。 やはりグローバルなインスタンス化は難しいみたいですね(^^;。 スーパーグローバル変数は使いたくありませんし、defineにはオブジェクト入りませんし・・・。
>>978 > スーパーグローバル変数は使いたくありませんし、
こっちは分かるけど
> defineにはオブジェクト入りませんし・・・。
こっちの意味が分からない。
$a = new a(); define("定義名", $a->b);
じゃダメなの?
オブジェクトを入れるって言うけど、a::$b ってことはクラス内で定義されてる
初期値を参照したいだけで、オブジェクト内での値の変化は無視してるわけでしょ?
だったら1度newして直後の値をdefineに使っても結果は同じなんじゃないかと。
> グローバルなインスタンス化 この用語の使い方が意味分からん PHP4にクラス変数がないってことが問題なんじゃなかったのかよ
単に、$a-> ってのを書くのが面倒とかいう話じゃないのかな? んでも、$a->を書かない事にはどのインスタンスを指してるのか分からんしなぁ。。 それとも、$ref = & $a->b; てな感じでリファレンスを使えば気に入るのかな?
982 :
960 :2005/12/18(日) 09:33:25 ID:???
>>979 値も欲しいのですがインスタンスそのものも欲しいです。
つまりdefine("定義名", new a())と同じ事がしたかったわけです。
通常、メンバ変数は定数の為にあるのですが長いセッション名を=&していたりする事や
インスタンスをあちこちに$a = new a(); の function($a)と使いまわしているうちに$this->
が使いにくくなったりしてきたのでグローバル化出来ないかと考えた次第です(^^;。
結局、インスタンス生成用のfunctionを作ってstaticする方向で使いまわす事にしたの
ですがもっとスマートな方法があれば教えて頂けないでしょうか?。
なるほど。設計上静的なメンバが必要という話じゃないのか それならグローバル変数やDefineが出てくるのも分かる気がする PHP4でやるならゲッターにstatic仕込んでプロパティに見せるとか やるしかないね
985 :
nobodyさん :2005/12/18(日) 09:39:12 ID:rUQVAAhd
IDE使え。終了
単に $GLOBALS["a"] = new a(); すればいいだけじゃないのか? スーパーグローバルを使いたくないと言ってるが、 すでにやってることが同じことになってる気がするぞ
インスタンス化という概念を根本から否定してるよな
スレの終盤はいつも何かが起こる・・・ッ!!
過去スレは
>>2 以降にリストアップしてほしいです
フトモモまぶしい半ズボン少年からのお願いでした
何故?
削除人か?
IEな人だと思う。
何故冬なのに半ズボンなの?変態じゃないの?
さとるはPHPは使わないよ
萌え
>>994 不可能じゃないと思うが相当難しいと思う
_________________________ <○√ ‖ くく
1000ならアラビックのマニュアルができる
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。