【PHP】くだらねぇ質問はここに書き込みやがれpart7
1 :
966 :
2005/07/12(火) 01:47:09 ID:qOoYFCn7
3 :
nobodyさん :2005/07/12(火) 09:24:04 ID:a//rVl7j
自作ソフトとかさ、スクリプトを使ってもらおうと するとき、ダウンロードとかさせる機能はどうやるの? おばさんが作ってたHPにダウンロードはこちらからとか あったのをみて、俺正直すごい敗北感を感じたよおしえてくれ 頼む・・・
4 :
軟式PHP :2005/07/12(火) 09:25:44 ID:???
<a href="sugoi_obasan_hp.zip">ダウンロードはこちらから</a>
直リンされても良いのなら、こんな感じ。 <A HREF="test.zip">ダウンロード</A> 直リンされたくなければ、こんな感じ。 <A HREF="download.php">ダウンロード</A> *** download.php *** <?php $path = '/download'; $filename = 'test.zip'; header("Content-Disposition: attachment; filename={$filename}"); header("Content-Type: application/zip"); readfile("{$path}/{$filename}"); ?>
6 :
966 :2005/07/12(火) 11:12:03 ID:???
7 :
966 :2005/07/12(火) 11:20:01 ID:???
前スレで色々と教えてもらってたクセにシカトか。。。 ウザイやつだな >結構それなりに出来てるとは思ったのですが プッw
9 :
nobodyさん :2005/07/12(火) 11:45:56 ID:2mlSOJGk
人の話も聞かないでゴミソースばっかコピペしてマジウザいので そろそろ消えてくれねーかな
初心者なりに必死に頑張ってるんだろ
>>10 自演か?
いくら2ちゃんでも頑張ってる初心者をむやみに煽ったりはしないだろ。
レスもらったのにスルー、独自路線GoGoでヘルプするから
煽られてるだけ。
12 :
966 :2005/07/12(火) 12:51:49 ID:???
前スレで教えて貰ったのは教えて貰ったので頑張ってやっているんですが、
>>6 のはちょっと自分なりに思いついたのでやってみたところ、
色々やっても駄目だったし自分の頭じゃ理由が分からなかったので、
せめてヒントだけでも貰いたいなと勝手に考えていました。
なんか教えて厨っぽくてすみません。
>>11 自演じゃないが教えたことをやってれば良いって考え方に賛成できないだけだ
14 :
nobodyさん :2005/07/12(火) 14:24:56 ID:ZD8v3rFB
質問です。 自分のPCで絵文字を見れるように外字設定がしてある状態です。 例えば(←皆さんには・に見える?)などを書くと私のPCではちゃんと絵文字が表示されています。 ですがPHPで作成した掲示板に絵文字を書くと「?」と表示されます。 文字コードの問題なのでしょうがいまいち分かりません。 ご存知の方ご教授お願い致します。
PHP5でJava連携ってどうやるんですか?
16 :
nobodyさん :2005/07/12(火) 15:18:33 ID:2mlSOJGk
>>15 echo 'Java連携';
上記の答えが満足できなければ、満足できる答えを得るためには
どう質問すればよいか考えろ
18 :
11 :2005/07/12(火) 15:21:32 ID:???
>>13 >自演じゃないが教えたことをやってれば良いって考え方に賛成できないだけだ
同意。
ただし、前スレを読んでも同じ事が言えるのなら尊敬。
連携内容による
>>20 前スレ
>>966 じゃないがそれだとttpの前にhがつかない罠
function autolink($url){
return preg_replace("/(((h?)ttps?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e","'<a href=\"'.('$1'==='www.'?'
http:// '|'$3'==='ttps?'?'h':").'$1$4\" title=\"$1$4\">$1$4</a>'",$url);
}
甲汁
自分ならftpとかnewsとかイラネ
23 :
nobodyさん :2005/07/12(火) 16:16:51 ID:qOoYFCn7
なんか本末転倒のリンクだな そもそもttpは掲示板の自動リンクを防ぐためのものでしょう httpに修正されるなら最初からhttpで書き込めばいいし自動リンク予防がtp://に変わるだけの気がする。
2chブラウザじゃあるまいしttpでリンク形成してどうする
もういいんぢゃないの。元発言者は引っ込んだみたいだし 後は正規表現のスレでやっとくれ。 それに似たようなサンプルはpreg_replace_callbackを使って 前レスで示されていたはず。
あれはエラーだた希ガス
966は2chブラウザでも作るつもりなのか この腕前でw
次のくだらない質問 ↓
うわ、まだ続いてんのかこのネタ 超ウザ
続いてるんではなくループしていると思われ。
function test($test) { while($test>=10) { print("test") $test++ } こうやっても何も表示されないんです
>>33 $test++ → $test++;
何も表示されないときは、ソースの先頭に
ini_set('display_errors', true);
error_reporting(E_ALL);
と入れてみなはれ。
>>33 何をしたいのかよく分からんが、簡単に無限ループに落ちそうだな。
36 :
34 :2005/07/12(火) 16:40:08 ID:???
抜けてた。こっちも。 print("test") → print("test");
37 :
20 :2005/07/12(火) 16:41:46 ID:???
くっ、、不覚をとったのだわ。。
38 :
34 :2005/07/12(火) 16:42:21 ID:???
ふんとだ。良く見ればループ条件がおかしいような。。。
39 :
軟式PHP :2005/07/12(火) 17:09:35 ID:???
}足りないしぼろぼろだな。
40 :
33 :2005/07/12(火) 17:11:49 ID:???
出来ました。有難う御座いました。
41 :
14 :2005/07/12(火) 17:19:00 ID:ZD8v3rFB
>>14 です。いまだに解決方法が見つかりません。
絵文字のみ判別して絵文字の場合はアスキーでそのまま送ればいいと思うのですが
頭がコンガラガッテ爆発しそうです。
??xE63E;F89F/63647
>>41 よく分からないけど、絵文字を画像にして
絵文字の文字コードを画像に置換した方が医院じゃないか?
>>41 ひとまずPHPから離れて。。。
その外字を含んだ手書きHTMLでは正常に表示できるのかな?
あと、他人があなたの掲示板を使用する場合、外字はどうするの?
使用予定の人、全員に外字ファイルを配布するつもりなのかな?
44 :
14 :2005/07/12(火) 18:01:35 ID:ZD8v3rFB
>>42 >>43 お返事どうもありがとうございます。
社内でしか利用していない掲示板なので外字ファイルは全PCに導入済みです。
絵文字を画像変換ですがその場合表示は出来るのですが
コピペが出来なくなってしまうのが問題です。(コピペを多用する為)
←これは全員ピースしている絵文字が見えます。
ですがこの(ピース)を投稿するとサーバに?として送信されてしまいます。
この(ピース)を(ピース)のままサーバに送信するのはどのようにしたらいいのでしょうか?
45 :
43 :2005/07/12(火) 18:24:24 ID:???
>>44 絵文字を使う会社ってぷりてぃだね。
サーバーに送信されたデータをどのように確認したのか判らないんだけど。。。
以下でtest.htmlを呼び出して、テキストエリアに外字を入力後、Goをクリックすると
正常に表示できる?(Shift_Jisの部分は、あなたの環境に合わせてね)
こんなことは既に確認済みだぜぃ、ならスマソ。
--- test.html ---
<html><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"></head>
<body>
<form action="test.php" method="POST">
<input type="text" name="data">
<input type="submit" value="Go">
</form>
</body></html>
--- test.php ---
<?php
echo <<<EOD
<html><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"></head>
<body>
{$_POST['data']}
</body></html>
EOD
?>
>>44 PHPで変換してるんじゃないの
スクリプト見ないことにはわからないよ
すいません質問です。
Win2000+IIS+PHP4.3.6の環境でmb_send_mailを送信したところ、
"テスト"と書いた本文、タイトルが共に"ッテッスット"と化けでいました。
詳細なヘッダーを表示したところ
------------------------------------
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------------------------------
となっていました。
追加ヘッダーはfromくらいしかつかっていなくてソースは以下な感じです。
------------------------------------
$mail = "
[email protected] ";
$from = "
[email protected] ";
$msg = "テスト";
$subject = "テスト";
ini_set ("sendmail_from", $from);
mb_send_mail ($mail, $subject, $msg, "From: $from");
------------------------------------
できたらmail()を使わないでJISで7bitで
送りたいのですがどこで設定するのか教えて頂けますか
>>47 index.phpファイルの中で、<a href="?hoge=moge">てな感じにすれば、そうなる。
ファイル名を省略すると、鯖が気を利かせて index.phpが呼び出される。
>>48 php.iniのmb_関係の設定。
php.iniを弄りたくない場合は、mb_language()で設定する。
無指定の場合は、uni 扱いになる。
質問させて下さい。 PHPでDBを使用した場合の排他制御というのはどうやってやるのでしょうか? DB自体の排他制御ではなく、 例えば、掲示板などで自分の書いた文章を訂正したい場合、 パスワードなど入れてから編集すると思うのですが、 ほぼ同じタイミングで自分と管理人が該当文書の編集画面を開き、 どちらかが更新した後でもう片方が更新したら上書きされてしまいます。 ASP.NETではこういった部分はADO.NETが読み込んでから更新するまでに 他の人間がデータを更新したかどうか勝手に調べてくれます。 こういった処理をPHPで制御するにはどうやるのでしょうか?
排他処理フラグを作ってDBにalterしておけば?
>>50 php.iniでmbstring.languageを = Japaneseの箇所を有効にしましたが変化無しだったので
mb_language(ja)でとしたら(゚д゚)ウマーでした。
ありがとう。
>>52 ADO.NETが勝手にやってくれることをおまいさんが
実装すればいいだけのこと。色々方法はあるけど、一例。
1) データベースに更新毎に値が変わるカラムを用意
2) 編集開始時にこのカラムの値を読み出して取り置き
3) 保存時にこのカラムの値を再読み出し
4) 2) と 3) がアンマッチなら他のユーザーが更新しているんでエラー等を表示
更新毎に値が変わるカラムをどうするか、どう更新するか(自動 or 手動)は
自分で考えれ。判らんかったらまたおいで。
56 :
52 :2005/07/12(火) 19:59:57 ID:???
>>55 1つ考えていたのは、レコードに更新日時を持つようにして、
該当レコードを編集する為に表示させたとき、この更新日付を取得しておいて、
更新時に比較するというもの。(
>>55 が書いてる事と同じだと思います)
しかし、これだと複数人がほぼ同じタイミングで更新しようとした場合、
トランザクションを掛けても、データ更新は出来ない(待たされる)が
(更新前の)データを参照する事が可能なので、
更新日時の比較時にはマッチしてしまい、誰かが更新終わってロック解除されて
自分のデータを更新しに行ったときには既に更新日付が変わってるという事が考えられます。
57 :
55 :2005/07/12(火) 20:15:36 ID:???
>>56 そこまで理解できているんなら最初からそう書いたら?
情報を小出しにして互いに何の得があるんだ?
UPDATE 。。。WHERE カラム1 = 更新キー AND カラム2 = 取り置きした更新日時
を実行した後、更新したレコード数を得て(mysqlならmysql_affected_rows関数など)
1であれば正常
0であれば他ユーザーが更新している
でいいぢゃないの。
58 :
55 :2005/07/12(火) 20:30:20 ID:???
>>57 そうか、WHEREの条件の中で比較すればいいのか。
盲点でした・・・
59 :
nobodyさん :2005/07/12(火) 21:31:01 ID:dBnqhLiG
>>44 今FOMAから見てるけどになってるよ。
K〇NTのから盗んでPHP化すればいいと思うよ。
漏れは挫折したが。
61 :
nobodyさん :2005/07/12(火) 22:19:46 ID:8KfiQ0Na
PHPしかつかえないんだけどさ・・やっぱりJSPにも手をだすべきかな 将来を考えてさ・・・お前らどう思う?
>>61 職業プログラマか、そうでないかにも拠ると思うが。
職業プログラマなら、自分の所属する会社の動向や
その会社を見限った時に、自分の売りをどこに持つかにも拠る。
63 :
nobodyさん :2005/07/12(火) 22:28:26 ID:83Vu/kYo
>>59 つ[xml_parse_into_struct]
64 :
nobodyさん :2005/07/12(火) 23:47:28 ID:5RU+KNuo
【ありがとう】橋本真也 追悼オフ【破壊王】
http://off3.2ch.net/test/read.cgi/offevent/1121074170/ みんなで破壊王を見送りましょう。
葬儀日程
通夜:7月15日(金)18時
葬儀:7月16日(土)12時30分
場所:一休庵久保山式場 神奈川県横浜市西区元久保町3-13
最寄駅:京浜急行線 黄金町 駐車場:15台(全館貸切の場合、30台)
横浜駅西口から久保山斎場まではタクシーでは
所要時間10分〜15分、料金は1,220円〜1,380円です。
1,220円は混雑を加味しない料金です。
3〜5分程度の混雑を考えた場合、1,380円位になると思います。
(実際は1分55秒で80円加算です)
バスは
京急黄金町駅から32系統久保山経由保土ヶ谷車庫行き →久保山霊堂前
横浜駅西口からは4番乗り場68系統久保山経由滝頭行き→久保山で下車してください。
なお、久保山バス停からはかなりの上り坂です。
65 :
nobodyさん :2005/07/13(水) 00:11:21 ID:XABi9hF+
$data = file("
http://www.hoge.com/hoge.html ");
って感じでほかの鯖にある情報を取得して、ereg_replaceとかで整形してそれを自分のサイトのphpにinckudeして表示させるというスクリプトを作りました。
ローカルの鯖ではうまく行くんですが、自分のサイトを置いてる鯖ではこんなエラーが出ます。
Warning: file(): URL file-access is disabled in the server configuration in /home/xxx.users/hoge/hoge.php on line x
Warning: file(
http://www.hoge.com/hoge.html ): failed to open stream: no suitable wrapper could be found in /home/xxx.users/hoge/hoge.php on line x
これは鯖の設定でこういう事は不可能ということですか?
ほかのサーバーのサイトのデータを取得して好きなように整形して使うのにほかに方法はありますか?
fsockopen()
>>65 ある。sockopen、pear HTTP_Client
>>65 ティップ: fopen wrappers が有効の場合、
この関数のファイル名として URL を使用することが出来ます。
ファイル名の指定方法に関する詳細は fopen()、
サポートされるURLプロトコルの種類 については、(例えば)付録L を参照してください。
>>65 URL先の内容を精査しないで使うバカ避けに、サーバをそういう設定にしてある。
> これは鯖の設定でこういう事は不可能ということですか?
そういうこと。
ソケット関数でHTTPでGETするとか、それの上に被せたPEARの
ネットワーク関連のライブラリを使うとか、誰かの作った
URL file-accessが可能なライブラリ利用するとか、cURLを使うとか、色々。
70 :
nobodyさん :2005/07/13(水) 15:30:11 ID:mGL09CH7
GD関連で教えてください。 imagejpegを使ってJPEG画像を作成してるのですが 品質を100で作成しているにもかかわらず 色の境に中間色が使われぼやけてしまいます。 これを回避することはできないでしょうか? それともJPEGの仕様上仕方がないのでしょうか?
>>70 >JPEGの仕様上仕方がないのでしょうか?
そうだと思う
画像の作成なら普通gifかpng使う(画像劣化なし)
jpegはjpeg画像の加工ぐらいしか使わん
72 :
70 :2005/07/13(水) 15:42:23 ID:???
>>71 さっそくのレス、ありがとうございます
実は生成した画像をFlashで読み込むのと
256色を超える可能性があったのでJPEGにしてたのですが
劣化がひどいので
Flash読み込みをあきらめてPNGにすることも
試したうえで検討してみようと思います。
ありがとうございましたー
断片的な情報しかないんだけどimagecreatetruecolorは使ってるかな?
ちょっとスレ違いだとは思いますが、正規表現で全角かなカナ英数字ってどうやれば良いんでしょうか?
>>73 true colorにしてもぼやけるものはぼやける。
jpegってのは基本的に圧縮技術だから。
でもjpegだと(quality高くしとけば)遠くから見たときちゃんと見える。
特にqualityを100とかにしとけば逆にキレイに見えることすらある。
jpegってそんな存在。
もちろん汚くなることもあるけど。
ぱっと見で気にならない程度ならjpegにしてサイズ減らすのもありかと。
76 :
70 :2005/07/13(水) 16:14:54 ID:???
>>73 使ってますー
最初これでもはまりました
PNG出力試してみました。
全く劣化なしできれいでした。
しかも品質100のJPEGに比べて
ファイルサイズが1/5くらいになりました
cronを使って、メールを送信するphpスクリプトを定期実行しています。 レンタル鯖(共有または専用)で上記を行う際に、 万が一cronの実行時間に鯖が落ちてたりしてcronが実行されなかった場合の カバー(鯖が正常に戻ったときに未実行のcronを実行する)は、どうすればよいでしょうか。 僕が考えたのは、スクリプトが実行されたかどうかのフラグをDBに記録しておいて、 メール送信スクリプトとは別に、「cron実行されたかどうか判別スクリプト」を 1日に何回かcronで走らせる・・・という方法です。 しかしこれでは、「判別スクリプト」を走らせるcron自体が不実行だった場合 どうしようもありません。何かもっとスマートなやり方ってありますでしょうか。
>>77 大体それで良いと思うけど、
メール送信の実行時にフラグ記録及びフラグのログを見て実行されなかった物があるか調べてそれも同時に実行すれば良いんじゃないの?
分かりにくくてスマソ。つまり、メール送信のスクリプトと実行確認のスクリプトを分けずに、同時にその二つの処理を行えば漏れは無くなるでしょってこと。
>>78 あ、そうですね。二つをまとめたほうがいいですね。
それと、phpの問題でなくサーバーの問題になるかと思いますが、
障害などで未実行になったcronジョブを、サーバー再起動後に
検出して再実行する…ってことは技術的に可能なんでしょうか??
>>77 漏れだったらこんな処理にするかな
・送信するメールをファイルに保存するスクリプト
(保存時はファイル名が重ならない様に日時等にする)
・保存されたファイルをメール送信、送信後は削除するスクリプト
の2つをcronで走らせる
そんなに不安定な鯖は窓から投げ捨てろ
すみません、質問させていただきます
Active perlのppmを利用して新しいモジュールをインストールしようとしたのですが
ppm
install win32-api
====================
Install 'io-zlib' version 1.01 in ActivePerl 5.8.2.808.
====================
====================
Install 'io-zlib' version 1.01 in ActivePerl 5.8.2.808.
====================
Error: error downloading '
http://chai.activestate.com/PPMPackages/5.8-windows/MS Win32-x86-multi-thread-5.8/IO-Zlib-1.01.tar.gz': 500 Can't connect to chai.activ
estate.com:80 (Bad hostname 'chai.activestate.com')
と表示されインストールができないのですが原因など教えていただけないでしょうか?
バージョンはActivePerl-5.8.2.808-MSWin32-x86.msiです
すれ違い
>>79 なんかcronに代わる、似たような機能があったような気がしる。
PHPで出力するHTMLページをフレーム分割することって出来る?? どのようにソース書けばいいんだべ・・・。
>>85 <frameset>
茨城県民、Web製作版へGo!
ここは頼りになるなぁ。 だれか自宅サーバたててる椰子、PHPでクールなまとめサイトを 作るナリ。漏れムリ。
SourceForgeみたいにダウンロードページに行くと 自動的にダウンロードが始まるスクリプトってどういう仕組みなんですか?
AND検索とかOR検索を自前でやるのって、コツコツコーディングしないとだめですか? あるファイルを行ごとにANDOR検索をかけたいんですが、 検索単語が"ほげ はげ"の時にはほげとはげを含む行を抽出して、 "ほげ or はげ"の時にはどちらかを含む行を取り出したいのですが・・ googleのnotとか、ほげとはげは含むけどハゲは含まないみたいな高機能な検索を するライブラリとかってあるようで無いですよね。
自分で料理せずコンビニ総菜にケチを付けるようなまねはよしてください
PHP4だと__CLASS__って使えない? PearからMail_Mime落としてきて試してるんだが、 どうも__CLASS__のせいで上手く動かない気がする。
94 :
92 :2005/07/14(木) 13:19:02 ID:???
>>93 うっスマン。
__CLASS__は4.3からか。
うちのレンサバPHP4.1.2だったよ・・・
こういう場合はPEARは使えないって事だろうか。
95 :
89 :2005/07/14(木) 13:24:02 ID:???
>>91 Namazuって全文検索じゃないですか。
配列の中の各要素にたいしてandとかorとかnotするにはどうするのがいいかなと
思ってるんです。
97 :
89 :2005/07/14(木) 14:47:16 ID:???
>>96 ごめんなさい、言葉が足りませんでした。
あるファイルを『行ごと』に、というわけで、
ファイルを読み込んで1行ごとに配列に入れて、それに対してANDOR検索を・・
ということだったのですが、そこまで読み取れるはずが無いですね。
とりあえずスペースで区切ってANDだけ、orで区切ってORだけというのは出来たんですけど、
ANDとORを組み合わせるのとそれにさらにNOTを組み込むのが難しいです。
98 :
85 :2005/07/14(木) 16:38:23 ID:???
自己解決しますた。 特別なこと考えず、普通にフレームつくるときのHTMLを echoで出せばいいだけだな。深く考えすぎた。
99 :
軟式PHP :2005/07/14(木) 16:53:23 ID:???
89は文句ばかりたれる雑魚だからスルーしときなされ。
配列に格納した文字列を全てforeachで処理したいのですが、 その都度配列のキーを取得することは可能でしょうか? たとえば $fruit = array("apple" => "りんご", "banana" => "バナナ"); という配列を元に、 「apple」と「りんご」、「banana」と「バナナ」をそれぞれセットで取得したいのです。 array_searchを使ってもできそうなのですが、値に重複があると先にあるキーしか返してくれないようです。 何かいい方法はないものでしょうか?
101 :
100 :2005/07/14(木) 18:28:39 ID:???
ああっ。 foreach($fruit as $key => $value)と書けばいいのか。 解決しますた。
UTF-8で日記スクリプト作ってる。 んで、フォームから打ち込んだ値をたらい回しにしてたら、いつの間にか「"」の前にエスケープがくっついてた。 なんでだ?
>>102 何かかわいそうだから
誰かエスパーな椰子たすけてやれよ
>>88 自動的にダウンロード始まるページのソースを、
上からじっと読むと見つかります。
PHPのmb_send_mailで最大どのくらいまでのメールアドレスを
処理出来るのでしょうか?
例えば、BCCとして"abc@**.jp,
[email protected] ・・・"とメールアドレス
続けて送信するとします。
サーバの内容にもよるかと思いますが、ご存じな範囲で
結構ですので、教えていただければと思います。
ASPのRequest.ServerVariables("LOGON_USER")を PHPに移植する場合、どうすればいいか教えてください。 $objWsh = new COM("WScript.Network"); $objWsh->UserName; $objWsh->UserDomain; とWSHで取得しようとしてもサーバ側の情報になっちゃって上手く再現できなかった。 $objWmi = new COM("WinMgmts://{" . getenv("REMOTE_ADDR") . "}/root/cimv2"); WMIサービスで取得しようと思ったが、セキュリティ上無理だった。
>>108 $_SERVER['LOGON_USER']
>>108 IISからApacheにも移行してないか?
>>106 PHP-USERのメーリングリストのログにあるさがせ。
MySQLに日付の欄(型はdate)があるのですが、 select文で日付をwhere条件に含めるに当たって、 一桁の数値には頭に0をつけてからSQLを発行しないといけないのでしょうか? 日付がMySQLでは2005-07-14となっているレコードを select * from tbl_hoge where date='2005-7-14' でヒットするのでしょうか?
ヒアドキュメント内だと、defineで定義した定数は使えないの?
115 :
112 :2005/07/15(金) 01:01:05 ID:???
116 :
nobodyさん :2005/07/15(金) 01:05:27 ID:PzceRiM6
ユーザー定義関数を作るとき、引数の初期値に定義済みの関数を利用して設定することはできないのでしょうか? function hoge ($a = date("Y-m-d")) { echo $a; } と試したところエラーが出ます。 expecting ")"というエラーなのですが、括弧が足らないのでしょうか?
>>116 function hoge ($a = NULL){
if($a==NULL) $a = date("Y-m-d");
echo $a;
}
とかで
118 :
116 :2005/07/15(金) 01:22:25 ID:???
どうやらできないようですね。 どうもありがとうございました。
ワロス
xml扱うのにexpatとDOMってどっちがお勧めですか?
すみません、header ("Location: admin.php") という感じで飛ばす処理を しているのですが、以前使っていたレン鯖では問題なかったのに、 違う鯖にしたらLocationで飛べなくなってしまいました。 鯖(Apache?)の設定で、Locationが使えないことってあるのでしょうか??
>>121 とりあえず、絶対URIにしてみろ。話はそれからだ。
125 :
121 :2005/07/15(金) 07:14:29 ID:???
補足ですが、Location先を相対パスにしたり絶対パスにしたり絶対URIにしたり してみましたが、全部ダメでした。 echo "テスト"; header ("Location: admin.php"); exit; で、「テスト」が出力された画面のままで止まり、その後のジャンプがありません。 つまり、Location先が見つからないのではなく、 あくまでもLocation命令そのものが実行されていない感じです。
126 :
121 :2005/07/15(金) 07:15:49 ID:???
>>124 すみません、どこの設定をいじればLocationを使えるようになりますでしょうか。
>>121 そんなことロケーションヘッダが来てるかどうか見ればわかるじゃん
つか相対URLはRFC的にアウトなんじゃないの? 相手が携帯だと特に
_ _ .' , .. .. .' ∧_∧
∧ _ - ― = ̄  ̄`:, .∴ ' ・,‘∴ , . ( ) ←
>>125 , -'' ̄ __――=', ・,‘ r⌒> _/ /
/ -―  ̄ ̄  ̄"'" . ’ | y'⌒ ⌒i
/ ノ | / ノ |
/ , イ ) , ー' /´ヾ_ノ
/ _, \ / , ノ
| / \ `、 / / /
j / ヽ | / / ,'
/ ノ { | / /| |
/ / | (_ !、_/ / 〉
`、_〉 ー‐‐` |_/
>>121 以前の鯖と今の鯖で、スクリプトのソースは全く同じなんでしょ?
それで使えなくなったってことは、Apache側の問題なんじゃないの?
漏れはサーバの知識無いから詳しくはわからないけど。
130 :
121 :2005/07/15(金) 07:30:06 ID:???
>>128 あ・・・、殴られて気が付きましたが、
headerの前にechoで出力しちゃマズイですよね・・・ガクガクブルブル。
echo消したら直りました。ああ、基本的ミスでした。
でも待てよ…、逆に言えば、なぜ前の鯖ではheaderの前にechoがあったのに
正常に動いてたんだろう?? いま再度、前の鯖で試してみましたが、
やはりechoありでも問題なく動きます。なぜ???
・・・・と思ってphpinfoやってみたら、output_bufferingがオンになってますた・・・
ご迷惑かけました逝ってきます欝だ氏のう
14.30 Location The field value consists of a single absolute URI. Location = "Location" ":" absoluteURI
鯖でテストするなよゴミ屑
133 :
121 :2005/07/15(金) 07:50:13 ID:???
>>132 すいません、一応専鯖なので誰にも迷惑はかからないかと・・・。
無駄。
>>120 XMLと操作次第。
まあDOMで嫁。
>>131 初心者はこれ知らないケース多いね。
テストに出るよー。
パースがCで完結するから小規模なXMLデータはDOMのほうが良いと聞く
厨房
>>121 がてっきり共用鯖を使っているものだと思い込んで
玄人ぶって偉そうに忠告をしたつもりの
>>132 が、
「専鯖」という強力な返り討ちワードを食らった挙句に
苦し紛れに「無駄」と言い捨て逃亡。
これを「諸行無常」と呼ぶ。
なるほど。共有鯖だと思われてるという認識だったのね
>>132 みたいな恥ずかしいクズ野郎はこのスレに不要だなww
coqスレ辺りがお似合いだ。
いや、墓穴掘ってるぞ121 専鯖ってのが真実ならテスト鯖じゃないわけで
前の鯖がどうこうとか書いてたから、専鯖でもまだ実稼動してないんじゃねーの?
error_reporting = 0 or エラーログ見てないということは可能性高いと見たね
ローカルでデバッグするのに比べて無駄があるとかそんな話じゃないんじゃないのw
>>134
>>137 別に逃亡してないんですけど。
手元でやってたら0.1秒で気づくミスだろハゲ男。
ていうかメル欄全角かよ。俺ハズカシス。
>>141 リダイレクトが効かないと気づいてよかったな
PHPで、ディレクトリにある最新のtxtファイルを取得して それを違う名前.txtにリネームして同じディレクトリに作成するって 可能でしょうか??
>>148 ありがとうございます
どこか参考になるページとかないでしょうか?
ぐぐってはみたんですがわからなくて・・・
>ディレクトリにある最新のtxtファイルを取得して >それを違う名前.txtにリネームして >同じディレクトリに作成するって 一気にやろうとしないで、マニュアル見ながら上記を一行ずつ解決していけばいいよ。
わかりましたマニュアル見て落ち着いてやってみます どうもありがとうございます
超初心者です。 CSVを読み込んで、テーブルで出力しようと思ってます。 CSV内容 "1","十","aaa" "2","あ","bbb" "3","表","ccc" で、読み込んでるとこのソースが $fp = fopen("hoge.txt","r"); while($row = fgetcsv($fp,1024)) { echo "<tr>\n"; foreach($row as $column) { echo "<td>".$column."</td>\n"; } echo "</tr>\n"; } fclose($fp); です。 EUCならこのままで問題ないのですが、 出力結果をShift_JISで出力したいんです。 ですが、"表"とか"十"が入ってるデータがあると そこがうまく取り込めないらしくテーブルが壊れます。 うまいこと取り込む方法ってありますか?
>>154 SJISで出力したいなら、出力前にEUC-JP→SJISの変換を掛ければ良いだけだが。
ファイルの入出力も、ブラウザへも全てSJISでやりたいなら、それぞれの
入出力に変換を掛けるか、内部コードにSJISが利用できるようにコンパイルされた
PHPを使って、スクリプトのコードも全部SJISに統一すれば簡単。
>>154 EUCで全部やって、出力のみをsjisにするとか。
0x5cが下位バイトに来る文字は決まってるから、それに注意してデータを作成するとか(\をつける)。
157 :
154 :2005/07/15(金) 15:10:23 ID:???
>>156 データは外部から抽出されたものをそのまま使いますし
データに\を付けていくのは大変なのでNGです。
>>155 既存のシステムがなかなか停止できないので、
PHPのコンパイルは避けたいです。
mb_convert_encoding関数を使えばできそうなので
やってみようと思います。ありがとうございました。
158 :
nobodyさん :2005/07/15(金) 16:54:44 ID:Fg/gKXLa
SPBのPHP5徹底攻略に載ってるソースについて質問したいのですが、 4行程度のソースなんですが、ここに書いたらまずいですかね?
どうぞ
160 :
158 :2005/07/15(金) 17:09:27 ID:???
VODAFONEの絵文字をimgにおきかえるスクリプトなんですが 絵文字が2個以上並んでいると最初の一個しか変換されません。 対処ほうありますでしょうか? $str = "\x1b\$G\x21\x0fabc"; // 絵文字入り文字列 $regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現 echo preg_replace($regex, 'sprintf("<img src=\"%02X%02X.gif\">", ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
161 :
軟式PHP :2005/07/15(金) 17:23:29 ID:???
VODAFONEは同じ絵文字を並べると結合するよ。 $strWrk = 絵文字が入った文章; do{ $tmp = $strWrk; $strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk); }while( $strWrk != $tmp ); 俺はとりあえずこんな感じにしてるけど。
download.php という対象ファイルをダウンロードさせるためのphpプログラム $filename=basename($_GET['filepath']); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$filename\""); readfile($filepath); このようなものを作ったのですが、 filepathにrawurldecodeをかければ日本語ファイル名でもダウンロードできるのですが、 ダウンロード時のファイル名が文字化けしてしまいます。 これを解消するにはどのようにすればいいのでしょうか? これを機会にheader関数もよく勉強したいのでお願いします。
163 :
158 :2005/07/15(金) 21:01:03 ID:???
>>161 理解しようとしてるのですが、なかなかできません。。
$strWrkにvodafone絵文字が入った文章を入れて
>>161 を通すと絵文字の部分が何かに置き換えられてる
という使い方でよろしいのでしょうか?試してみたのですが echo $strWrk としたところ何も置き換えられないででてくるのですが
使い方間違っていますでしょうか?せっかく書いていただいたので試したいのでよろしくお願いします。
164 :
軟式PHP :2005/07/15(金) 21:14:31 ID:???
>>163 161のコードを通すと、連結した絵文字を分離するから、
それに対して、
>>160 のコードを通したらイけると思うけど。
あと
>>\x1b\$G\x21\x0fabc
は1個の絵文字だから意味ないよ。
取ってきたデータが、"1"とか"2"だったら、"01"とか"02"にしたい時は どうしたらよい??
stripslashes()したいんだけど値段表記などの\マーク(バックスラッシュ)だけは表示したいという時は 正規表現にかけるしかないのでしょうか?
同じnameのチェックボックスに、複数チェックを入れると、 PHPだと最後のチェックボックスの値しか取らないみたいなんだけど… ASPなら自動でカンマ区切り、 Perlなら区切るモジュールで、 PHPは?
× <input type="checkbox" name="test" value="test1"> <input type="checkbox" name="test" value="test2"> <input type="checkbox" name="test" value="test3"> ○ <input type="checkbox" name="test[]" value="test1"> <input type="checkbox" name="test[]" value="test2"> <input type="checkbox" name="test[]" value="test3">
implodeってムチャクチャ便利じゃん、ぽまえら知ってた?
知らないのはお前だけです。
174 :
nobodyさん :2005/07/16(土) 06:55:00 ID:6rljT00v
swfを生成するmingを使いたいのですが yumでインストールはできないですよね? makeしてPHPもコンパイルして構築しないとだめですか?
>>167 stripslashesが必要な文字列なら\は\\になってるはずだから問題ない
176 :
158 :2005/07/16(土) 11:16:40 ID:???
>>161 すぐ結果報告できなくてすみません。
V603SHから絵文字を入力して試してみました。
$strWrk = $_POST['body']; //$_POST['body'] = (男の子のマーク)(女の子のマーク)
do{
$tmp = $strWrk;
$strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk);
}while( $strWrk != $tmp );
$str = $strWrk;// 絵文字入り文字列
$regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現
$str = preg_replace($regex, 'sprintf("<img src=\'%02X%02X.gif\'>",ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
echo $str;
結果↓
<img src='4721.gif'><img src='475C.gif'><img src='4722.gif'>
男の子と女の子の絵文字を入れると間に違うのが入ってしまうのですが、このほかには何個ならべても
おかしな点はありませんでした。完全ではありませんが私としては満足できるレベルになりました。
ありがとうございました。
どこ調べてもDOCOMOの絵文字についてはたくさん書いてあるのですが、VODAFONEの絵文字については
ネット上でどのように書かれてるかなどみつけられませんでした。絵文字について書いてる本がもう一冊あったので買ってみます。
細菌描画の表示が遅く感じる <html> <body> <?php ほにゃらら ほにゃらら ?> </body> </html> こんな感じでhtmlのなかにスクリプト書きまくってるからかな。 DBの接続とかしてるし。 ob_startとか使ったほうがいいのでしょうか。
179 :
nobodyさん :2005/07/16(土) 16:26:26 ID:6tLNOCU8
スマソ、誤爆った
181 :
nobodyさん :2005/07/16(土) 18:18:31 ID:mgfMVhVU
色んな場所で使うモノを、 関数かサブルーチンにしようとおもってるんだけど どやってするの? <本プログラム> &GetDate; <呼び出しプログラム> sub GetDate{ $date = date('Y/m/d H:i:s', time()); } とやってみたら、エラーが出たよ。
182 :
nobodyさん :2005/07/16(土) 18:18:36 ID:wfLNoi6t
ホームページのヒット率の上げ方教えてください。Yahoo登録以外で。
認証ページをsslにしてみたんだけど、セッションが切れてしまいます。 どうやったら切れませんか?
PHPとMySQLでデータベースを作っているのですが、入門書には、 SQL文を発行した際に、例えば $sql = "select * from tbl_hoge"; $rst = mysql_query($sql); if(!$rst) print "だめぽ"; といったカンジでMySQLのエラーが出た際にエラーメッセージを表示させていました。 ところがPHPのマニュアルのmysql_queryの部分を見ると $rst = mysql_query($sql) or die("だめぽ"); というような例文を挙げています。 これらは同じものなのでしょうか? また、クエリーの結果falseが返ってくるケースとしては クエリーが文法的に間違っているので撥ねられた場合のみ考えておけばいいのでしょうか? 例えばクエリーに問題がなくともサーバーが不調でMySQLがうまく機能していないとかにも falseが返ってくることはありえるのでしょうか?
>>184 orはif文などに出てくるorと同じ
左がfalseなら右を実行するので、
mysql_queryがfalseならdieを実行する。
188 :
181 :2005/07/16(土) 19:24:56 ID:mgfMVhVU
>>187 Perlでしか出来ないってこと?
PHPでやりたいのです…。
Callしなくても、includeするだけで変数使えるとか!?
でも、呼び出しプログラムの方のエラーが出るの。
>>188 $date = _GetDate();
function _GetDate() { return date('Y/m/d H:i:s'); }
まず調べれ
191 :
181 :2005/07/16(土) 20:11:53 ID:???
<本プログラム> $date = GetDate(); <呼び出しプログラム> function GetDate(){ $date = date('Y/m/d H:i:s', time()); return $date; } としてみたけど、やっぱりえらーが出る。 Fatal error: Cannot redeclare getdate() in ...... 呼び出しプログラムの2行目ってなってるけど 2行目は呼び出しの所。 何故〜
193 :
181 :2005/07/16(土) 20:30:19 ID:???
あ、そか。 getdateて組込関数が既にあるからか… ごめんなさい、できました。 ついでに、すごく馬鹿な質問なのですが、 呼び出しプログラムの中で書いてある1個の関数の中に、 本プログラムで使いたい変数がたくさんある場合は 一つ一つreturnしないと、やっぱり無理?
お前はマニュアル読む気がないのか。
何を言っているのかワケワカラン 関数から複数の値を返したい、ってことを 言っているのか?
>>184 >or die("だめぽ");
このパターンの例文に関してなんだけど・・・
<html>から<body>と
</body></html>を、自分で作った関数で吐かせてる場合は
dieしちゃうと、そのエラーメッセージより後ろは表示してくれなくなるんで困ってます。この辺は皆さんはどんな風にしょりしてますか?
エラーメッセージの後ろに</body></html>をくっつけておくしかない?
197 :
184 :2005/07/16(土) 21:16:59 ID:???
>>187 なるほど。
エラー表示が1行で済みそうです。
どうもありがとうございました。
>>196 自分はエラー表示用関数を作ってます。
コンテンツを適当なヘッダとフッダではさむ通常の表示用関数に、
最後にexit()をつけたものをエラー表示用関数として使ってます。
198 :
181 :2005/07/16(土) 21:17:45 ID:???
やりたいことは、元々本プログラム内で書いていた、 $date = date('YmdHis', time()); $date_yyyy = mb_strcut($date, 0, 4); $date_mm = mb_strcut($date, 4, 2); $date_dd = mb_strcut($date, 6, 2); $date_hh = mb_strcut($date, 8, 2); $date_ii = mb_strcut($date, 10, 2); $date_ss = mb_strcut($date, 12, 2); を外部ファイルに記述し、色んな処理で手軽に$dateや$date_yyyyを使いたいのです。 ただのincludeしただけでも、 print $date; print $date_yyyy; のように使えるとは思うのですが、そうすると、外部ファイルの処理を全て動かすことになるので よくないかな…と。 すみません、何言ってるかわからなくて…。 あと、マニュアルも一応読んでるんですが、よくわからなくて…。 ごめんなさい(´・ω・`)
>>198 外部ファイルの処理を全て。。。という部分が判るようで
判らないんだけど、その部分だけを外部ファイル、他の部分は
別の外部ファイルでいいのでは?
--- date.inc.php ---
<?php
$date = date('YmdHis', time());
$date_yyyy = mb_strcut($date, 0, 4);
$date_mm = mb_strcut($date, 4, 2);
$date_dd = mb_strcut($date, 6, 2);
$date_hh = mb_strcut($date, 8, 2);
$date_ii = mb_strcut($date, 10, 2);
$date_ss = mb_strcut($date, 12, 2);
?>
--- etc.inc.php ---
<?php
//その他の処理
?>
--- 本プログラム ---
<?php
require_once('date.inc.php');
require_once('etc.inc.php');
echo $date;
echo $date_yyyy;
?>
次レスに続けるね。
続きね。 元発言だと関数化したい、という話みたいだけど、関数や引数、戻り値が あまり判っていないようなので、参考までに。 なるべく元のままで関数化しているので、あまりキレイなコードではないけど。 --- date.inc.php --- <?php function _GetDate() { return date('YmdHis', time()); } function _GetDate_yyyy($date) { return mb_strcut($date, 0, 4); } 以下、同様 ?> --- 本プログラム --- <?php require_once('date.inc.php'); $date = _GetDate(); $date_yyyy = _GetDate_yyyy($date); echo $date; echo $date_yyyy; ?>
201 :
196 :2005/07/16(土) 22:36:12 ID:???
>>197 なるほど。
いいのか悪いのか解らんけど、基本的にスクリプトは最初から最後まで<?phpと?>で囲んでしまって、getメソッドで飛ばしたモード判別変数でcaseで切り替え。
たいていはこんな作りなんで、どうしたものかと、思ってました。
エラーメッセージを引数にした関数を自分で作ってそこで実行すれば便利ですね。
202 :
198 :2005/07/16(土) 22:49:02 ID:???
>>199-200 レス、ありがとう(;_;)
>外部ファイルの処理を全て。。。
出来れば、共通で使うものは同じ外部ファイルにまとめて書きたくて
日付取得以外の処理も色々書いた場合、
ただのincludeだと、必要ない処理部分も読み込むことになるのかな、と思ったのです。
関数化にすれば、同一ファイル内に色々な処理が書かれていても
呼ばれたモノだけを読み込むのかなと思ってるのですが、
考えはあってるのでしょうか…。
>>200 は、
>>198 を元に書いていただいたんだと思うのですが、
キレイにするとどんな感じになるのでしょうか?
一つの関数内で
return $date;
return $date_yyyy;
return $date_mm;
return $date_dd;
return $date_hh;
return $date_ii;
return $date_ss;
てしたら、案の定おかしい事に(-_-;)
203 :
nobodyさん :2005/07/16(土) 22:54:51 ID:trCc1XOq
PHP5を使っているのですが 定数宣言をすべて interfaceに任せてそこでconstで定義しているのですが PHP5のinterfaceを Javaのinterfaceのように public interface Constant { public static final String CONSTANT_STRING = "test"; public static final String CONCATINATEED_CONSTANT_STRING = "This is a " + CONSTANT_STRING; } のような定義をしたいのですが これをPHPでやろうとすると interface Constant { public const CONSTANT_STRING = "test"; public const CONCATINATEED_CONSTANT_STRING = "This is a ".CONSTANT_STRING; //<-ここでエラー } 三行目のところでエラーが出てしまいます。 どうしてもJavaのような手法を使いたいのですができる方法はないでしょうか? Javaのfinal(最初の一回しか代入が許されていない定数)に相当するものが PHPにもあるかと思ってPHPのfinalを使ってみましたが残念ながらJavaのような定数宣言には使えず、 メソッドのオーバーライド禁止、クラス継承禁止程度にしかつかえないことに気付きがっかりしました。 もしくは私の知識不足かもしれません。 このように、Javaのinterfaceのような定数宣言を実装できる方法はないでしょうか? もし知っている方がございましたらご教授願います。
さらに質問ですが PHPにも、 Javaでよく使われているO-Rマッピングツール Hibernate, Cayenne, Jakarta Torque などといったもの、 データバインディングツール Castor, Relaxerといったもの はございますでしょうか? PHPで複雑なRDBMSやXMLを弄るとき、どうしても煩雑に なりやすいのでできればこういうソースコード自動生成ツールを使いたいのものです。
205 :
nobodyさん :2005/07/16(土) 23:03:05 ID:trCc1XOq
たびたびすみませんが さらに質問をさせて頂きます。 PHP5ではnamespaceが利用可能であるとどこかのサイトで知ったのですが 2chのあるスレをみると使えなくなったというレスを見つけました。 Facadeパターンなどのようなデザインパターン実装しにくく非常に残念です。 namespaceの概念が無いのでnamespac名.クラス名と指定していたものを 一つのクラス名にnamespace名_クラス名という長い名前にすることで クラスの重複を避けるという手法があるみたいですが これではクラス名が長すぎでかつamespace特有の利便性があるからこそ 実現しやすいデザインパターンも実現しにくくなっています。 PHP5では標準ではnamespaceを実現できないみたいですが、 他の方法、ツールやライブラリなどを使ってnamespaceを実現する方法はあるでしょうか?
Java使え
207 :
nobodyさん :2005/07/16(土) 23:50:26 ID:trCc1XOq
>>206 そうしたいのですが仕事上どうしてもPHPを使わないといけないのです。
ミッションクリティカルも少ない単純なアプリケーションですので。
プロジェクトマネージャの判断でPHP5を使うことになりました。
うんこリーダーだな
209 :
nobodyさん :2005/07/17(日) 00:17:03 ID:B/lkcUpB
UTF-8で設定したMySQL4.1に、UTF-8の2バイト文字を登録して、PHPで表示させたら 「?????????????????」と文字化けしてしまった。 同じサーバ上のphpMyAdminだとちゃんと表示される。 $query = 'select * from table'; $result = mysql_query($query); while($row = mysql_fetch_array($result){ print_r($row); } なにか特別なことって必要でしたっけ?
>>202 昔ながらのこんなテクニックもある。
function a(){
return array($a,$b,$c,$d);
}
list($a,$b,$c,$d) = a();
>>209 自分で書いたコードの方にはMySQLにコネクション張った後に、
「接続クライアントの文字コードはUTF-8だよ」って
MySQLサーバに送ってないから、デフォルトのlatinだって
思われてるんで、latinで表現できないのが?になってるんでね?
>>202 includeするとファイルの内容全てが読み込まれるから、関数にする、しないは
関係ない。
includeファイルの中で関数にしなかった部分はincludeされた時点で実行される。
関数にした場合はその関数を呼び出した段階で実行される。
そもそも関数そのものが理解できてないんぢゃないかと思われ。
本当にくだらない質問だと思われるかもしれないのですが、 1週間前にPHPをインストールして始めた初心者なので、お許し下さい。 $a = "あああ"; echo $a; この"あああ"の部分ですが、ダブルクォーテーションがなくても 表示されるのですが、なくてもいいんでしょうか? どういう条件で""で囲むのでしょうか。 数字はつけない、文字列はつける、変数には付けない でやっているのですが このままでいいのでしょうか?
$a = あああ;
ってこと?
その場合、「あああ」の部分はPHPのパーサが未定義の定数とみなして、"あああ"に再解釈する。
危ないので文字列にはきちんとクォーテーション(ダブルorシングル)つけるべし。
とりあえずマニュアルじっくり読んでガンガレ
http://www.php.net/manual/ja/
認証ページをsslにしてみたんだけど、普通ページに戻ったときに セッションが切れてしまいます。 どうやったらセッションを切らずにできますでしょうか。
>>208 メモリやパフォーマンスの都合上、
データを定期的に渡すだけの
簡単なものにはJavaを使いたくないそうです。
本当に簡単なプログラムなんですよ。
そのかわりXMLデータとRDBMSのテーブルの数が
多すぎですが。橋渡しをするだけです。
投稿したデータをデータベースに登録する際に
下記(入門本そのままのやり方)のようにエスケープ文字の除去・タグ無効化・カナ変換を行っているのですが、
$comments = htmlspecialchars(stripcslashes($comments));
$comments = mb_convert_kana($comments, "KV", "SJIS");
改行のみ維持させたいのでぐぐってみたところ
http://php.s3.to/tt/tt5.php の「複数行の入力」という記事が見つかり、
要はタグを無効にした後で、 改行コードを<BR>に変換するというやり方であると理解したのですが、
$comments = htmlspecialchars($comments);
$comments = str_replace("\r\n","\r",$comments);
$comments = str_replace("\r","\n",$comments);
$comments = str_replace("\n","<BR>",$comments);
$comments = stripcslashes($comments);
でいいのでしょうか?
「Shift-JISの場合バッククォートを除去」とかstripslashesとstripcslashesの違いがよく分かりません。
また、このURLにある参考ソースを見ると上記のstripcslashes()を行っていないようなのですが必要ないのでしょうか?
文字コードに関しては「データの文字コードと見る際(ブラウザ)の文字コードが一致してないと化ける」くらいの認識しかありません。
どなたかアドバイスよろしくお願いします。
219 :
nobodyさん :2005/07/17(日) 18:49:47 ID:5K+3/9Xz
PHPを使ってRSSの画像もサイトに表示できるコード載せてるサイトありませんか?
>>214 ありがとうございます。なるほど、PHPで再解釈してくれてるだけなんですね。
>>215 助かります。このマニュアルは、辞書的な使い方がいいのでしょうか。
恥ずかしながら、今のスキルでは理解するまでかなり時間が掛かってしまいます。
購入した本を元に勉強しているのですが、初心者向けに解説しているPHPサイトで
定番的なところとかあるのでしょうか?お勧めがあればどなたか教えてください。
徹底攻略のPDFは初心者向けだと思う。
222 :
nobodyさん :2005/07/18(月) 00:14:57 ID:tJQ/fctA
質問させてください。 ある文字列中の特定の文字がマルチバイトかどうかを判定するにはどうすればいいでしょうか? 具体的には、 abcdefgあいうえお0123456789 という文字列があった場合に、10バイト目がマルチバイトかどうかを判定したいです。 substrを使って切り取る場合に文字化けして困ってます。 全角を1文字としてカウントするmb_substrでは都合が悪いです。 よろしくお願いします。
>>221 ありがとうございます。マンモスのやつでしょうか?
やはり、あれは良いのですね。
pdfだと見辛いので書籍購入してしまいました。
>>222 mb_substrのかわりにmb_strcut
225 :
nobodyさん :2005/07/18(月) 02:00:26 ID:tJQ/fctA
>>224 ありがとうございます。
mb_strcutも一度試したのですが、使い方が間違っていたようです。
おかげさまでばっちり動作しました。
感謝感激です。
$a=1; $b=&$a; = ハードリンクだと思うのですが、 この後 unset($a); で、$bも空になるような、シンボリックリンクの様に扱うことは出来るでしょうか?
>>226 ない。が
NULLを代入すると全部NULLにはなる。
初心者向けのPHP本としては、紙谷さんの本がオススメ。
PHPの変数代入をハードリンク、シンボリックリンクと表現する
>>226 に萌
231 :
nobodyさん :2005/07/18(月) 13:02:11 ID:8pn6XAVH
$a = "あいうえおaaa"; echo mb_strlen($a); 13が結果として出るのですが、マルチバイト文字を1として数えされるにはどうすればよいでしょうか?
232 :
231 :2005/07/18(月) 13:06:37 ID:???
すみませんエンコーディングの指定を間違えてました。
233 :
nobodyさん :2005/07/18(月) 23:58:39 ID:Mt/K/zKf
全てのリンクURIにあるクエリを付加させたいとします。
たとえばセッションIDとか。この場合、リンクタグを書く際にいちいち
<a href="〜/?sid=<?= $sid ?>">次のページへ</a>
のように書くか、関数かなにか作って
<?= generateLink("
http:// 〜/", "次のページへ", $query) ?>
↓ 下のように出力される
<a href="
http:// 〜/?sid=xxx&name=xxxx">次のページへ</a>
のように書くかのどちらかくらいしか思いつきません。
前者はいちいち書くのが面倒だし、書き忘れると大変です。
後者はデザイン担当の人が使い方を覚えるのを嫌がるのでできれば避けたいです。
皆さんはどちらを使ってますか。あるいは他のやり方で解決してたりしますか?
>>233 セッションidの自動付加(session.use_trans_sid)以上の機能が必要なのかな?
xslファイルをメモリ上に生成してxmlに適用するのってどうやればできるんですか?
>>235 DOMDocument::loadXML()を使うんだ
>>236 PHPの仕様。URLデコード済みのデータが入る
238 :
nobodyさん :2005/07/19(火) 05:52:32 ID:IezOVCMv
PHP+MySQLでwebアプリを作っておりますが、DBについての基礎知識や経験が無いため、 いつもデータ型の決定やテーブルのレイアウトで悩みます。 データ型などを決定するにあたっての「原則」というか「常識」みたいなのはありますでしょうか? リファレンスなどを見てもそれぞれのデータ型に関する教科書的な説明しかなくて、 もっと実用的に「実際にはこういうデータの時にこの型を使う」みたいなTipsを知りたいのですが、 そういうのをまとめたサイトもしくは書籍ってありませんでしょうか? ド素人の状態から一人でゼロから学んで一人で開発してるので、 周りに誰にも質問できる人がいなくて困っております。。。
PHPと関係ないようだし、DBの質問としても理解しがたい部分があるなあ
>>239 後々のことを考えると、DBの初期設計はかなり重要だぞ。
MySQLならPHPとの連携も深いしな。
まあ趣味程度のヤツならあまり気にしなくてもいいかもしれんが。
241 :
nobodyさん :2005/07/19(火) 07:10:19 ID:UElzZYBi
,/”” ”ヽ ,/ __ _ ゛ / /““ “” ヽ | | / -━ ━.| | | |. “” l “ .|.| (ヽ | r ・・i. || / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ りリリ /=三t. | < その駄レス! 0円!! |リノ. | ,、‐''""''、 | 、 ー- " ノ ,、‐゙ ', . _,r''''''ー/ ”ー-- " ヽ ,、-'" j / 、 ,,,_ヾ ヽ───、;;;;;::.;、-'" ̄~~~゙゙゙" / / 、` ~ ~゙''''''''''"~´ ゙'ソ. ', ....::::::::::::/ ./ ... ´ .::::;/ ゙、..... ........:::::::::::::::::::::/ '、:....:::::", .:;rj゙ ゙、;;;;::::::::::::::::::;;;;、-''゙ ビシィッ! . ヽ;:::::"._ .:::i';/ ゙、 ゙、`~~~゙゙~ 、、、..,,_ . ヽ、;;;;;>、:::... ::::r' ゙、 ゙、:::::: ヽ ',:::::::::゙i'r、;:::::::!. ヽ ゙、 .::〉::::::.... } . ',:: l:/;;;::゙'ーr゙、 ヽ ゙.、.:::::;/'ー 、、;;;;____;;::、-'" }、 l:::::::~゙''''! i .........ヽ........:::::;r゙''" | l::::::::::::::l .〉、;;;;;;::、-'rーi''゙ ノ i;;;;;;;;;;;;;j::::/;;;;;;;;ノ:.. |: j
>>238 逆に言えば教科書的な説明で十分なくらいしかルールがないと思った方がいいんでは。
ド素人がいきなりカッチリしたもの作ろうって方が間違いでしょう。
>>238 俺も同じ境遇だったから(一人で開発、ド素人でゼロからって点で)、かなり共感。
DBのレイアウトは最初とまどった記憶がある。
まーでも「DB レイアウト」とかキーワードにググればけっこうでるんじゃない?
あとはあんまり考えすぎないほうがいい。
DBの場合、運用し始めてからでは変更が加えづらい
ってのが気になると思うけど(実際そうだけどさ)、
まったく変更できないわけじゃないし、
気に食わなかったら最初からやり直せるのも自分だけでやってることの利点。
もしくは気に食わない部分をいかに少ない変更でやりくりするかってのも抑えるべきポイント。
特に一人でやってると、期限がないし、プッシュしてくれる人がいないから、
こだわり始めると立ち止まりがちになる。
それよりはちょっと思い切ってさっと進んだ方がいいものができる。
ある程度こだわるのも重要なことなんだけどな。
ガンガレ!
ぐぐるならそんな微妙な単語じゃなくて「データベース 設計」だろ。
上のキーワードはネタだろ。 phpスレ的に言えることはパクれってことかな。
スレ違いには違いない むしろ板違い
247 :
nobodyさん :2005/07/19(火) 17:34:07 ID:QxSJ/3p1
抽象クラスとインターフェイスを継承・実装する場合、 その2つで同じメソッドを宣言(抽象クラスでは抽象メソッドとして)するのはダメなのでしょうか? またダメな場合どちらで宣言した方がいいのでしょうか?
248 :
nobodyさん :2005/07/19(火) 17:59:05 ID:Kj4TO5G6
COBOL詳しい人にPHPを覚えてもらおうと思うのですが、 どうでしょう?すんなりなじんでくれるでしょうか?
249 :
238 :2005/07/19(火) 18:12:44 ID:IezOVCMv
>>242 、
>>243 ありがとうございます。
そんなに気にしなくてもいいものなんでしょうか。。。
一人で開発してるとは言え、いちおう事業としてシステム提供しようと
思っていますので、スケーラビリティとかメンテナンスとかも考慮しなければ
いけないのかな、とかなり悶々と悩んでおります。
たとえば、ある数字(たとえば何かの通し番号)ひとつ格納するにしても、
「TINYINT」にしようか「SMALLINT」にしようか、それとも「VARCHAR」でいいのかな?とか…。
あるいは、数十文字程度しか入力されないであろう文字列用のフィールドでも、
念のために「TEXT」にしておこうかな…とか。たとえばVARCHAR(50)よりもTEXTにした場合、
領域が無駄に消費されるとか、レスポンスが悪くなるとかってあるのでしょうか?
効率が悪くなるとか・・・そういうの悩みはじめるともう尽きません。
>>249 心配するな。
その程度のことも判断できない、勉強もしない、勉強の仕方も判らないヤツが
作ったシステムに銭を払おうとは誰も思わん
252 :
軟式PHP :2005/07/19(火) 18:20:03 ID:???
>>248 学生レベル程度にCOBOLを組めるけど、COBOLは忘れて
心機一転で覚えてください。というしかないw
>>248 そのお方はCOBOL以外の別の言語は知っているのかな。
知っているのなら、そう心配することはないと思う。
COBOLしか知らないのなら、そんな方は相手にせずに
アルバイトでも雇ったほうが効率はいいと思うよ。
254 :
238 :2005/07/19(火) 18:32:09 ID:IezOVCMv
>>251 というか、もう第一弾で作ったシステムには既に数十社の顧客がおりますが…。
月商もあなたの給料の3〜4ヶ月分くらいはあると思います。
今のところシステムには特に問題は出てないですが、より良いものにしたいのです。
>>250 >WEBプログラミング@2ch掲示板
>Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。
そろそろ失せろやカス
>>255 喪前は
>>251 か?ww
偉そうに上に立ったつもりが思わぬ反撃されて逆ギレするのはダセーよ(藁
>>238 とりあえずDB関連の本を何冊か読んでみろ。そんでもう一回質問しる。
自演乙
258 :
軟式PHP :2005/07/19(火) 18:44:27 ID:???
ageてたら自演の匂いがするからsageたほうがいいよ。
>>249 うわ、2〜3年前の自分を見るようだ。
とりあえず、数値以外は
全 部 テ キ ス ト に し て お け
変に設計勉強してテーブル分けると自分でどうにもならなくなる。
困ったらフィールド追加で免れろ。
そんな感じで作った奴もトラブルなくちゃんと動いてるし、なによりメンテしやすい。零細企業が立派な決めごと作ってもしかたないのと一緒。
261 :
nobodyさん :2005/07/19(火) 18:48:58 ID:kS82naWb
PHPのマニュアルを読んでいて気になったんだけども、
UNIX/WindowsともにApache2.0.xでPHP4を実運用するなって旨の
文書を見つけた、これって今のVersionのApache2.0.x+PHP4.4でも
云えることなのかな?
#参考URL
http://php.s3.to/man/install.apache2.html >"Apache 2.0とPHPの組み合わせを(Unix、Windows
>どちらのプラットフォームでも)実運用環境で使用しないでください。"
262 :
軟式PHP :2005/07/19(火) 18:52:49 ID:???
スレ違いだとは思うけど俺も一言。 全部テキストってのは俺はしないけど、260の言うようにある程度冗長性を持たせて データ型は作った方がいいと思われ。MySQLは途中で型変更出来るが PostgreSQLなんかは途中で型変換出来ないので。 あと、最低限の正規化はやっといたほうがいいと思う。関数を作らないプログラムみたいに保守性・拡張性がガクンと落ちる。
264 :
軟式PHP :2005/07/19(火) 18:56:11 ID:???
↑突っ込まれると嫌なので一応PostgreSQLも型変換をやろうと思えば出来る。 一時的なカラムを作成して、そっちに一回移してホンニャカってやる。
265 :
軟式PHP :2005/07/19(火) 18:58:23 ID:???
数値と文字列の使い分けで悩んでいるようだと、SQLをうまく使わずにデータファイル代わりにDBを使っている状態じゃないかな?
ソート時の辞書式・数値式やjoinする時の事を考えるとデータ型ってのはある程度決まってくる。
その上で、冗長なデータ排除や効率化のためのテーブルのレイアウト(てか、データベース設計、テーブル設計と言うかな)の話になってくる。
ここまでの話はPHPが関係する部分は無いから、専用板であるDB板が良いと思われ。
書籍スレもあったんじゃないかなぁ。
>>261 本家のマニュアルを読んでください。
>>265 おおっ、成る程、サンキュー
>>261 いやいや、ホント申し訳ない、
キチンと検索せんといかんね。
$a = "<FONT size='2'>hoge</FONT>"; このようにすると$aには<FONT size='2'>hoge</FONT>という文字列が格納 されるわけですが、 $aにサイズ2のhogeという文字列を格納したい場合、 (つまりHTMLを反映させた後の状態を格納したい場合) どのようにすればいいのでしょうか? ヒアドキュメント以外で方法はあるでしょうか?
$a = 'サイズ2のhoge';
>>269 サイズが2倍になったhogeを文字列に格納したいってことか?
であればムリ。ヒアドキュメントを使ってもムリ。
いったい、その文字列を格納して何をしたいんだ?
>>269 よく分かんないけど、文字列そのものとその属性値を分離したいってことなら、配列に格納するくらいしか無いんじゃないかな?
そいでもって、出力する時にhtmlとして整形する。
(下のようにsprintfなりヒアドキュメントなりテンプレートエンジンのフィルタなり。xslの方に飛びぬけるのもありか...)
$a = array('str'=>'hoge','size'=>2); // 文字列は'hoge'、属性値は2
echo sprintf("<font size='%d'>%s</font>",$a['size'],$a['str']); // <font>を使って、size=2
echo sprintf("<span style='font-size: %dem'>%s</span>",$a['size'],$a['str']); // <span>を使って font-size: 2em
まぁ、格納するならstyle属性ぐらいにしとけ
なかなかいい釣り餌ですね
275 :
nobodyさん :2005/07/19(火) 21:00:39 ID:4ZlIiQSx
php 4.4.0でeacceleratorは動きますか? makeし直して入れてみたんだけど、なんか動かないっぽ。
>>276 どうも、動きました!
eAcceleratorをmakeしなおす時に、make cleanしてなかったためのようでした。
278 :
nobodyさん :2005/07/19(火) 21:42:38 ID:4ZlIiQSx
PHP 5.1がいつ頃 stable になるか、ある程度、予測はできないですかね?
暇なんでstableみたいなPHP 5.1つーのを作ってみるわ。もちろんWindowsネイティブな。少しまちなー。
>>261 マニュアルのその記述はいまいち情報不足。
prefork MPMとかCGI版とApache2との組み合わせで問題はまず起きない。
worker MPMとかperchild MPMと組み合わせた時にまだまだ問題が多いので
実運用では使うなつうこと。prefork MPMでApache2運用つうのも
Apache2の本来の実力じゃないしね。
あと
ttp://php.s3.to/ のマニュアルは古いから、余り参照すんな。
Googleでの検索では上位にくるけど。
$keyword="aaa bbb ccc ・・・" とスペース区切りの文字列(フィールドの数は可変)をそれぞれ $word[0]="aaa" $word[1]="bbb" $word[2]="ccc" ・ ・ ・ と別の変数に格納するのはどうすればよいのでしょうか? $ketwordのフィールドの数が決まっていればsplitで切り出せるんですが、 可変するため、うまく切り出すことができません。
1年ぶりくらいで新しくなったchmもらったら全く使えなくなってたので誰かどうにかしてください。
>>281 最後の方読んでなかったorz
正規表現使わないんだったら、splitよりexplodeの方が高速だよ。
普通に
$word = explode(' ', $keyword);
でいけるでしょ。
list($word[0], $word[1], ・・・) = split(' ', $keyword);
とかしてない?
>>281 >$ketwordのフィールドの数が決まっていればsplitで切り出せるんですが
splitの使い方間違っていないか?
>>284 別に
$word = split(' ', $keyword);
でもいいわけだが。
すみません、PHPというよりは一般的な質問になるんですが、一応PHPで
コーディングしてるのでアドバイスいただけだらありがたいです。
今、ブログから更新通知Pingを受け取って新着エントリー一覧を表示する
プログラムを書いてます。
http://www.boundless-ocean.ne.jp/archives/000049.htmlあたりを参考に 、
PEARのXML-RPC Serverを使ってブログのタイトルとURLを読み出すこと
はできました。
しかし、新しく作成されたエントリーのタイトルやURLをどうやって読み出せば
良いのか分からないのです。
普通のPingサイトだと(Myblog japanとか)個別にエントリーのタイトルとURL
も表示できているので、方法はあると思うんですが・・
よろしくお願いします。
288 :
281 :2005/07/20(水) 02:03:20 ID:???
>>284-286 レスありがとうございます。
splitで切り出したフィールドの扱いを勘違いしていました。
フィールド数が可変の場合はcount()でフィールド数を取得すれば良かったんですね・・・
$word = explode(' ', $keyword);
$cnt = count($word);
$cnt = $cnt -1;
for ($i = 0; $i <= $cnt; $i++) {
$word[$i] の処理;
}
のような感じで出来ました。
289 :
287 :2005/07/20(水) 02:21:48 ID:???
自己レスです。 RDFを読み出して、新しく作成されたエントリーのタイトルやURLを取得することにしました。 スレ汚しすまそ。
290 :
238 :2005/07/20(水) 05:13:11 ID:nMj8v/ee
>>260 ,
>>262 ,
>>267 ご指導ありがとうございます。
では、とりあえずあまり深く考えずに冗長性を持たせた構造にして、
正規化(←この概念を忘れてました!ありがとう!)に気をつけてやってみます。
あまりシビアでコンパクトにしてのちのち身動き取れなくなって困るよりも、
余裕を持って適当(?)に作ったほうが「大は小を兼ねる」と考えちゃって良い…みたいですね。
誰も何も言わないからか、凄い気になるんだが。。。
>>238 は
・PHP+MySQLでwebアプリを作ってるが、DBについての基礎知識や経験が無い
・ド素人の状態から一人で学んで一人で開発して周りに誰にも質問できる人がいない
にも関わらず
・第一弾で作ったシステムには既に数十社の顧客がいる
・月商も
>>251 の給料の3〜4ヶ月分くらいはある。
のんだよな?
結構突っ込みどころ満載な気がするんだが。。。そうでもないのか?
くだらねぇ質問スマソ
>>291 自分が不利になると
「僕のパパは社長だからおまえ等みんなクビにするぞぉ」
っていう小学生と一緒
>>290 数十社の顧客に納品されている正規化すらできていないDBを
見てみたい、激しく見てみたい。
第1〜3の正規化もしてないのか?
よくあるPHPのサイトで<a href="/?key=value">value</a>とやるとURLの後に/?key=valueとつきます。 例えばkey=value1のときはfile1をincludeして、key=value2のときはfile2をincludeすると言うのはどうやるのでしょうか? ページは変わってもサイトの一部分だけしか変える必要のないときなどに使いたいのですが実際にどうすれば良いのか分かりません。
>>297 switch ($_GET['key']) {
case 'value1': require_once('file1.inc.php'); break;
case 'value2': require_once('file2.inc.php');break;
…
}
299 :
nobodyさん :2005/07/20(水) 11:34:41 ID:fiiwUfZg
質問です。 配列 $hairetu から「yahoo」という文字を検索し、見つかった配列番号(?)を取得 と言うのはどうやるんですか?$hairetu には1000行くらいあるとします。
array_search()
宿題は自分でやるものです。
>>300 あー!!array_search()ですか!!
あると思ったんだけどググっても見つからずに悩んでいました。
のどに詰まっていた納豆がスッキリ胃に入っていきました。トンクス
303 :
nobodyさん :2005/07/20(水) 12:06:50 ID:AeK1ZPXK
仕事場の蔵書をWEB管理するソフトが欲しいのですが、Web系初めてなんです。 スキルは C COBOL VBA SQL 位しかないもので。 PHP以外にいろいろありますが、皆さんがPHPやってる理由を 聞かせて頂けるとありがたいのですが
大学でPHPの講義とかあるなら受けてみたいもんだ
>>298 それをファイルをincludeさせたい部分に書くだけですか?
なんだか色々調べててフレームワークとかセッションとか出てきたんですが、これらは関係ないのでしょうか?
>>306 せっかくレスもらったんだから自分で試せばいいのに
309 :
299 :2005/07/20(水) 14:10:38 ID:fiiwUfZg
続けて質問です。 array_search() って完全一致じゃないと駄目なんですね。 部分一致でも検索できる方法ありますか? 例えば、hensu[10] = ヤフーショップ の場合に、 ヤフー だけの検索で引っかかって欲しいんです。
>>309 for count() mb_strpos()
PHPの話じゃないかもしれませんがお教えねがいます。 <form method='POST' action='hoge.php'> <input type='image' name='kbn' value='1' src="hoge1.gif"> <input type='image' name='kbn' value='2' src="hoge2.gif"> </form> という2つのイメージボタンを持ったフォームで どっちのボタンがクリックされたかを'hoge.php'で取得するには どうしたらよいでしょうか? 'hoge.php'で$_POST['kbn']がNULLになってしまうので困っています; どうかお助けください。
312です。 なんかinput type='image'はvalueは無効みたいですね。 nameを変えて座標がやってくるかどうかで判断しなくちゃですね。 他にいい方法っありますか?
>>313 んー。type=button にして、CSSで背景画像の変更とかじゃ駄目?
>>313 俺の環境ではちゃんと取得できた
var_dump($_POST);
で
array(3) {
["kbn_x"]=>
string(2) "47"
["kbn_y"]=>
string(2) "53"
["kbn"]=>
string(1) "1"
}
俺のサーバーじゃ$_POST['kbn']は普通に取得できたぜ
test.php ---------- <form method='POST'> <input type='image' name='kbn' value='1' src="hoge1.gif"> <input type='image' name='kbn' value='2' src="hoge2.gif"> </form> <? echo $_POST['kbn']."<br>\n"; print_r($_POST); ?> ----------
Firefox + PHP5.0.4 なら取得できた IE6 + PHP5.0.4 ならNGだった
CSVファイルを配列に読み込んで、○行目から×行目までを出力するとき、今までは for($i=○;$i<=×;$i++){ echo $array[$i]; } と言うループでやっていましたが、もっとスマートな方法ありますか?
>>314 あっそれもいいかも
でも、buttonってsubmitできましたっけ
onClick='javascript:this.submit()'すれば
いいと思うけど javascriptは使わないポリシーなので
申し訳ない。
自分の環境ではやっぱり
$_POST['kbn_x']はとれても$_POST['kbn']はとれません。
これってPHPの環境変数の設定の違いでしょうか?
申し遅れましたがPHPのVerは4.3.10なんですれど。
>>318 ブラウザによって違うんですね。
ネスケ系のブラウザエンジンは取れるんですね。
了解しました。
322 :
315 :2005/07/20(水) 16:24:06 ID:???
本当だ IEだとだめじゃ
さて、正しい動作はDotch!?
仕様書よむかぎりではIEが不正動作の様子。 割と有名な問題だから検索すれば対策みつかるよ。
phpで半角数字以外の文字を消すにはどうしたら良いか教えてください。 「x1xx」とか「,2dd」を「1」「2」にしたいです。
>>325 preg_replace('/[^\d]/' , '', 'x1xx');
>>326 dです。
正規表現を勉強せねば・・・やっぱ慣れですかね?
328 :
>>291 :2005/07/20(水) 19:00:55 ID:e5fXpd1f
charsetをShift_JISで書いたソースで 「―ソЫ\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭xx」 を送信すると$_POSTで取ったときに'\'(C5)が付いてくるのって charsetを変えずにうまいこと解決するには どのような対策がベストなのでしょうか?
>>329 magic_quotes_gpc = Off
331 :
nobodyさん :2005/07/20(水) 22:43:59 ID:0VkkmhCL
PHPでブラウザのキャッシュを外して表示させる場合は以下のように書け と言う様な記事に遭遇しました。、 header("Content-Type: text/html; charset=文字コード"); header("Expires: Thu, 01 Dec 1994 16:00:00 GMT"); header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ↑の文章で 「header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");」 この時間の意味は何でしょうか? 解説によって時間が異なったりします。
>>330 あ〜そんな設定があったのですね。
やってみます。
ありがとぉ
>>331 そこまで勉強したんならもう少し勉強してみてください。
あるクラスのメソッド内で他のクラスのインスタンスを生成した場合、そのインスタンスの消滅はいつになるのでしょうか? 生成したメソッド終了時? それともスクリプト全体の終了時? もし全体の終了時ならメソッド終了時に消滅させることって出来るのでしょうか? デストラクタ(__destruct)を呼び出すとかして。
>>334 __destructでechoでもすればいつも消えるかわかるだろ。
質問するまえに自分でやれることやらないと、何時までも他人に頼ることになるぞ
336 :
335 :2005/07/21(木) 01:15:26 ID:???
いつも消えるってなんだorz
参照されなくなったとき〜
>>331 キャッシュの有効期限だ。
つまり、今現在の日付より前に設定すれば、
アクセスしてきたブラウザはキャッシュの有効期限とみなして
新しくページを読み込むという理論。
だから今より古い時間ならいつでもいいけど、
時間が止まってるパソコンのことも考えて(?)
10年くらい前にしておけば問題無い。
>>340 有効期限のことって解説に載ってなかったの?
俺はてっきり「1994年12月1日16時ちょうど」って時間に特別な意味があるのか聞いてるのと思ってた。
342 :
238 :2005/07/21(木) 12:34:04 ID:1d7jG9nE
>>291 、
>>298 第一弾で作ったシステムは、DBの重要度・依存度はそんなに高くない
ASP(顧客ごとのオリジナルシステムじゃないですよ)なので。
項目数も更新頻度も少ないから一つのテーブルでまとめちゃっても
特に支障なかったんですよ。
でも今作ってるのはDBに入れるべき項目数もレコード数も多くなるので、
きちんとした設計にしようと思って質問しました。
で、もう半年くらい営業してるんで、顧客が数十社というのはむしろ少なすぎです。
開発と営業を一人でこなさなきゃならないのでどうしても時間が足りないんです。
だからそろそろ営業マンと技術者を一人ずつ雇います。
>>296 いちおう第三正規化まで(無意識的に)やってました。
正規化という概念があるのは後付けで知ったんですが。
343 :
nobodyさん :2005/07/21(木) 13:30:41 ID:jGRVDiGI
うちにインストールしたApacheで mb_strpos 関数が使えません。 PHP.ini のどこを変更すればいいんですか?
最近の流行りか? プロフェッショナリズムの欠如したプロフェッショナル(自己矛盾だな…)
345 :
nobodyさん :2005/07/21(木) 14:34:01 ID:pW+lONe3
すいません。PHP3とqmailで出来ているシステムに 手を加えたのですが、これで良いのでしょうか。 qmailでメールのエイリアスを追加したのですが、 /var/qmail/alias/.qmail〜 というファイルに &〜 というメールアドレスを追加したのですが、qmail を再起動しなくてもメールのエイリアスの追加は 完了したのでしょうか。 qmailの再起動も知らない初心者なので、これだけ で良いのかと心配しています。どなかか教えて下さ ると非常に助かります。お願いいたします。
PHPとMySQLで入門本を見ながらいろいろ試してるんですが、 mysql_close()とmysq_free_result()は必要なのでしょうか? 入門本では特に「切断する」「開放する」以上の説明はないのですが、 PHPのマニュアルには 「mysql_closeは通常必要ない」「結果保持用メモリは自動的に開放される」 とあります。 プログラミング的には書くのがお行儀がいい、ということなのでしょうか? それともやはり「どっちでもいい」のでしょうか?
>>345 再起動は不要。
エイリアス追加後、再起動せずにエイリアス宛にメールを
送信してみれば聞くまでもないことだと思うんだけど。
てか、そもそもスレ違い。
<form method='POST' action='hoge.php'> <input type="text" name="hoge" value="10"> <input type="text" name="hoge" value="20"> <input type="text" name="hoge" value="30"> </form> をsubmitして 'hoge.php'で$cnt=count($_POST['hoge'])ってしたら $cntは3になると期待したんですが1になっちまうんです 3にするにはどうすればよいんしょうか?
350 :
nobodyさん :2005/07/21(木) 15:27:23 ID:pW+lONe3
>347 >348 345です。ありがとうございます。再起動せずに エイリアス宛にメールを送信して見たら、出来ま した。そのようなことも思いつかないなんてどう かしてますね。(笑) また、スレ違いでしたので、今後はqmailスレで 聞くようにします。 いずれししても、ありがとうございました!!
351 :
nobodyさん :2005/07/21(木) 15:35:11 ID:uSqim16b
プログラムの処理時間を計算する為に $start=microtime(); //処理 $end=microtime(); echo $end-$start; ってな感じでmicrotimeの計算をした時に近い数字同士だと 指数になったり結果がマイナスになったりするんですがなぜなんでしょうか?
>>346 一般的なプログラミングの作法としては、ちゃんとプログラム中で
閉じたり開放するのが正しい(と思ってるので、自分はしてる)。
但し、PHPの仕様としてスクリプト終了時にmysql_close()とmysql_free_result()
相当の動作が自動的に行われると明記されているので、"PHPプログラミング"の
作法としてはスクリプト中で記述しないというのは正しい。
またプログラム処理の結果を吐き出してから後始末を行うので、
結果を得られるタイミングも早く、すなわち処理が速く終わる。
もっともmysql_closeはMySQLコネクションというリソースを、
mysql_free_resultはMySQLからの結果を保持する記憶域を開放するためのものであるから、
スクリプトの動作時間が長く、それらのリソースを無駄に保持する負荷が
比較的大きいのであれば、適宜開放してやるのが良い。
>>346 俺の考えだけど、俺の場合はソースの頭でオープンさせて最後に開放させてる。
と言うのも、その都度開放するとサーバに負担がかかると思ったから。
何度も開けたり閉じたりするより、最初に開けちゃって最後に閉じた方がよいかと思って。
>>349 です。
事象がわかりましたが、
対策が解りませんのでどなたか教えてください。
<form method='POST' action='hoge.php'>
<input type="text" name="hoge" value="10">
<input type="text" name="hoge" value="20">
<input type="text" name="hoge" value="30">
</form>
をsubmitしたのに配列で受け取れないのは
<input type=image>で送信されたものの場合で試しに
<input type=submit>にしてみたら配列がやってきました。
イメージを送信ボタンとして配列をPOSTしたいのですが
javascriptを使わずに出来ますでしょうか?
>351 microtime() で何が返ってきてるか見てみなよ。
>>355 <input type=submit style="background-image:url('イメージ')">
じゃダメ?やってないから分からんけど。
>>359 <button type="submit"><IMG></button>
362 :
nobodyさん :2005/07/21(木) 19:25:40 ID:NWEHg4fz
フォームを作成しそこに書き込むと掲示板に投稿され さらに内容が私のメールに届くようにしてあるスクリプトを作成したのですが これに加えて 自分で作成したメールアカウントにメールを送信したら そのメール内容が掲示板に投稿されるようには出来ますでしょうか?
メールを受信した瞬間にログを取り出すのではなく、掲示板を表示するときに適宜メールの内容を取り寄せる形ならimap系でできるかも。
>>362 SMTPサーバーを操作できるのならエイリアスファイルから登録用スクリプトを呼び出せばいい。
sendmailならこんな感じで呼び出すけど、SMTPサーバーによって設定ファイル、設定内容は
異なるので自分で調べてくだされ。
myaccount: "| /path/to/php 登録用スクリプト名"
これで
[email protected] にメールが届くと登録用スクリプトが呼び出される。
スクリプトでは標準入力からメールデータを取り出して掲示板に登録する。
もちろんこのスクリプトはオマイさんが書くんだよ。
SMTPサーバーが触れないのならPOPやIMAPを使うしかないかも。
あともう一つ、cronを使って定期的にポーリングする方法もあるね。 大体この3つくらいが定番かと。
smtp鯖をしらべるには?
rh9 php4.3.11を使用しています。
pear Net_SMTPを使用し
[email protected] さんのメールアドレスが実在するかチェックする
スクリプトを作成しています。
Net_SMTPコンストラクタ作成時に 接続先サーバを指定するのですが、
[email protected] (abc.co.jp)のSMTP鯖を調べる方法は
ありますでしょうか。
>>366 getmxrr()
んでも、MXが見つからん場合はAとかに送るんじゃなかったっけ?その辺りは実装しなきゃいけないかもね。
368 :
nobodyさん :2005/07/21(木) 21:27:16 ID:hk8J7OA3
質問です。 <?php $a = @$_POST["answer"] if($a="ほげほげ"){ echo "正解"; } else{ echo "不正解"; } ?> 上記のif文で、$aが"ほげほげ"を含む場合には正解を表示させるには どのように記述したらいいのでしょうか? $aが"ほげほげです"でも"ほげほげかな?"でも正解にしたいのです。 よろしくお願いします。
370 :
nobodyさん :2005/07/21(木) 21:54:25 ID:hk8J7OA3
>>369 さん
有難う御座います。
リンク先をみても3%くらいしか理解できませんでした。
if(mb_strpos($a,"ほげほげ"){
echo "正解";
}
false{
echo "不正解";
}
こんな感じでしょうか?なんか足りない気がします。
preg_match使えば?
PHPマニュアルのmb_strposを読んで3%しか理解できない人が
正規表現を理解できるとは思えないけど(バカにしているんではないよ)。
>なんか足りない気がします
ってどういう意味だろう。実行したけどエラーがでるのかな。
エラーがでるのならエラーメッセージぐらいは張って欲しいけど。
とりあえず)が一個足りないけどコピペミスなの?
if(mb_strpos($a,"ほげほげ"){
↓
if(mb_strpos($a,"ほげほげ")){
このままmb_strposが使えるまで頑張るか正規表現を勉強するかは
>>370 次第。嫌がらせではないからキレないでね。
3%くらいしか理解できませんでしたって理解する気もないだろ
echo$anser=mb_ereg("判らない事",$a)?"取り合えず調べる":"くだ質に丸投げ";
mb_strpos使えっていうからやったのに何で叩かれるんだよー・゚・(ノД`)・゚・ ウワーン ってのが聞こえてきそうだ。 var_dump(mb_strpos($a,"ほげほげ"); とかして、どんな値が返ってくるのか実感して欲しいところだな。 誰も突っ込んでないけど、 if($a="ほげほげ") ってのもかなりイタイ
377 :
nobodyさん :2005/07/21(木) 23:44:29 ID:OPf2mV1L
PHPを利用したプログラムを2つ教えてください。 @九九表 A2次方程式の解 ax2+bx+c=0
くだらない質問だと思うので、こっちにレスするかな。。
>>377 どこまでやったのか書いてみ。
2.の方は学年と性別、妹の有無の情報が無いと、出題者の意図が分からん。
379 :
nobodyさん :2005/07/22(金) 00:17:20 ID:1VklDg1R
377です。まったく手をつけられていません。 九九表のプログラムをすべて書いていただけるとありがたいですm(__)m
PHPでサイト内検索をしたいのですが、具体的にどうやって作っていけば良いのか分かりません。 せめて過程だけでも教えて下さい。
>>379 【php】part29【php】の方にレスついてますよ。
>>370 if(mb_strpos($a,"ほげほげ") === FALSE){
echo "不正解";
} else {
echo "正解";
}
文字エンコーディングの設定必要あるかもだけど。
isleのレン鯖契約したらmb_*もmb_reg*も入ってなかった。 アリエナスww 上記のライブラリを追加したらリコンパイル必要ですか? apache再起動で済みますか? あと、php-usersのMLをどなたかのサイトでアーカイブにしてnamazuに喰わせてあったのですが うかつにもブックマークし忘れました、どなたかurlわかりますか?
384 :
383 :2005/07/22(金) 03:01:06 ID:???
385 :
nobodyさん :2005/07/22(金) 06:59:06 ID:7S1nHf8D
pear::Authでおおはまりしています。
具体的には
CREATE TABLE myAuth (
myUserColumn VARCHAR(50) NOT NULL
, myPasswordColumn VARCHAR(32) NOT NULL
);
ってテーブルを作って、
ttp://dozo.matrix.jp/pear/index.php?PEAR%2FAuth ここいらを参考に(というかそのまま)
認証をかけてみたんですが、常に認証失敗になってしまいます。
Pear::Authのインスタンスをprint_rしてみたんですが
どこで失敗しているのかがわからず(ちなみにDB接続は成功しています)
解決の糸口がつかめません。
試しにlast_queryをそのままDBに入れると、ちゃんと帰ってくるんで
一体どこでつまづいているのかサッパリです。
同じような現象になった方、解決方法ありましたらよろしくお願いします。
includeするファイルの拡張子ってどうやって決めるんでしょうか? 基本的にhtmlコードや普通のテキストを呼び出したりするときは.incで統一してるんですが、 phpコードとかだったら.phpにするべきなのかな?
>>367 さん。ありがとう。
pear Net_DNSを使用しました。
>>386 特に決まりはないから好きにしたらいい
俺はphpコードはphpにしてる。他の拡張子だとソースの内容が丸見えになるので
後はhtmlだったりtxtだったり
config.inc.phpなんてやってるのもある
389 :
368 :2005/07/22(金) 12:42:26 ID:???
>>382 さん
有難う御座います。うまくいきました〜
インクルードファイルも.phpにしておかないとドキュメントルート内だとURL直叩きでソース見放題になるぜ ドキュメントルート以下にそんなファイル置く奴が悪いんだが。 .htaccessとかで.incを.php扱いにすることも出来るがそんな手間を考えるなら拡張子を統一するのがベスト。
>>389 結局、答えを全部教えてもらう以外、自分では何もやらない奴だったんだな。
そんなの楽しいのか。。。
392 :
nobodyさん :2005/07/22(金) 16:26:40 ID:s5umLjZL
すみませぬが、質問です。 PHPをWindowsで使う際、execを使って外部のexeやバッチファイルを バックグラウンドで動かすことは無理なのでしょうか? 時間のかかる処理をexeやバッチファイルで実行しているのですが、 exeなどをファイルにリダイレクトしても、結局バックグラウンドでは 動作せず、ブラウザが読み込み中のまま待たされることになってしまいます...。 処理が終わったら戻ってくるんですが。 Linuxだとリダイレクトと「&」を使って簡単にできるのに...。 PHP 4.3.11+IIS(Apacheでも同じ)です。 ぜひご教示を!
393 :
nobodyさん :2005/07/22(金) 16:29:55 ID:mNPTggfm
XMLパースについて質問ですが SimpleXMLは名前の通り使いやすいと思うのですが SimpleXMLよりも使い勝手がよいパーサというものは あるでしょうか?
394 :
nobodyさん :2005/07/22(金) 16:34:59 ID:mNPTggfm
PHPで、C++やJavaのように、 変数を使う前に宣言してから利用可能に するということはかのうでしょうか? クラス内のフィールド(メンバ変数)とは別に。 PHPは、変数名などのスペルミスをすると どこにバグがあるのか気づかずに 苦労することがあります。デバッガにも気づいて もらえません。 それをC++やJavaのコンパイラように、 あらかじめ変数を宣言してから 利用できるようにすればどこにまちがい があるのかかなりわかりやすくなり、 スペルミスにもすぐに気づきやすいのですが。 これをC++やJavaのように楽にする方法はないでしょうか? C++やJavaを使えと言われても仕事上、そうはいかないものでして.。
>394 error_reporting (E_ALL); これで未定義の変数に警告を出してくれる。
配布したのですが、改造されたくないのです。 PHPは、コンパイルできませんか?
>>396 つ[どっかの会社が出してる(忘れた)エンコーダー]
ありがとうございます。 ionCube PHP Encoderですか? PHPスクリプトをコンパイルした場合 こういうのを、サーバーに入れないとだめなんですか?
>>396 そういった用途の有償・無償のプロダクトがある。
ソース配布前提ライセンスのライブラリ等を利用するときは留意せよ。
ありがとうございます。 それで、そういうのを使って、 コンパイル後のファイルを配布を受けたものは、 普通にサーバーの入ってるパソコンに 置くと、ネットに乗せられるんでしょうか? お願いします。
>>401 書いてる日本語が変。
ネットに乗せられる
→(解釈)アップロードしてWebサーバのコンテンツ配下に置ける(ネットに乗せられる)か
→Yes. 単なるバイナリーファイルだから。
すみません、 IEなんかで見られるんですか?という意味です。
>>401 まずお前は日本語と一般教養の勉強をしたほうがいい。
コミュニケーションできないと開発も出来ない(たとえ一人で開発してるとしても)。
ははは、そんな安月給のお仕事につくつもりは無いですよw
エンコーダーは高いよ 金が・・・
>>403 「見る(見られる)」ってのも、これまた抽象的な表現だな。
可能。特にWebサーバでそのファイルに
アクセス出来ないようにしていなければだけど。
オイラのエスパー脳を発動してみたところ、 ・配布した物の中身を見られたくない ・配布した物を実行する鯖(実行環境)に手を加える必要が無い そんな便利なものがあるのだろうか?って質問をしたいんだろうね。 というか、そういう質問になるはずなのにパスコンとかIEとか訳ワカンネ
>>405 安心しろ。
お前の言語能力なら、コンビニのバイトでさえ採用されないから。
高給なお仕事にお就きになられる
>>405 に、我ら貧民が答える義務はあるまいて。
ほっておけ。
それにしても最近のここは惨いな。夏休みだからか。
ここはVIPじゃないんだからみんなそんなに全力で釣られなくたって…。
流れをぶった切って質問させてください。 ある変数がNULLかどうか、0かどうか、空かどうかを皆さんどう判定してますか? いま、ある配列に特定のキーがあるかどうかを $hoge = array(10,20,30); $val = 10; $key = array_search($val,$hoge); このようなスクリプトで$valが$hogeに見つからなかった場合の処理をしようと if ($key == NULL) print "ぬるぽ"; と記述したところ、この場合、$hoge[0]に10があるわけですが、 $keyに「0」が入ってしまい、$key == NULLが真となってしまいました。 仕方ないので(strlen($key)==0)としているのですが、他にもっと直接的な判別方法があるのでしょうか? ($key===NULL)だと$valが見つからない場合でも常に偽になってしまうようです。 よろしくお願いします。
>>412 いいよ。糞みたいな奴のスレはぶった切っても
array_searchは見つからなかったときはNULLではなくFALSEを返すので
if ($key === FALSE) print "ぬるぽ";
とすればいい。
できればPHPのリファレンスマニュアルを熟読して欲しいな。
>>412 とりあえず、nullかどうかを判定するなら、is_null()を使うし、
関数の戻り値でfalseが返ってくる可能性があるなら
if($result === false)と型で判定するのが普通。
array_searchの戻り値がnullかどうかで判定しようとしてるけど、
PHP4.2.0以前のバージョンを使っているの?
ttp://jp.php.net/manual/ja/function.array-search.php 最近のバージョンならfalseが返ってくるから、
$key = array_search($val,$hoge);
if ($key === false) print "ぬるぽ";
とする必要がある。
415 :
412 :2005/07/23(土) 00:29:24 ID:???
>>413 レスありがとうございます。
もちろんマニュアルは読んでNULLを返すって・・・アレ?
「注意:・・・NULLを返します」のところと勘違いしてたorz。
スレ汚し失礼しました。
ところでここの「警告」の記述にある
「・・・0や""といった値を返す可能性があります。」
というのは、0はともかく""ってどういう状況なのでしょうか?
連想配列でキーを空にできるということでしょうか?
>>415 以下だったら理解できる?
$hoge = array('', '10', '20', '30');
$val = '';
$key = array_search($val,$hoge);
418 :
412 :2005/07/23(土) 00:37:22 ID:???
>>414 ,416
どうもありがとうございます。
ただの勘違いでした。
キーに空文字という状況がなかなか想像できないというか、
混乱しそうであまりやりたくない状況みたいですね。
420 :
412 :2005/07/23(土) 00:38:42 ID:???
連続カキコスミマセン。
それって0が帰ってきませんか?
>>417 0の実例を挙げていただいたのかな?
421 :
412 :2005/07/23(土) 00:58:38 ID:???
もうちょっと型を意識していろいろ試してみることにします。
どうもありがとうございました。
>>419
なんかMySQLから抽出した文字列を表示させたら変なところに「\」が出てくる・・・。 ぐぐってみたらShiftJISのせいか・・・。 magic quotes gpcをoffにしたらとりあえずおさまったけど、 こんどは必要なところにaddslashesとかやらなきゃいけないのか・・・。 今まだ勉強中なのですが、早いとこEUCなどに切り替えるべきなのでしょうか? 今まで作ったソースとかMySQLのデータはまとめて変換できるのだろうか??
内部エンコーディングはEUCにして、出力のときにSJISこれ最強
>>423 俺は、ソースはもちろんEUCだが、出力もPC向けの場合はEUCのまま。
だって、特に支障ないじゃん?
携帯向けの場合だけ、SJISに変換して出力してる。
まあ携帯でも最近の機種はEUCでも問題なく表示されるけどね。
Win2000+IIS5+php4.3でのinclude()に関する質問なのですが index.phpのソースの頭で ----------------------- <? $path="c:\php\includes"; include "${path}\hoge.inc"; 〜 ?> としているのですがこのエラーがでます。↓ main(c:\php\includes\hoge_init.inc): failed to open stream: Permission denied in C:\Inetpub\vhosts\webautomatic.info\httpdocs\index.php on line 2 ぐぐった所winにはパーミッションの概念がない、 という記載があったのですが実際にPermission deniedとなっています。 C:\Inetpub\vhosts\の他のドメインからは同じ c:\php\includes\hoge_init.incがincludeできるのですが…。 winのパーミッションの変更方法、またはこのエラーから予想できる別の原因ありましたら教えて下さい。
>>412 をやりたい場合、array_search() じゃなく in_array() の方が
いいんじゃないかと思った。
>>423 Windowsでもパーミッションの概念はあるんだけど。
エクスプローラからc:\php\includesのプロパティ→セキュリティを選択して
ユーザー "IUSR_コンピュータ名" に読み取り許可を追加してみれば?
あと
$path="c:\php\includes";
include "${path}\hoge.inc";
は
$path="c:\\php\\includes";
include "${path}\\hoge.inc";
でないとダメだと思う。
428 :
422 :2005/07/23(土) 09:24:11 ID:???
ううう。なんか内部をEUCで出力をShiftJISにすると、その都度変換してやらなきゃいけないのか・・・。
超絶マンドクサいので全部EUCでやってみることにしよう。
dクス。
>>423 ,424
429 :
427 :2005/07/23(土) 09:24:47 ID:???
430 :
422 :2005/07/23(土) 09:51:27 ID:???
ちょっと文字コードで調べてたら混乱気味なので教えてください。 あらゆる場面で文字コードをちゃんと設定しなければいけないわけですが、 ・データベースにある生データの文字コード(EUCにしたほうがよさげ?) ・HTMLに出力する文字コード(ShiftJISかな?) ・フォームで受け取る文字コード(PHPにあわせるべき?) ・PHPファイル自体の文字コード(EUCに決まってるでしょ?)) 以上4つに分けて意識しておけばよいのでしょうか? たとえばEUCでHTMLを表示したとして、その中のテキストボックス等のフォームで入力される文字はやはりEUCになるのでしょうか? それとも見る側のOSによって変わるのでしょうか?(Win&IEならShiftJISとか?) また、データベースから抽出して表示する際に「機能」とかに「\」が付いてしまうのは、 ・データベースからPHPで文字列を抽出した段階? ・PHPからHTMLを出力する段階? どちらなのでしょうか?(後者だとなんとなく思っているのですが。) ということは、とりあえずPHPファイルをエディタ等で全てEUCにするだけで解決するものなのか? でもPHPファイルをEUCにしたら当然echo文の内容もEUCになるからHTMLもあわせてEUCにしないと化けるのか? うぅ・・・わからん・・・。
14枚の画像を、フォームで入力した数の分だけ横に並べて 数段になる物を作りたいのですが、2段目以降が1段目と同じ画像から 始ってしまいます。どこに手を加えればよいのでしょうか。ご教授ください。 $data[] = $_POST['t1']; $data[] = $_POST['t2']; $data[] = $_POST['t3']; for($x=0; $x<3; $x++){ $w = 400/$data[$x]; $h = 300/$data[$x]; echo "<table><tr>"; for($a=0; $a<$data[$x]; $a++){ echo "<td><a href='img/$a.gif'>"; echo "<img src='img/$a.gif' width='$w' height='$h'>"; echo "</a></td>"; } echo "</tr></table>"; }
>>430 とりあえず細かいことは気にせず、全てを「EUC」「改行はLF」で統一していけ。
そんで、場面に応じて必要があれば、別のエンコードを使っていく。
どの場面で変換の必要があるのか…が分からなければ、EUCのままで問題ない。
おそらく全部EUCにするのが、最も問題が起きにくいだろう。
>>431 問題を単純化すると、こうなる。
for($x=0; $x<3; $x++){
for($a=0; $a<$data[$x]; $a++){
// ここで、連続する数字を出す。
// 元のスクリプトだと$aなので、xのループの度に当然0に戻る。
}
}
どこまで数字を使ったかというカウンタをつければいいだけじゃないの?
データベースのデータの文字コードを全部変換するの結構手間取ったんだけど普通どうやってやるものなんでしょう? alter table tbl_hoge character set eucとかだとデータそのものは変換されないみたいだし。 しかたないからphpMyAdminでEUCに変換してCSV出力→インポートっていう手間なことをやったわけですが。 直接データを変換する方法があるのかな?
ダンプをnkfに食わせる
436 :
age :2005/07/23(土) 14:26:43 ID:???
csvっぽい形式の "a","a","a","a","a", みたいなのを読むために作りました。 何か改善案とかありますか? ちなみに、「"a"」内に含まれる「"」は「""」みたいな感じでエスケープしています。 <?php $fp = fopen("log.txt"); while ( !feof($fp) ){ $EndCount = 0; $i = 1; fseek($fp, $FilePointt,SEEK_SET); while ($EndCount < 2){ $FilePointt = ftell($fp); $tmp[$i] = fread($fp, 1); if ( feof($fp) ){ break; } if ( $tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n" ){ continue; } if ( $tmp[$i] == "\"" ){ if($EndCount == 0){ $EndCount++; $i = 1; continue; } $i = $i + 1; $tmp[$i] = fread($fp, 1); while ( ($tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n") ){$tmp[$i] = fread($fp, 1); } if( ($tmp[$i] == "\"") && ($tmp[$i-1] == "\"")){ continue; } else if ( $tmp[$i] != "\"" ){ $EndCount = $EndCount + 1; } else{} } else{ $i = $i + 1; } } for($j = 1; $j < ($i - 1); $j++){ $tmp[0] = $tmp[0] . $tmp[$j]; } $FilePointt++; echo $tmp[0]; } ?>
>>436 何をしたいのかよく分からんが、fgetcsv()じゃ駄目なのか?
438 :
age :2005/07/23(土) 14:55:50 ID:???
>>437 いえ、全然大丈夫です。
ただ、初めて間もないのでそういう関数を使わずにやってみようと思ったんです。
リンクタグに属性をつけてphpファイルに送るって事は 出来ないんでしたっけ? 例えば <a href="hoge.php" id=a><img src="a.gif"></a> <a href="hoge.php" id=b><img src="b.gif"></a> <a href="hoge.php" id=c><img src="c.gif"></a> って感じで。 属性送るにはやはり <form action="hoge.php" method="post">でないとダメですか?
440 :
439 :2005/07/23(土) 16:18:03 ID:???
失礼しました。無視してください。 ごめんなさいごめんなさい
なんだかなぁ… 夏休みが始まったって感じ
皆さんPHPでサイトを作るとき <?php print "<html>"; print "</html>"; ?> と全体を囲ってやるのかそれとも <html> <?php ?> <?php ?> </html> と言ったように部分でやるのですか?
最初の頃 : <html><?php 〜 ?></html> // 埋め込み 次 : <?php print "<html>"; 〜 ?> // 条件によってデザインが違うページを出すために試行錯誤 その次 : <?php include('テンプレート.html'); ?> // html部分の変更にブチ切れた頃 そのまた次 : <?php テンプレートエンジン ?> // ちょっとマジメにデザインとロジックの分離を考えてみた 今この辺 : フレームワーク // ちょっと泣きそう
デザインとロジックの分離と言うのがいまいちよく分からないんですけど、 普通にhtmlを書いてそれでphpコードをincludeするってことですか?
>>442 <?php
include(htmlのパーツを作るもと.inc);
htmlヘッダーをつくるファンクション($title);
サイドぼっくすをつくるファンクション();
中身をインクルード
・
・
・
?>
って感じ。
実際はこれらを条件分岐したり、case文つかうけど。
447 :
446 :2005/07/24(日) 02:21:02 ID:???
function類とかはhtmlのパーツを作るもと.incに入ってる。 実際はもっとファイルを分けていくつもインクルードしてる。 見通しが良いし修正も楽なんでこんな感じだけど変ですかね?
448 :
444 :2005/07/24(日) 02:29:10 ID:???
include版とテンプレートエンジン版とは、テーブルを表示する時に一番違いが大きかったかな。
・include版
テンプレート.htmlは <?=$変数 ?>ってな感じで、用意しておいた変数を置き換える。
そのため、行列数が変動するテーブルを出力するには、1つの変数にtable全部を入れなきゃいけなかった。
また、テーブルに色をつけたい時は、スクリプトの修正(or CSS用変数の変更)が必要だった。
・テンプレートエンジン版
オイラの使ってたやつでは独自タグを使ってループを扱う事ができたので、
配列をそのまま渡すだけで必要な分だけテーブルの行列が自動生成された。
テーブルの色を変更するには、大体の場合においてhtml側の修正だけで可能。
>>445 ちょっとしたデザインの変更のために、スクリプト(ロジック)を弄らなきゃいけないかどうか。って感じです。<分離
>>446 htmlヘッダー作るファンクションって具体的にどんなものなんですか?
宜しければ参考のために知りたいのですが・・・
>>446 そいつは単にプレゼンテーションロジックの分割であって、
>>442 が聞いてきたものとは違うと思うけど...
結論: 「デザインは気にしない」
452 :
nobodyさん :2005/07/24(日) 09:28:48 ID:m0On1eMV
>>452 mod_rewrite
か
path_info
だな。
どっちでもできる。
とりあえず、検索すべし。
454 :
452 :2005/07/24(日) 14:00:18 ID:rmOxqcKR
>>453 さん ありがとうございます。
path_info のほうはしらべてないけどとりいそぎ・・・
--
URL「A」にアクセス(するようにみせかけて)⇒mod_rewrite⇒(実は)実質URL「B」にアクセス
で、「A」が「ja.wikipedia.org/wiki/短歌」、
「B」が「ja.wikipedia.org/wiki/%E7%9F%AD%E6%AD%8C」
ってことであってます?
455 :
nobodyさん :2005/07/24(日) 16:15:17 ID:hO//Dl4v
php 4.4.0でAPC使えますでしょうか?
http://www.stackasterisk.jp/tech/php/apc01_01.jsp を参考にやってるのですがうまく動作しません。
http://pecl.php.net/get/APC-3.0.4.tgzをDLして tar zxvf APC-3.0.4.tgz
cd APC-3.0.4
phpize
./configure --enable-apc
make
mkdir /usr/local/lib/php/extensions
cp modules/apc.so /usr/local/lib/php/extensions/
vi php.ini
extension_dir = ./ 変更→ extension_dir = /usr/local/lib/php/extensions/
↓追記
zend_extension="/usr/local/lib/php/extensions/apc.so"
apc.mode = mmap
apc.cachedir = /tmp
apc.check_compiled_source = 1
apc.check_mtime = 1
apachectl restart
apacheとphpは普通に動作してるのですが、/tmpにキャッシュされたファイルができず、apcinfo()も使えません。
apache1.3.33 php4.4.0 sentos4.1です。
手順におかしな点などありましたら指摘お願いします。
456 :
455 :2005/07/24(日) 16:16:01 ID:???
sentos4.1→centos4.1の間違いです。
457 :
452 :2005/07/24(日) 19:36:07 ID:rmOxqcKR
PHPで、HTTPS鯖のデータを取得したいのですがどうすればよいのでしょうか? HTTP接続はfsockopenで出来るのですが、HTTPSの方法が分かりません。 鯖はFreeBSD4, PHP4.4(SafeModeなので、Pearは利用できないです)です。 PerlでLWPを利用したものをPHPに移行する必要が出てしまったので、どなたかお助け下さいm(__)m
とあるメーリングリストを運営しています。 このメーリングリストで投稿されたメールの表題の最新n件をなんらかの形で取得してページに埋め込むということを実装してみたい。 目的は、会員外のひとにもどんなやり取りがされてるのか表題だけでも見て興味を持ってもらいたいわけなのです。 これのために、一つフリーのwebメールのアカウントをとって、それでMLを受信。 そのwebメールのメール一覧を取得、ってパターン。 gmailってどうやらRSS配信出来るらしいので、gmail垢を作ってそこでMLを受信。RSSを取得ってパターン。 php以前の方法を考えてる段階なのですが、これをphpで実現するためにはどんな方法をまず採用したらよいでしょうか?
460 :
455 :2005/07/24(日) 21:18:31 ID:???
>>459 imap関数使えればpopメール読めますよ
MYSQLから会員データを抽出し、メールを発行し途中経過(現在何件発行したか)を表示させたいのですがどのような方法がよいのでしょうか? 途中経過は更新ボタンを押して確認しようと思っています。
途中経過って。 携帯に送る為に、時間空けてメール配布するのかな? そうじゃなくて、普通にメール配信だけなら、途中経過も何も ログでしか無いと思うけど
>>462 えとまだサイト開設していないんですが、会員制のサイトで目標が2万人くらいなんですよ。
将来的なことを考えて作成してるのですけど、途中経過&終了などを数字で見れると便利なので。
前にバイトで某サイトのスタッフをしていたときのメルマガ配信システムは条件(興味のあるカテゴリ等)で会員を絞って
そこから配信を開始する感じだったのですが、配信開始のボタンを押すと
現在配信した数/総配信数
【更新ボタン】
という感じで現在の状況を把握できたのです。
自分のサイトもこんな感じのを使いたいなと思いまして。
464 :
461 :2005/07/25(月) 00:05:51 ID:???
補足:携帯じゃなくPCがターゲットです。
>>461 PHPでやるなら現在何通目かファイルにでも出力するくらいしか思いつかない。
俺的にはPHPで30秒を超える処理ってなんか気持ち悪い。
466 :
461 :2005/07/25(月) 01:32:39 ID:???
>>465 レスありがとうございました。
ファイルにカウントしたものを出力する方法でやってみます。
どうもありがとうございました。
>>460 php可の無料鯖なんかだとおそらく許可してない気がします
468 :
452 :2005/07/25(月) 04:03:29 ID:???
apacheすれいってきます
469 :
nobodyさん :2005/07/25(月) 05:57:06 ID:gR3tRl1W
phpでpostgreSQLを使う場合、「pg_connect()」で SQLひとつごとにDB接続するのが普通なんでしょうか? 「pg_pconnect()」はどのタイミングで切れるのかよく わからないので、使いづらいのですが、こっちが一般的でしょうか? あと、接続文字列にパスワードとかユーザ名が入ってしまうのを 避ける方法ってないでしょうか? 内部で使うものですけどサーバにアクセスできるユーザだと プログラムのソース覗かれてIDとかばれちゃうのは避けたいので 以上、素人くさい質問ばかりですが、調べてもよくわからなかったので 回答お願いします('A`)
>>465 大量のメールを配信しようと思ったら、実行時間が30秒じゃハナシにならんぜ。
俺は専鯖で、デフォルトのphp最大実行時間は60秒にしてある。
これをもっと長く(300秒とか)しようかとも思ってるんだけど、
それでも別に問題ないよな??
テキストファイルのダウンロードをやってるんですが、 header('Content-Type: text/plain'); として、実際に出力されたヘッダを見ると、 Content-Type: text/plain; charset=EUC_JP とcharsetがついちゃうんです。 これってどうやって制御したら良いでしょうか。
WEBサーバのデファルトエンコーディング。
>>470 気持ち悪いと言っただけで、問題ないんじゃないかと。
>>467 webメールから取ってくることもできるでしょう。
すごい大変そうだけど。
どっちもPHPでできなくはないと思いますが、PHP以外のほうがよさそうな気もします。
>>469 pg_pconnectだと接続があればそれを利用する。なければ接続する。
>サーバにアクセスできるユーザだと
>プログラムのソース覗かれてIDとかばれちゃうのは避けたいので
↑こういう状況をどうにかしたらいいのではないでしょうか?
perlスクリプトをphpに変更しているんですが、以下の部分のPHP化が分かりません どなたかお願いします $PF18[0] &= ~0x80;
475 :
nobodyさん :2005/07/25(月) 11:17:13 ID:hJtfvc56
>>474 そのままでいいはずだけど。何かエラーが出るの?
477 :
474 :2005/07/25(月) 11:34:31 ID:???
>>476 まだ試してないんですが、このままで良かったのか・・・
ついでというかたぶん本題です
「= ~$data」の意味を教えてください
478 :
476 :2005/07/25(月) 11:49:04 ID:???
479 :
474 :2005/07/25(月) 11:56:38 ID:???
ありがとうございます('A`)
>>395 ありがとうございます。
どうにか警告を表示させることができました。
foreachで$key=>を省略すると容赦なく警告が出るんですね。
481 :
nobodyさん :2005/07/25(月) 13:13:18 ID:tPLQwkjK
さらに質問になってしまいますが、 PHP5にはC,C++,Java5にあるようなenum型(列挙型)は ありますでしょうか? あれば便利だなあと思いまして。 それとも既存の配列がそのまま列挙型として使える? ものなのでしょうか? ハッシュとしても使えるようですし
PHP入門ってみんな本で勉強した?サイトでお勧めあったら教えて下さいな。
>>481 enumねぇ・・・
foreach (array('MONDAY', 'TUESDAY', 'WEDNESDAY', ...) as $i => $name) define($name, $i);
・・・無理があるな・・・orz
っていうか「列挙型」なるものはありえないな。
だって変数に「型」自体がない。
$x = MONDAY; // $xは列挙型なつもりでも
$x = "うんこ"; // なんのエラーもなし。
結論:配列でガンガレ!(enumとは完全に別口なやり方になると思うけど)
素直にJavaを使っておけ、と
複数ユーザが使うページで
URLにユーザ情報を持たせるにはどうしたらいいでしょうか?
ちょうどdel.icio.usのような感じで。↓のoneとtwoがユーザ名
ttp://del.icio.us/one/ ttp://del.icio.us/two/ ユーザ登録したときにディレクトリ(one,two)を作成して
スクリプトをコピーしてもいいのですがメンテナンスが大変、というか間違っている気がする。。。
htaccessで転送をかけるとURLが変わってしまうし。
すごい初歩的なことかもしれないんですが、さっぱり解りません。
どうかよろしくお願いします。
>485 Cookieでも使えば?
487 :
485 :2005/07/25(月) 19:47:06 ID:???
>486さん
ありがとうございます。
ユーザの特定にCookieを使うのですよね?
それで、URLの最後のディレクトリと付き合わせる。
その認証自体は
ttp://del.icio.us/one/ なら
/one/index.php で行わなければいけないわけで
全ユーザに対してそのスクリプトを用意するには
やはりユーザ登録したときに元となるスクリプトをコピーして?
プログラムに変更が生じたときの対処も解らなかったのですが
ユーザがログインするたびに
/one/index.php を上書きコピーすればいいのでしょうか。。。
ほんとうに初心者なもので、意味不明だったらすみません。orz
488 :
458 :2005/07/25(月) 20:38:37 ID:???
httpsへのPOST結果の取得方法をお願いします(>_<) GETならいろいろな方法があるのにorz
テキストファイル「test.txt」に書かれているファイルの更新日時を取得しようと 「test.php」を以下の内容で作成しました。 --- test.txt -------------------- /tmp/hoge.dat --- test.php -------------------- <?php $line = file("test.txt"); $filename = "$line[0]"; echo date( 'Y/m/d (D) H:i:s', filemtime($filename) ); print "$keyword"."<br>"; ?> これを実行すると、 PHP Warning: filemtime(): Stat failed for /tmp/hoge.dat (errno=2 - No such file or directory) in /tmp/hoge.dat 1970/01/01 (Thu) とエラーが出て、正常に日付が取得できませんでした。 そこで上記のプログラムの2、3行目を $filename = "/tmp/hoge.dat"; と変えて実行すると正常に日付が取得できたので、パーミッションの問題ではないと思っています。 上記の内容では何が問題なのでしょうか? ご教授お願います。
>>489 echo bin2hex($line[0]);
echo bin2hex("/tmp/hoge.dat");
表示したPHPの出力結果をHTMLファイルとして書き出し、保存する方法を探しているのですが。 PHPでの出力を一行一行書き出していくやり方しか分かりませんでした。 何か良い方法はないでしょうか? 初心者質問ですみません。。
ob_start()、ob_get_contents()あたりでできるんじゃないかな。
post_max_sizeを超えた場合、$_POSTの中身は空っぽになってしまうものでしょうか? どうやったらpost_max_sizeを超えたかどうかをスクリプト中で判断する事が出来るでしょうか?
パラメータがあるクラスの関数を パラメータを省略して呼び出した場合 NULLとなってくれるでしょうか? $hoge=>Charge(); function Charge($p) { echo is_null($p)?'NULL':'NON'; } 実際に何回かやってみたのですが、$pは期待通りNULLとなったのですが PHPの仕様でNULLになっているのか偶然NULLになったのか判断できないのです。 どうぞよろしくおねがいします。
>>495 $hoge=>Charge()が何なのか不明だが引数を省略するなら
function Charge($p=NULL)
としないと「引数が足りないエラー」になるはず。
ありがとう HTMLの構造上、表向きには表示されてませんでしたが ソースを表示したらおっしゃるとおり Warning・・・・・・・・エラーが出てました。
サーバでのファイルの扱い方について質問があります。 以下の流れで余分な処理・追加した方がよい処理はあるでしょうか? ロックファイルをオープン リトライ処理 ロックファイルをロック リトライ処理 目的ファイルをオープン リトライ処理 目的ファイルをロック リトライ処理 目的ファイルを処理 目的ファイルをロック解除・クローズ ロックファイルをロック解除・クローズ・削除 リトライ処理とは、失敗した場合に時間を空けて再挑戦し、また失敗したら終了する処理です スレ違いな気もしますが一応phpで作ってるので・・・よろしくお願いします
499 :
nobodyさん :2005/07/26(火) 15:43:02 ID:2Byv/a8J
はてなのようにキーワードを[キーワード]みたいに囲うと そのキーワードでグーグル検索できるようなリンクを自動的に生成したいのですが どのようにすればよいのでしょうか? 全部教えてとは言いません 使う関数だけでも教えていただけたらと思います よろしくお願いします
[]でくくられて単語の前後に mb_ereg_replaceを使って<a>タグを追加。
>>499 urlencodeがいるので、こんな感じか
<?php
$str = '[キーワード]をググる';
echo preg_replace_callback('/\\[(.*?)\\]/', 'add_google_tag', $str);
function add_google_tag($m) {
return '<a href="
http://www.google.co.jp/search?q= '
. urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[1] . '</a>';
// return '<a href="
http://www.google.co.jp/search?q= '
// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>';
}
?>
下側のコメントアウトしたreturnはカッコを残しておくバージョン。
502 :
nobodyさん :2005/07/26(火) 17:40:53 ID:mEdDXXbK
皆様お知恵を拝借。配列から空の要素("")を取り除くには どのような処理が最も単純でしょうか? お願いいたします。
>>502 ・preg_grep で「空要素で無いもの」だけを抽出
・その配列を利用する段階で「空要素」を無視
・空要素が入ってしまう様な配列を生成しない
お好きなものをどうぞ。
504 :
502 :2005/07/26(火) 18:49:59 ID:???
>>503 回答ありがとうございます。一発で配列から空の要素を
取り除いてくれるような関数はないんですね。
やっぱり3番目になると思うので、質問の前の段階から
お話しますと、文字列を mb_split で分割してるんです。
PREG_SPLIT_NO_EMPTY みたいなオプションがあれば
いいんですが、mb にはありませんよね?
ですので、先に mb_ereg_replace で空白に置換した後、
PREG_SPLIT_NO_EMPTY で行くことにします。どうも
ありがとうございました。が、もしもっと(・∀・)イイ!方法が
ありましたら、どうぞご教示願います。
JavaScriptとphpを組み合わせてロールオーバーしたりonclickしたタイミングで webページを静的なままphpを動作させる方法ってあるんでしょうか?
ワケワカラン
507 :
489 :2005/07/26(火) 20:12:52 ID:???
>>490 レスありがとうございます。
最後に改行が入るんですね。
改行を消してやれば期待した通りに動作しました。
>>491 元々使用していたtest.txtにはファイル名に半角スペースを含むものがあるので
それで誤動作していたのかと思い、""で括りました。
その後、
>>489 のような最低限のプログラムでテストをしたため、そのままになっていました。
510 :
nobodyさん :2005/07/26(火) 20:26:54 ID:DRNxxqTe
静的なまま動作したいんだよ!
511 :
499 :2005/07/26(火) 20:29:15 ID:???
>>510 停まったまま、歩きたいんだよ!
って事?
ドラえもんにでもお願いしてください。
513 :
nobodyさん :2005/07/26(火) 20:40:11 ID:dI24bXxa
今度うちの会社に20歳の高等専門学校卒業の、高専プログラミング大会に 出場したやつがはいることになった・・・はげしくできそうで、俺首の予感 ・・・・レベル高いんだろうなきっと
今って、そういう系の仕事副業じゃない? え、俺?趣味です。。
>>505 ==
>>510 ?
たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。
: スルーしてくれ。
>>505 ==
>>510 ?
たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。
: スルーしてくれ。
スマソ、ミスった・・・
あれだ あれ。ajaxとか言うやつ。きっとあれをやりたいんだよ。 php用のライブラリも幾つかあった気がするなぁ。
519 :
nobodyさん :2005/07/26(火) 22:24:41 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。 エンコードしたり一時的にEUCに変換したりしてもうまくいきません。 なんか手軽にやる方法はないんですか?
520 :
nobodyさん :2005/07/26(火) 22:28:29 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。 エンコードしたり一時的にEUCに変換したりしてもうまくいきません。 なんか手軽にやる方法はないんですか?
521 :
nobodyさん :2005/07/26(火) 22:30:03 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。 エンコードしたり一時的にEUCに変換したりしてもうまくいきません。 なんか手軽にやる方法はないんですか?
522 :
nobodyさん :2005/07/26(火) 22:32:06 ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。 エンコードしたり一時的にEUCに変換したりしてもうまくいきません。 なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
onMouseover とか onClick でアマゾンのXMLを読みに行って 展開するみたいな話だろ夏休みのアフィ厨めスレ違いだ死ね
うーん、重い。。
この夏休みからphpの勉強を始めたリアル厨房です。 function hoge(){ $hoge="ほげ"; } echo $hoge; functionの中にglobal $hoge; っていれたらオーケーになった。 あと、 functionの中に return $hoge; って書く場合と上記の違いってなんでしょうか? どっちにしろglobalはないとダメみたい。スコープ? もう一つ、functionに与える引数 function syoukai($watashi,$syokugyou){ echo $watashi . "は" . $syokugyou . "です。"; } って書く場合の$watashi,$syokugyouの部分の変数名は、functionの外側で使ってる名前は使っちゃうとまずいのでしょうか?
>>525 >>この夏休みからphpの勉強を始めたリアル厨房です。
勉強終えてから来い!
厨房だったら夏休みは他にやる事があるだろうが。 筆おろしとか、筆おろしとか、筆おろしとか・・・・
みなさん、オススメの教本はありますか? 色々なサイトを見て回ったけど全く理解出来ないorz
>>529 お前がどの程度の知識があるのかわからんが
今日からつかえるPHPでもかえば?
531 :
nobodyさん :2005/07/27(水) 02:45:40 ID:l/k2RuR9
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。 エンコードしたり一時的にEUCに変換したりしてもうまくいきません。 なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
532 :
503 :2005/07/27(水) 03:12:16 ID:???
>>504 >ですので、先に mb_ereg_replace で空白に置換した後、
って、そんな事しなくても mb_split の段階で「mb_ereg_replace で空白に置換」
する対象を含めた区切り文字を指定すれば良いのだわ。多分出来る筈よ。
>>531 enable-zend-multibyte
通常の質問スレって無くなったの?
>>535 ああ、それでひっかからなかったのか・・・。
サンクス。
537 :
nobodyさん :2005/07/27(水) 06:33:37 ID:l/k2RuR9
>>533 レスありがとう。やってみます(`・ω・´)
GDでjpegからサムネールを生成した際、imagecopyresized()を使うと 右側に黒い線が残ってしまうことがあるんですが、これを回避する方法ってあるんでしょうか? imagecopyresampled()だとこのような線は出ないんですが、サーバがGDver2に対応していないため、 imagecopyresized()を使っています。
540 :
531 :2005/07/27(水) 07:37:22 ID:???
昨日重かったからか、めっちゃ重複してたのか、スレ汚しスマソ。携帯から見てたから今気付いたよorz
>>539 色々な写真でimagecopyresizedしてみたけど、黒い線みたいなものは出なかったな。
思いつく限りの原因は
・引数に指定した幅などがズレてる(少数点以下の丸めなど)
・jpegに元から黒い線が入ってる(スキャナから取り込んだか何かで手作業が雑だったとか)
あたりかな。でもimagecopyresampledだと線は出ないのか・・・。
まあ解決策としては、引数のdstWを1ピクセル余分にとるとか、srcWを1ピクセル少なくとるとか試してみては?
下の二つの処理(CGIのプロセスの立ち上げやPHPのプリコンパイルも含)にかかる時間を計測して比較したいのですが ・PHPをモジュールで動かす ・C言語のバイナリCGI どのような方法がありますか? RedhatLinux、Apache、PHP5.0.4、gccを使っています。
>>485 mod_rewrite or pathinfo
>>541 引数に+1したらいけました。
ありがとうございました。
545 :
nobodyさん :2005/07/27(水) 12:44:07 ID:v2TCvlCU
Apache2 + PHP5をWindows2000にインストールしました。 web用のディレクトリにphpファイルを置いてブラウザで見ると ちゃんと表示されることを確認したんですが、 それ以外のローカルフォルダに置いたphpファイルをIEに直接 放り込んでもphpが正しく表示させるにはどうしたらいいでしょうか?
546 :
545 :2005/07/27(水) 12:45:27 ID:???
> web用のディレクトリ C:\Program Files\Apache Group\Apache2\htdocs のことです。
>>545 DocumentRootを変更したいならhttpd.conf。
そこから先はスレ違いナリ。
549 :
545 :2005/07/27(水) 13:03:09 ID:???
そうでしたか。 拡張子が.phpのファイルをブラウザで表示したら 勝手にphpが起動、というわけにはいかないのですね。
IEはHTMLしか解釈できない。 PHPスクリプトを解釈してHTMLを吐き出しているのはサーバ。
ファイルの更新日付ってphpから自由に操作出来ないですか?
>552 出来るよ
>>553 どのようにやるんでしょうか?
サーバの時計を変えてcopyとか…?
phpはスタイルシートを吐き出すことも出来るんですか?
>>555 ファイル名を.cssにして吐き出せば出来るだろ
>556 ビミョーな答えだね >555 ヘッダでCSSのMIMEタイプを指定
pukiwikiのCSS見るといいかもね
560 :
559 :2005/07/27(水) 17:34:03 ID:???
ミスったorz こんな便利な機能がApacheに付いていたとは! 早速試したところ、PHPが速かったりCが速かったりでした。 ありがとうございました。
階層化したカテゴリに含まれる情報を、選択したカテゴリだけ展開して表示するようなプログラムを書いています。 ひとまず、思った通りのものが書けたのですが必然的にループを入れ子で多用することになりました。 こういったパターンの物は書いたのが初めてなのですが、$iなんかのカウント用の変数をevalで、変数名に埋め込んでループしても上書きされない変数名の変数を生成したりしてるんですが、方法としてこれは変なのでしょうか? 問題としているのは以下の点です。 ループの入れ子(さらにその中でクエリを生成してDBに検索をかけてます) ループ内で、カウント用の変数をevalでくっつけた変数を作ることを多用。 あいまいなまま、現在まで来てしまったのですが、whileとfor、どちらでも同じことが出来るのですが簡単にいってこの二つを使い分ける基準はなんでしょうか? また、今回のケースはどちらをつかうのが適しているでしょうか?
>>561 SQLとリレーションDBを覚える方が適している
>>562 もちろん、自分なりに出来る範囲ですが正規化したDBを連携させてクエリを実行しております。
自分のかいたものの中では複雑な方なんで、このスクリプトをレンタル鯖に置いたら怒られないかなとか心配してるんです。
もちろん、ローカルの鯖では快適に動いてるんですが、なんせループを入れ子にしてそこで、クエリを生成して変数を作って、というプロセスが入れ子になってるんでこんなのあり?とか不安になってしまうんですよ。
564 :
nobodyさん :2005/07/28(木) 02:51:26 ID:/rx2yHMT
require_once()について質問ですが この関数、Javaのimport宣言とは異なり、 PHPを呼び出したいとき、 現在のPHPファイルのディレクトリと該当する PHPファイルのディレクトリとの位置関係を 気にしなければならない難点がありますね。 そこでディレクトリの位置関係を気にせずに Javaのimport宣言のように require()を使いたい各PHPファイルだけが 必要なPHPファイルときだけrequire()を呼び出すように したいものです。 require.inc の中に必要なPHPファイルのrequire_onceを 全部書くというやりかたもありますが それだとPHPファイルの数が増えれば増えるほど 見通しが悪くなりコードの解析が困難になります。 Javaのようにpackage(namespace)の概念がありディレクトリ名がパッケージ名 になるようなものがPHP5にもあればいいのですが 残念なことにnamespaceも不採用になったため思うようにいきません。
565 :
564 :2005/07/28(木) 02:52:09 ID:???
>564からの続き 私がやりたいことはこういうことです。 require_onceを各場所はrequire.incのようなファイルに一ヶ所に各のではなく 各phpファイルに必要なときのみ記述するように分散させたい。 例として、 main.php がdir1/a.php, dir2/subdir1/b.phpを必要としている場合は そのrequire_onceをmain.phpの中に書く。 dir1/a.phpがx.php, dir2/y.php, dir2/subdir1/b.phpを必要としている場合は require_onceの重複にかかわらずそのrequire_onceをmain.phpの中に書く。 環境の移行に即座に耐えられるようにするため絶対パスの変更を強いるような真似は 極力避けたいため、各require_onceのパスは相対パスにしたい。 main.phpがあるところを基準にディレクトリとしディレクトリ名は無しにしたい。 以上を実現したいのですが可能でしょうか? get_cwd()を使って require_once get_cwd().'/dir1/a.php'; なんてことをやりましたがプログラムを実行するカレントディレクトリを変えると動かなかったのでやめました。 require_once getdir(get_realpath(__FILE__)).'/dir1/a.php'; も使ってみましたが、__FILE__を指す場所というのが、__FILE__を記述したファイルパスしか 指定できなかったため、この方法も断念せざるを得ませんでした。
普通にinclude_pathでも出来ると思うけど、それがいやならこんな感じかな。 config-hostspecific.inc define("PACKAGE_DIR","/path/to/package"); main.php require_once(PACKAGE_DIR."dir1/x.php"); require_once(PACKAGE_DIR."dir2/..... javaだってCLASSPATHを設定するんだし、 全自動はトラブルのもとだとおもうよ。
>>565 include_pathを変更するという方法はどう?
-- config.php --
<?php
// config.phpが置かれているディレクトリのパスを取得
$lib_path = dirname(__FILE__);
// インクルードパスに設定するパスのリスト
$include_path_list = array(
$lib_path, // 追加するパス
ini_get('include_path'); // 既存のパス
);
// インクルードパスを変更
ini_set('include_path', implode(PATH_SEPARATOR, $include_path_list));
?>
---------------------
このconfig.phpをすべてのスクリプトの先頭で必ずrequire_onceするようにすれば、
config.phpの置かれているディレクトリから相対で指定できるようになる。
config.phpをrequireする部分はどうしても、___FILE___から相対パスを指定するか、
絶対パスを指定するなどになってしまうけど。
その変は仕方ないよね。
>>561 まず、テーブル設計(というかSQLか)に関して。
・階層の階数が固定なら outer joinで。(SQL92だから大抵のDBで使えるかと)
・固定じゃないなら、そのDBで再帰SQLを扱えるならそれを、扱えない場合でも拡張機能をうまく使えばできる場合もあり。
(そのDBのメーリングリストで議論されていることが多い。再帰SQL、recursive sql、親子、ツリー などをキーワードに)
・テーブル設計に手を加える。いろいろ方法があるみたいだけど、例えば
ttp://www.sitepoint.com/article/hierarchical-data-database あたりが参考になるかな?
・2chのDB板のモデリング関係のスレで幾つか見た気がする。
この辺りのお話で分からない事があればDB板へ。
で、上のような事は一切やらないとしてPHPの話に戻ると、オイラはevalを使うのは嫌いなので再帰関数を使う。
>>561 >ループを入れ子で多用
>カウント用の変数をevalで
このあたりで糞プログラムと断定。
普通はこんなことにはならないはず。
>>561 ループでクエリを発行するのはあまり良い方法ではありませんね
いまだに header() の使い方がよくわからない。 無くてもいいの?
572 :
軟式PHP :2005/07/28(木) 10:44:33 ID:???
>>571 使わないなら無くていいじゃん。
俺はかなり必要だけど。
574 :
571 :2005/07/28(木) 10:56:26 ID:???
会員制のサイトを作ろうと思う。 認証方法はどういったものがありますか?
>>571 特に指定しなくてもphpの中の人が適当に付けてくれている。
それじゃあ対応できない時に使えばよい。
勉強したくなったら RFC 1945、RFC 2616あたりを読めばよいかと。(日本語訳は無いっぽいけどガンガレ)
>>575 質問が曖昧で本当は何を知りたいと思っているのかよく分からんが、
でっかい分類の仕方だと、1. 生パスワードと照合 2. パスワードに一方向性ハッシュを適応したものと照合 かな。
A〜Zをばかちょんな方法を使わないで表示させるのに for ($c = 'A'; $c <= 'Z'; $c++) { print $c.' '; } とやったのですが なぜか A B C ・・・ X Y Z AA AB AC ・・・ YX YY YZ と676回ループします。 条件式をから=を取って $c < 'Z' としたら A〜Yまでの25回のループで終わるのですが これはナゼでしょうか? バグですか? PHP 4.3.10
>>577 なんかおもしろいね。症状の説明はできないけど正しく動かすにはこう書く。
症状の説明はどなたかスパマンが現れるまで待たれよ。
for ($c = ord('A'); $c <= ord('Z'); $c++) {
print chr($c).' ';
//printf('%c ', $c); //こちらの記述でもOK
}
そうですか Cと同じ感覚でやってみたのですが こうゆう場合はordを使わなければダメなのですね。 ordの関数がどういうものか調べてやってみます。 勉強させていただきました。
ordってorzに見えるな。 ('A')って(´Д`)に見えるな。
581 :
nobodyさん :2005/07/28(木) 16:45:31 ID:iGAmBrlm
('A')('Z')('A')('Z')
>>582 漏れも知らんかった。。。まぁ普段こんなコードは書かないだろうけど。
インクリメント演算子だけ特別扱いしているんだね。
$x='A';
$x++;
print $x; //B を表示
$x='A';
$x=$x+1;
print $x; //1 を表示
584 :
578 :2005/07/28(木) 17:20:42 ID:???
>>582 お〜、そうだったのか。ということは
>>577 のコードはこんな風に書けば動くのか。
for ($c = 'A'; $c != 'AA'; $c++) {
print $c.' ';
}
こんな記述はやっぱりやだ。。。
585 :
軟式PHP :2005/07/28(木) 18:14:24 ID:???
なんだその書き方は…と思ったら動くのかよ。勉強不足だったorz...
orz増加中...
orzorzorz
これ以外と知らないんじゃないの? orz
これは?→ _| ̄|◯
じゃ、これも→OTL
俺はこれ派 OTZ
せっかくの良スレが荒らされていく...orz
あーあ、ミスってソース消しちまったorz
懺悔会場はここですか?orz
595 :
nobodyさん :2005/07/28(木) 21:53:16 ID:iGAmBrlm
じゃあ質問しまーす! ソース書く時に半角スペースあるじゃないですか、それってぶっちゃけ自分どこを空けるかわかんないんだけどやっぱ空けた方がいいの?てか空けないと不具合起きる?
流れをぶった切って質問です。 シフト表のような、横軸に時間を表示して各行に誰が何時から何時まで何の作業をするか、 というグラフを MySQLに登録したデータを下にPHPで抽出して、 TABLEタグで単位時間(10分)あたり1つのセルを区切って 作業時間に当たる部分のセルを結合・作業内容を表示する、 といったグラフを表示するスクリプトを作ったのですが、 こういうTABLEタグを使ったグラフの表示というのはお作法的に如何なものなのでしょうか? JpGraphなどは利用したことはないのですが、それらのライブラリを使う等で画像で表示するほうがよいのでしょうか? 「テーブル厨」と言われるかもしれないのは分かっているのですが・・・。
600 :
596 :2005/07/28(木) 23:07:28 ID:???
>>597 レスありがとうございます。
ローカルでExcelでグラフを作成してアップロードすればいい、ということでしょうか?
誰かが元データに追加・変更を加えるたびに自分でローカルで作業、というのは避けたいので
できれば常に最新のデータから自動生成するか、あるいは追加・変更時にグラフ・画像生成という形にしたいのですが。
よろしくお願いします。
>>599 それをどこにつければいいの?(´・ω・)
602 :
561 :2005/07/28(木) 23:31:00 ID:???
>>568 色々ヒントをありがとうございます。
しかし、自分には難しく無理そうですが少しずつ、自分でそれらを使えるように頑張りたいと思います。
ところでなんでevalがお嫌いなんでしょうか?
スクリプティングのノウハウがあまりない者にとってはちょっとややこしい事を実現するにはすごく便利と感じているのですが。
>>569 すいません、確かに自分でもそう感じています。
もっと良い方法があるはずだ、とは思うのですが、その方法をきいたところで自分ですぐに出来るようになるとはとても思えないのもまた事実です。
>>570 現実的にそんな感じのスクリプトはレンタル鯖で使うと怒られたりするでしょうか?
603 :
599 :2005/07/28(木) 23:37:13 ID:???
>>601 なぁ、適当に書いちまった手前すまんが、そのままのコードで出来ないか?
試してみたが、出来るお。
>>603 $str = 'この中にページの内容を全部ぶっこんで';
ページの一番下に↓を入れればいいってこと?
>echo preg_replace_callback('/\\[ASIN:(.*?)\\]/', 'add_google_tag', $str);
中略
>// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>'; }
漏れの知識ヤバス・・・(;´・ω・)
605 :
599 :2005/07/28(木) 23:56:15 ID:???
>>604 取りあえずファイルに
>>501 のソースはっ付けて、
$strに使用するHTMLのソースを代入すればおけ。
>>596 ブラウザによって見え方が違ってくるので調整が結構難しいけど、
htmlのテーブルで棒グラフを表現するパターンは比較的採用されることの多い手法。
ただ、その場合グラフの再利用性が悪いのでGDなどのグラフィックライブラリが
使える環境な、ちゃんと画像生成してやった方がいい。
JpGraph使ってもいいけど、棒グラフ程度なら自分で好きな風に組んだ方が楽。
(HotScriptとかいけば、棒グラフだけ描画するライブラリとか軽いのもある)
PHP 4 で質問であります。 $hoge = & new Hoge(); と $hoge = new Hoge(); 後者はメモリに Hoge オブジェクトが2つできるという解釈であっていますか?
Hoge オブジェクトが2つできるってのは考え方としてはあってる。 だけど本当にメモリ上にできるかまではわからん。 実はPHPも裏ではもっとスマートに動いているという話も聞いたことある(真偽のほどは定かではない)。 まーPHP4では基本的に&をつけといたらそれでおkだと思われ。 つーか本当のことを知ってるor実際に測定可能orソースコード読める香具師いたら教えて。
「基本的に&をつけ」の一言で安心しました。 つけていないソースがいくつかあったので自分の考え違いと思って質問した次第です。 どうもありがとうございました。 つけない場合は構文通り2倍メモリとるんですかね、、興味深いです。
611 :
nobodyさん :2005/07/29(金) 14:04:20 ID:13Ftmufi
if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ copy($_FILES['upfile']['tmp_name'],$copy_name; } としたところアップロードしたファイルが日本語名のファイルだと0バイトのデータになってしまうのですがなぜでしょう? 一つ気になったのですが、php.iniでupload_tmp_dirに/tmp/phpと指定してるのですが、アップロードを行っても/tmpにも/tmp/phpにもファイルはできません。 半角英数字のファイルだと問題なくコピーできます。
>640 PHP4までは&をつけないとメソッドとかまで全てコピーしていたみたいよ。
>>611 print_r($_FILES) すりゃ、さらに詳しく状況がわかると思うがどうかね?
>611 ShiftJISだと問題が起こった気がする。 解決策も無かった気がする。
>>612 $hoge = new Hoge();
$moge = $hoge;
$mora = & $hoge;
で、いつ消えるかはさておき、生成される Hoge オブジェクトの個数は
3個ということでおkですかね?
>>615 class Hoge{
var $data;
}
$hoge = new Hoge(); $hoge->data = 'hoge';
$moge = $hoge; $moge->data = 'moge';
$mora = & $hoge; $mora->data = 'mora';
printf('hoge : %s\n',$hoge->data);
printf('moge : %s\n',$moge->data);
printf('mora : %s\n',$mora->data);
いや流れ的に、焦点は $hoge = new Hoge(); で、物理メモリ上に2コオブジェクトができるか否かなんだとおもう。 しかし、 $mora ってなんだかしおしおになるな。orz
618 :
nobodyさん :2005/07/29(金) 17:07:24 ID:yP6BN9nb
MySQLスレよりこちらに誘導されてまいりました. すみません,MySQLのデータをPHPで吐き出したいのですが, データに$(ダラーマーク)が含まれる場合はどのようにしたらいいのでしょうか? 例: Prizeフィールドに $100,000 $125,000 とあった場合 PHPで (SQL文) $data = mysql_db_query("usrdb",$sql, $connect); $row = mysql_fetch_array( $data ); $prizedt = $row["Prize"] として変数を格納した後, <td>$prizedt</td>とした場合,うまく吐き出せなく,\$prizedtでもうまくいきませんでした. どうすればよろしいのでしょうか?
>>618 MySQLスレでecho "<td>$prizedt</td>";でOKとレスもらっているみたいだけど
ダメなん?
<td>$prizedt</td>をどういうコードで吐き出しているんだ?
var_dump($row)してみな。 要するにmysql_fetch_array()でどういう構造の Arrayが返ってくるか理解汁。
621 :
620 :2005/07/29(金) 17:43:39 ID:???
いや「どういう構造のArrayが」じゃないな。「どういう値が」。
>>618 mysql_db_query()とは、えらくまた古風な関数だな。
どんな本参考にスクリプト書いてるの?
まあそれとは別に処理の途中でビシバシとエラーが
出てるような気がするんで、デバッグ中は
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('error_reporting', E_ALL);
とでもしとこうな。
display_startup_errorsはスクリプト内で変えても無意味だな。 php.ini等でどぞ。
>>623 display_startup_errorsってPHP_INI_ALLなんだけど。。。
設定は反映されるけど実際には動作しないってこと?
625 :
618 :2005/07/29(金) 18:52:48 ID:???
自己解決しました。 実際に使うデータの変数の名前がいけなかったのが原因でした。 お騒がせしました。これから精進してまいります。
626 :
nobodyさん :2005/07/29(金) 19:22:51 ID:66TM2wnl
mb_send_mail()に渡す、メール本文の改行コードは、 CR+LFでないとダメでしょうか? それともLFでも大丈夫でしょうか?
627 :
nobodyさん :2005/07/29(金) 19:52:39 ID:msnOOfVb
てゆーか、ダラって言うんだ。。
>>626 SMTPサーバー(qmail, sendmail, postfix etc)によっては
LFでも送信してくれる「かも」しれない
LFでないとエラーにする「かも」しれない
RFCで改行コードはCRLFと規定されているので横着せずに変換汁。
str_replace辺りで一発で変換できるでしょ。
629 :
nobodyさん :2005/07/29(金) 20:00:38 ID:66TM2wnl
>>628 mb_send_mail()で改行コードの自動変換はしてくれないんですかね?
フォームのダウンロードボタンを押すと テキストエリアに挿入されているソースが ファイルとしてダウンロード出来るプログラムを 作ろうと思っています。 ただ、これに利用される関数とかよくわかりませんので 参考サイトとかありましたら、教えていただけないでしょうか?
>>630 入力された文字列をダウンロードさせるってことか?
それとも、テキストエリアにデフォルト値として出力したものと同じものをダウンロードさせるってこと?
ダウンロードさせるならheader関数
632 :
630 :2005/07/29(金) 21:12:00 ID:???
前者です。ちなみにContent-Dispositionでしょか?
633 :
596 :2005/07/29(金) 23:44:47 ID:???
>>607 どうもありがとうございます。
とりあえずGDに手をつけてみようかと思います。
ところで、このような画像生成を使って最新の情報を表示させたい場合には、
毎回データ読み込み→画像生成を行うものなのでしょうか?
それともデータを更新する度に画像生成・保存して通常はそちらを表示させるものなのでしょうか?
サーバーにとっては保存しておいた画像を表示するほうが負荷は低いとは思うのですが、
毎回画像生成させてもそれほど負荷がかからない、というのであればそっちもいいかなと思っています。
どなたかアドバイスお願いします。
下記のようなソースを書いてテストしているのですが 別におかしくありませんよね?(書き方は別として。。) なぜかサーバにアップされてもなかなか処理が実行されず おそらく無限ループのようになっています・・。 <html> <body> <table border="1"> <? $fruit=array("バナナ","りんご","みかん"); $a=0; while($a<4){ print"<tr>"; print"<td>"; print"$fruit[$a]"."\n"; print"</td>"; print"</tr>"; $a++; } ?> </table> </body> </html>
>>634 素人考えだが、無限ループしてる場合なら無限に書き出されるのでは?
apacheのエラーログではどうなってるの?
> print"$fruit[$a]"."\n";
の部分を
print ("xxx");
とかにしたらどうなる?
てかprintの内容を("")でくくらないのはドウなの?OKなの?
>>634 <html>
<body>
<table border="1">
<tr><td>バナナ
</td></tr><tr><td>りんご
</td></tr><tr><td>みかん
</td></tr><tr><td>
</td></tr></table>
</body>
</html>
こういうソースを吐くな。
「<?」を「<?php」にしたら普通に動いた。
>>633 更新頻度と参照頻度によるね。
少ない方で生成、これ常識
>>633 そりゃ閲覧頻度とデータ更新頻度にも依るがな。
誰も閲覧しないのにデータだけ黙々と更新され続ける場合と
データは余り更新されないのに、激しく閲覧されるものとは扱いが違う。
グラフ生成の負荷なんて大したことない場合が多いから、
個人の普通のサイト程度の閲覧頻度なら、どっちでもいいと思うけど。
639 :
634 :2005/07/30(土) 02:50:11 ID:???
下記のようにすれば出来ました。皆さん、ありがとうございます。 <html> <body> <table border="1"> <?php $fruit=array("バナナ","りんご","みかん"); $b= count($fruit); $a=0; while($a<$b){ print("<tr>"."\n"); print("<td>"); print("$fruit[$a]"); print("</td>"."\n"); print("</tr>"."\n"); $a++; } ?> </table> </body> </html> <?を<?phpにしないといけませんでした。 通常はしなくても大丈夫だと思ったのですが。。
640 :
初心者T :2005/07/30(土) 03:04:13 ID:1xotdcs0
よろしくお願いします。HTMLとPhpでフォームからファイル名(変数?)を 受け取って、その画像をページの任意の位置で表示させたい時、 こういう風でいいのでしょうか? <?php $file = $_POST['file']; if (!$file) $file = "default.jpg"; if ($_POST['open'] && $file) { print "<img src='./test/$file>\n"; } ?> カレントの子のtestというディレクトリの内容のファイルを表示させたいです。
>>640 ・$_POST['file']の内容を精査しないと危ない。
・!$fileや$fileじゃなくて!isset($file)またはその逆を使う。
(ファイル名が'0'の場合の挙動を比較すること)
isset($file)じゃなくて、isset($_POST['file'])だ。
644 :
nobodyさん :2005/07/30(土) 04:24:33 ID:3Guwxl6q
>>644 dest -> destination : 目的地、行き先、宛先
つーことから推測すると、login処理後に表示するページを指定していると考えられる。
実際、他のページの該当部分を見てみると そのページのURLが入ってるべ?
画像表示に関して質問です。 フォーム→画像表示(アップロードはしない) としたいので、表示のphpファイルで下記のようにしました。 $images=$_FILES['image']['name']; print("<img src=\"$images\">"); しかし、ソースをみると「Array」となり、画像が表示されません。 普通にフォームから画像を選択して表示画面をprint"$image"; で表示しても画像のURLはローカルPC内のアドレスになります。 ファイル名だけ表示させたいのですが、どのようにすればいいのでしょうか?
>>646 $imagesがArrayになるのはよく分からんけど、それならそれで print_r($images)してみれば原因が推測できるんじゃないかな。
パス名を含む文字列からファイル名を取り出すにはbasename()を使う。
>>647 すみません、今確認したら普通に表示されました。
何が原因かは全く分かりませんが、とりあえずできました。
ありがとうございました。
>>644 645が言ってる事が正解だと思うけど、
認証が必要なコンテンツで認証前だった場合に、一旦ログインに飛ばして
処理させた後に、戻ってくる時のリファラ代わりにそういうパラメータを
設定することがある。
650 :
nobodyさん :2005/07/30(土) 08:16:05 ID:XEEbjr3V
explodeってムチャクチャ便利だなw $array = explode(" ", $string); これで$stringがスペース区切りで配列$arrayに格納されるんだよ、 ぽまいら知ってた?
その分だと、 $string = implode(" ",$array); で、 配列$arrayがスペース区切りで$stringに格納されるのも知らなそうだな。
ついでに初心者はarray_flipとarray_combineについて 勉強しておけwww
654 :
633 :2005/07/30(土) 08:54:01 ID:???
>>637 ,638
どうもありがとうございます。
更新頻度の方が圧倒的に低いので更新時に生成することにします。
どうもありがとうございました。
>>654 ま、蛇足だが、そこそこの更新頻度があって対象が携帯電話とかじゃないなら、
常に最新の画像が表示される(キャッシュを使わせない)ような工夫が必要かもね。
キャッシュコントロールとかでも良いかもしれないが、
簡単なのは、画像表示ページを動的にして、
<img src="hoge.jpg?<?php echo rand(0,1000) ?>">
とかかね。
656 :
640初心者T :2005/07/30(土) 09:41:57 ID:1xotdcs0
ありがとうございました^^ 自己解決しました。646さんのように『\"』(これ)を使い、 パスのところで$file変数の前の『.』を取ったら表示されました。 print "<img src=\"./test/$file\">"; 画像の表示はでできました。 If文の中の関数はまた今度勉強します。解決すべき問題は2点でした^^ ””の間は『.』は文字列の追加として使えないのですね? また疑問が沸いてきたのですが、``に挟まれた文字のあとに$が付く場合は何を意味しているんでしょうか。
>657さん ありがとうございます。すみません『''』(これ:シングルクォートって言うんですね^^;) と間違えていました(汗)。画像ファイル名を変数に選別する所で、 『if (ereg('.jpg$', $fnm))』っていう部分が気になってしまって。。 ごく基本的な問題なんでしょうか??括弧の中のシングルクォートは 文字列を扱って入るためですよね?その次に『,』と変数ですね。で、 何で変数でもなさそうなJPGの文字列の後ろに$が付いているのだろう?、と。。 下らない質問すぎるかも、、、 文字列の追加、って言うのが多分素人の表現だと思うので許してください。。 $no_image_jpg = $path_parts["dirname"].'/'.NO_IMAGE; というこの[]より後ろの部分の『.』は文字の足し算をしていると思ったのですが、 間違いなのかな。。
659 :
nobodyさん :2005/07/30(土) 12:09:05 ID:qmDtI7sh
660 :
nobodyさん :2005/07/30(土) 13:05:26 ID:cE5w1Tdy
__autoload()関数の使えば 自作クラスのrequireがしやすいと聞いたのですが。 ディレクトリ毎にクラスが分かれている場合、 ディレクトリ構造毎にif文でクラス判別を分けないとうまく行かず難しいですね。
最近のチラシは両面刷りが多いのも知らない 馬鹿がいるな
つ [ チラシの余白 ]
チラシの余白より便所の(ry
便所の(ryより2ch
ディレクトリ内のファイル数を求める関数ってありますか?? 見つからん。。。
>>666 そのものズバリの関数は無いので、ディレクトリ関数あたりで地道に数えるしか無いと思われ。
そうでしたか。 どうもありが?ォ
669 :
nobodyさん :2005/07/30(土) 19:34:09 ID:hEHjC0Wz
アクセス解析を作ってます。 リンク元はリファラーで分かるとして、 ジャンプ先って分かるようになるでしょうか? (自分のHPからどこのHPに移動したかってこと) 無理っぽい気もしますが、関数か何かあったら教えて下さい。
670 :
nobodyさん :2005/07/30(土) 19:56:02 ID:CcH/uwPy
>>669 無理なので、リンクを貼る際に自作のime.nuのような踏み台を用意して下さい。
>>669 できるよ。
JavaScriptで。そういう解析できるツールもあるし
673 :
669 :2005/07/30(土) 23:41:55 ID:???
>>672 ほうほうJavaScriptではそんなことも出来るのですか?
一度も使ったことないけど、そっちも少しは勉強するかな。
具体的に使用する関数名か、
その解析できるツールってのを教えて貰えませんか?
>>673 onClickをトリガにして、リンク先のURLをロギング用スクリプトにGETで渡せ
675 :
nobodyさん :2005/07/31(日) 00:33:20 ID:xafAdIm1
UNIXドメインソケットをfsockopenするとき ポート番号は何番を指定すればよいのでしょうか
676 :
675 :2005/07/31(日) 00:36:13 ID:???
0でしたね マニュアルに小さく書いてありました
677 :
nobodyさん :2005/07/31(日) 02:49:12 ID:wksgwGNX
>>677 そんな過疎ってるぽいところで、答えても
情報が再利用されないし、こっちに誘導したほうがいいんじゃない?
>>674 onClickだとリンクページ等みたくURLをクリックしてジャンプでないと出来なくね?
>669は自分のページからブックマーク等で他サイトにジャンプした場合に判るようにしたいんじゃないの?
(もしできてもonClickじゃなくonUnloadでは?)
なんとなくやり方はわかるのですが、うまくいかないので質問します。 フォームの入力項目が5つあったとします。 2(バナナ,リンゴ)しかテキストボックスに入力していないとします。 すると表示は「フルーツはバナナとリンゴです」 3(バナナ,リンゴ,メロン)しか入力していない場合は 「フルーツはバナナとリンゴとメロンです」 という表示にしたいです。ifとarrayの組み合わせで出来ると 思ったのですが、条件が多くなってしまいます。 なかなか説明しづらいのですが、ヒントはありますでしょうか?
フルーツの配列用意して入力内容との比較に使う。 合致する場合は適当な配列に格納するようにして 空っぽでない場合に限りその配列を出力するようにすればいい。 こんな感じではどうでしょう。
>>680 $aryName = array("バナナ","リンゴ","メロン");
$names = implode("と",$aryName);
print("フルーツは".$names."です");
テキストボックスに["test","hoge"] と入れて送信すると \"test\",\"hoge\"となり、"に\が付くのですが、 どうしたら付かないように出来るのでしょうか?
>>683 magic_quotes_gpc = Off
ちょっとは自分で調べる癖をつけないと。。。
$a['name'][0] = hoge という多重配列があって、$a は可変で、様々な名前になっています。 これを、$name = hoge にしたいのですが、どうやって処理するのが効率的な抽出方法で しょうか?
>>685 意味がよく判らないな。
とりあえず、自分の考えで書いたソースを貼ってみ。
そのほうが回答は得られやすい。
>>685 自分で書いてみたけど効率的でないっていうことなん?
効率的の意味(実行速度 or コード量 or 使用メモリ量 etc)もよく判らない。
あと、
$a['name'][0] = hoge
$a['name'][1] = hoge1
とあった場合はどうすればいいの?
688 :
nobodyさん :2005/07/31(日) 15:22:06 ID:UMC+uCHN
$valが配列か、普通の変数かを簡単に区別する方法はないでしょうか?
質問なら その2つのスレのどっちかで、 新ver.キター ウヒョー ノマノマ(ry なら、フジモト@PHPマスターを讃えるスレ でフッチー乙〜 ってのがいいかと。
692 :
690 :2005/07/31(日) 17:40:29 ID:???
Googleで検索って何がしたいのさ。
で、結局PHPの入門はどんな書籍を買えば良いのよ? 初心者ってリファレンス買うと失敗しますよねw?
695 :
nobodyさん :2005/07/31(日) 20:17:47 ID:tE006mzP
GETで変数をphpに渡したいんだけど、
http:// 〜〜/xxx.php?2ch
といった感じで値だけで渡した場合、どうやって受け取れば良いでしょうか?
<?php phpinfo(); ?> なページで確かめれ。
698 :
nobodyさん :2005/07/31(日) 22:21:22 ID:WZp9m1Ky
str_replaceで使う正規表現の"\r"って何?
str_replaceで正規表現は使えませんが。
>>697 ,700
できました。ありがとうございます。
$_GETで取得しようとしてました。
<img src="./hogehoge.png" alt="hogehoge" /> って飛んできたら <img src="./hogehoge.png" alt="hogehoge" width="88" height="31" /> ってな風に、画像のwidth , height を取得してタグを適宜変換してくれるようにしたいのだが、どうしたものか全くわからん。
やりたいことがさっぱりわからん
>>702 たぶんこんな感じのことかな?
<?php
$src = './hogehoge.png';
$alt = 'hogehoge';
list($width, $height) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" width="<?=$width?>" height="<?=$height?>" />
はずしてたらスマソ
706 :
702 :2005/08/01(月) 00:11:11 ID:???
説明不足スマソ。
だが、
>>705 の説明がかなり的確。dクス。
すごい無駄なことするんだな
受け取った$_GET['hoge']の値を受け取った後でスクリプトの中で別の値で上書きしちゃうとかってありでしょうか? これをやると処理が非常に簡単になるんですが・・・ スパーグローバルを勝手にいじるってことの良い悪いがわかりません。
単なる変数だし、いいんじゃないの?
>>712 そういう変なことやられると、引き継いだ奴が苦労するんだよ
今は個人でも変な癖はつけられると困る
>これをやると処理が非常に簡単になるんですが・・・ この時点で結構アイタタなソースのような希ガス。 根本的に作りが変なのでは。。。
715 :
nobodyさん :2005/08/01(月) 06:50:03 ID:KP4xPzSt
定数だと思うべし
>>705 list( , , , $size) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" <?=$size?> />
>>707 俺は無駄ではないと思うが。
指定しないと表示が遅くなるし、読み込み中にレイアウトが崩れる。
━━━━━━━━━━━━━━━俺様用しおり━━━━━━━━━━━━━━━
いや、詩織は漏れの物だから
マニュアルが新しくなってたんでchmファイルをダウンロードしたんだけど前回同様キーワードが文字化けします。 誰か文字化けしないchm作って くれないか
GDで画像に文字列を描画する際に文字列を特定の範囲内でセンタリングする方法ってありますか?
>723 画角から自分で計算汁
725 :
723 :2005/08/01(月) 14:05:43 ID:???
>>724 やはり自分でやるしかなさそうですね。
文字列はいろいろ変わるのでその都度自動計算させる必要があるのですが、
計算の仕方に今ひとつ自信がありません。
imagettftextを使っているのですが、
単純に「全角の横幅=指定したサイズ」「半角=全角の半分」「文字間隔=1px」と考えていいのでしょうか?
フォントによっても変わりそうだし、どうしたものか・・・。
727 :
nobodyさん :2005/08/01(月) 15:23:45 ID:moKfjlj6
コマンドライン用のスクリプトを「php -l xxx.php」でチェックしたら以下のエラーが出ました。 変数周りは確認しましたが$の付け忘れや$のみなどはありません。 何が原因なのでしょうか?(linux+PHP 5.0.4(CLI)使用) Parse error: parse error, unexpected $ in xxx.php on line 110 Errors parsing xxx.php なお110行目はEOFです。 108: ?> 109: [改行のみ] 110: [EOF]
728 :
723 :2005/08/01(月) 16:13:43 ID:???
>>726 自動計算ができるみたいですね。
かなり便利そうなので試してみます。
どうもありがとうございました。
729 :
727 :2005/08/01(月) 16:30:01 ID:???
すみません。解決しました。
>>722 最初出来なかったけどファイル名のH:/phpdoc/ja/を削除してやったら出来ました。
情報有賀と
>>713 「変なこと」か?ならば何故仕様上
書き換えできないものにしていない>PHP
いや俺も個人的にはやらないけど、書き換わってる可能性も
含めて他人のコードは読んでるよ。実際結構書ける人でも
そういうコードもあるし。
出来ること=変じゃない が成り立つならこの世の中には変なモノは一切存在しえないよ
クライアントがクッキーを拒否しているかを 調べる方法があったように記憶しているのですが 思ったのですが、どうすればいいんでしょうか?
$sql = "select * from hoge;"; $result = mysql_query($sql); while ($row = mysql_fetch_array($result)){ 大抵の場合、ここ(mysql_fetch_arrayのループ内)で、$row['hage']という形で値を取り出しますが mysql_fetch_arrayのループより、後ろでこの値を使いたい場合はどうしたらよいのでしょうか? $atode['a'] = $row['a']; $atode['b'] = $row['b']; $atode['c'] = $row['c']; みたいにループ内で別の配列に入れておいて } ループを出てから $atode['a'] 、$atode['b']、$atode['c']を使えば良いみたいですが、配列を添字を保ったまま別の配列に入れてしまう方法(いちいち配列の数の分書かなくても)方法ってあるのでしょうか?
>>714 あ、そういうのやっちゃってました。
if(!$_GET['mode']){$_GET['mode]='main';}とかって。
逝けないことだったんですか。
$_GET['mode']でcase文使って分岐させるのに、初期化の意味も込めて上記のように書いてたんですが。
>>734 全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
JavaScript使えるならwindow.navigator.cookieEnabledでチェックできるみたいだけど(ブラウザの制限不明)。
>>735 1レコードだけなら
ループ内で $atode = $row;
ループ外で $atode['a'];
全レコードなら
ループ内で $atode[] = $row;
ループ外で $atode[レコード]['a'];
でも、ループ外でレコードの内容が必要なケースってなんなんだろう。
ループ内で処理できんのかのぉ。
>>735 ループ後 $atode = $row でいけると思う。ってか$rowをそのまま使ってもいいんじゃないの?
740 :
nobodyさん :2005/08/01(月) 19:54:11 ID:IMj74JwV
>>737 >全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
そうですか。Javascriptと勘違いしてたかも。
>チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
Javascriptは使わないポリシーなので検討してみます。
蟻10
>>736 ソースのあちらこちらで変更していないであれば、いいんでないかい。
漏れも含めて多分、グローバル変数である$_GETを「あちらこちら」で
書き換えられるとトラブル時に追いかけづらいから嫌悪感があるんだろうと思う。
個人的には$_GET等のスーパーグローバル変数は参照専用のほうが心理的にはありがたいんだけどね。
ちなみにその例であれば
switch (isset($_GET['mode']) ? $_GET['mode'] : 'main') {
case 'main':
//main または省略時の処理
}
でいいのではないかと。
>>741 それならdefault使えばいいんじゃないか?
こんなことをしているんですが、もっと簡単な書き方はありませんか? function serch ($foo) { foreach ($foo as $key1 => $key2) { if (! is_array($foo[$key1])) { $foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8")); continue ; } else { foreach ($key2 as $key3 => $key4) { if (! is_array($foo[$key1][$key3])) { $foo[$key1][$key3] = htmlspecialchars(mb_convert_encoding($key4,"EUC-JP","UTF-8")); continue ; } else { foreach ($key4 as $key5 => $key6) { $foo[$key1][$key3][$key5] = htmlspecialchars(mb_convert_encoding($key6,"EUC-JP","UTF-8")); } } } } } return $foo; }
>>742 無指定(設計動作)と、よく判らん値を指定してきた
変なパターンは別にさせたいときもあるし。
745 :
nobodyさん :2005/08/01(月) 20:52:46 ID:cnoIwIPs
>>743 テストしてないけどリカーシブコールを使えばいいような希ガス。
元のコードをざっとしか見ていないんで間違っていたらスマソ。
function serch ($foo) {
foreach ($foo as $key1 => $key2) {
if (! is_array($foo[$key1])) {
$foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8"));
} else {
$foo[$key1] = serch($key2);
}
}
return $foo;
}
>>738 ありがとうございます。まさに知りたい事はそれでした。
いちいち書かなくても添字(キー)がちゃんと渡されるんですね。いままでなんて面倒な事をしてたんだorz
今回必要だったのは1レコードしかヒットし得ないクエリだったのですが、複数ヒットした場合の例も試してみました。
ループ内で $atode[] = $row;
ループ外で $atode[レコード?嫋['a'];
この場合、レコード?宸フところには、ループの回数(もちろん0から)が入る、ということで良い訳ですよね?(一応動作させてみましたけど念のため聞く。)
>ループ外でレコードの内容が必要なケースってなんなんだろう。
ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。
>>739 ループ閉じた後はダメじゃないですか?
>>741 自分でも解らなくなるので、もちろん最小限にしてます。値が無いときに初期値を与えるとか、その程度です。
>>744 そうそう。そんな感じです。エラーはエラー、値がないと言うのは、想定内のことなんで。
ブログのトラックバック機能を作っています。 受信は問題なくできるのですが、送信が全くうまくできません。 ただ、自分の利用しているサーバ内であれば フリーブログなどと送受信出来るので、送信機能には 問題ないのかも?っと思っています。 ping送信するに辺り、何か設定が必要なのでしょうか? (php.ini的に)
748 :
738 :2005/08/01(月) 23:48:09 ID:???
>>746 ループの回数という表現に違和感あるけど、多分あってる。
0〜レコード数(ループの回数) - 1 の値ね。希望通り動作したのなら大丈夫かと。
>ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。
ふむふむ。
確かに漏れもそう書くな。ただループ内でデータをHTML化して文字列に代入してしまうから
オマイさんのやりたかったことがピンとこなかったわ。まぁ人それぞれなので参考まで。
$optionhtml = '';
while ($row = mysql_fetch_array($result)){
$optionhtml .= sprintf('<option value="%d">%s', $row['id'], $row['data']);
}
print <<<EOD
<select name="xxx">
${optionhtml}
</select>
EOD;
>>748 >ループの回数という表現
変な言い方でした。sqlのヒットしたレコードの1件目が[0]2件目が[1]と、こういう意味です。
示していただいた例は、漏れにはちょっと難しすぎました。が、頑張って解読してみます。
ちょっと話はそれますが、phpのスクリプトでDBと連動させて吐き出したhtmlのソース、みなさんは綺麗さとか気にしますか?
漏れは、htmlばかりずっと書いてたんで、吐き出されたソースも綺麗にインデントのレベルがそろうように書いてます。ばからしいと思いつつ。
750 :
739 :2005/08/02(火) 01:00:42 ID:???
>>746 DBの取得じゃないけどこれ↓だとループ後でもいける。
多分やってることは一緒だと思うので。
$a = array(1,2,3,4,5,6,7,8,9);
$cnt = count($a);
for($i = 0; $i <$cnt; $i++){
$row["test".$i] = $a[$i];
print($row["test".$i] ."\n");
}
$atode = $row;
$cnt = count($atode);
for($i = 0; $i <$cnt; $i++){
print($atode["test".$i]."\n");
}
>>747 よくわからんが、オープンソースのを参考にするんじゃだめなのか?
ダメならここで聞いて作るのもダメな気がするがそれはいいの?
if (ereg("[0-9]{8}",$aaa)==false){ //エラー処理 } $aaaが半角数字8文字でないときにエラー処理したいんだがうまくいかない 8文字以下ならエラー処理できるが8文字以上ならとおる・・・ なんか間違ってる?
^と$
754 :
747 :2005/08/02(火) 06:54:45 ID:???
>>751 参考にしています。ただ、外部に送信だけがなぜか出来ません。
ですので、サーバ的な問題があるのかと思い、
質問させていただきました。
755 :
nobodyさん :2005/08/02(火) 10:56:22 ID:pypKKfs6
初心者です。 画像のアップロードを含む個人情報登録画面を作ってます。 入力画面(データ入力)→確認画面(OKか確認のみ)→DB登録画面(insert文実行) と遷移していく中で、入力画面からinput type="file"で画像を選択して アップしたいんですが、move_uploaded_fileで渡すパラメータ($_FILESの中身) って、hiddenか何かで持てないですかね? そうじゃないと、DB登録と同じタイミングで画像をアップできなくて。 今は、確認画面で画像を実際にアップ、DB登録エラーなら画像を削除とか 面倒なことを考えています。 しかも、確認画面から戻るときも画像を消さないといけないし・・・。 似た処理を作った方教えてください。 ちなみにDBはMySQLです。
>>755 アップロード時点でテンポラリーに入ってる訳だから、
それが消えるまでの間にDBのINSERT掛ければ良いと思うが?
成功すればmove_uploaded_fileで格納。
類推しにくいテンポラリー名だとしてもHIDDENは止めれ。
SESSIONで持っとけ。
あと確認画面でアップロードした画像はそのままで、テキストだけ
訂正したい場合の「やり直し」もモードに入れといたら?
やっぱムリすか・・・ こういうもの作ってる人いると思うんだけどどうやってるんだろう? やっぱ上で書いた方法なのかな。 ヤフオクとかもそういう動き(あっちはJavaだが)してるけど、 効率のいい方法は何かないものか・・・
759 :
757 :2005/08/02(火) 11:17:03 ID:???
>確認画面から戻るときも画像を消さないといけない これが要件なら仕方ないな。
>>755 input type="file"がなぜvalue値を指定できないようになっているのかを考えろ
それにPHP4から$_FILESで得られる名前はファイル名のみでファイルパスは含まれなくなったし
画像のアップロードは一番最後にする
762 :
755 :2005/08/02(火) 11:25:12 ID:???
>>757 レスどうもです。
やっぱSESSIONのほうが安全ですかね。
セッションは仕様としてやらないって方向だったんですが
(そこまでのシステムじゃないだろうってことで)
提案してみます。
>あと確認画面でアップロードした画像はそのままで、テキストだけ
>訂正したい場合の「やり直し」もモードに入れといたら?
モード追加は厳しそうです。決断権あんまりないもので・・・orz
入力画面に戻るたびに画像は再度指定し直すって方法でいこうと思ってます。
763 :
755 :2005/08/02(火) 11:31:52 ID:???
>>757 そうじゃないと、画像だけアップされてDBにデータの無いものは
なにも関連のないゴミ画像として残りますよね。
トランザクション成功時のみアップされればいいんですが・・・。
>>760 クロスサイトスクリプト対策、ですか?
すんませんイマイチ判ってないです。
>>761 確認画面で画像をアップ、ってことですか?
それはチト仕様上厳しいです。
厨な回答してたらごめんなさい。
全部の登録が完了してから、改めて画像アップさせりゃいいものを… >それはチト仕様上厳しいです。 それは仕様が糞なんでは?
765 :
757 :2005/08/02(火) 12:02:46 ID:???
うーん、マニュアルより >移動または名前の変更が行われていない場合、リクエストの >終了時にそのファイルはテンポラリディレクトリから削除されます。 俺書いたプログラムでアップロードを受けるスクリプト以外でも 難なく取れてたような...ゴミ処理は自動でもしてたみたいだけど。
>>755 確認画面で画像を表示する場合は、大体こんな処理をしてるのが多いんジャマイカ?
1. 入力画面 - input type="file"
2. 確認画面 - move_uploaded_fileで一時ファイルとしてどっかに保存。
画像表示(<img>)にもこの一時ファイルを使う。hidden(or session)で一時ファイル名を保持。
3. 登録画面 - 一時ファイルを正式ファイルに変更(変名とか移動とか)。DBに登録。
処理中断や入力し直しで残った一時ファイルは、定期的に削除。(cronやら、手動やら)
一時ファイルを作りたくなかったら、画像データそのものをhiddenに仕込むなり
sessionに仕込むなりするしか無いと思われ。
767 :
nobodyさん :2005/08/02(火) 12:10:17 ID:Svt/6T9+
PHP+MySQL MySQLに、2つのテーブルがあり、IDというフィールドをキーにしてリレーションをします。 テーブル1:ID、category テーブル2:ID、name この様な場合に、テーブル1のcategoryに対するテーブル2nameを全て列挙したいのですが、 どのようなクエリとPHPを書くのが一般的なのでしょうか。 いま考えているのは、 SELECT name FROM テーブル1 WHERE ID=○○ のようなクエリ自体をテーブル1のレコード数ループさせながらprintするというものなのですが、 あまり良い方法では無いような気がします。
768 :
767 :2005/08/02(火) 12:11:38 ID:Svt/6T9+
追記です。 表示結果は以下の様にしたいです。 カテゴリー1 名前 名前 名前 カテゴリー2 名前 名前 名前 ・ ・ ・
769 :
757 :2005/08/02(火) 12:12:19 ID:???
ごめん、やっぱりPHPの仕様に合わせて確認表示時に
アプリ自前のテンポラリーに移動してたわ。mtimeを目安に自前でgcも。
>>757 と
>>765 は嘘。
んで、テキスト関係の登録と同時に自前のテンポラリーから正規のところに移動。
(確認→訂正時には自前のテンポラリーからは削除しない。gcか正規登録時に削除するのみ)
770 :
755 :2005/08/02(火) 12:20:20 ID:???
次の質問来てるとこすみません。
>>769 は、つまり
>>766 と同じような仕様ということですよね?
つまり
確認時に画像アップ(自前の一時ディレクトリに)、DB登録時に一時ディレクトリから移動
訂正時の画像はそのタイミングでは消えない、と。
一時ディレクトリの画像は定期的に消そうと思います。
この仕様でやってみます。ありがとうございました。
>>767 DB板の方がいいと思うんだが、、、
つ [ SQL 結合 ]
772 :
767 :2005/08/02(火) 12:27:47 ID:Svt/6T9+
すいません。 2chビギナーで、DB板というのがあるんですね。。。 マルチポストになりそうですが、行ってきます。
いや、DB板にきても、 つ [ SQL 結合 ] とレスしちゃいますが。。。
>>767 SELECT category, name from テーブル1, テーブル2 where テーブル1.ID = テーブル2.ID
776 :
767 :2005/08/02(火) 13:15:53 ID:Svt/6T9+
>774 ありがとうございます。 この結果を768の様に表示したいんです。 >775 リレーションって何ですか? わかっている人の説明が聞きたい。
>>776 あらら。こちらのスレとマルチだったのね。MySQLスレの方にレスしちまった。
MySQLスレの106を確認よろ。
>>776 キーフィールドを使って複数のテーブルをいろいろ(LEFT RIGHT INNER OUTER)と簡単に結合(JOIN)できるのがリレーショナルデータベースの利点
Mon Aug 1 00:00:00 2005 という文字列から、 2005/08/01 という文字列を返してくれるような 便利な関数はありませんか?
780 :
743 :2005/08/02(火) 15:58:18 ID:???
>>745 ありがとうございました。
期待した結果となりました。
非常に参考になりました。
>>779 この手の質問って定期的にあるな。
PHPマニュアルの日付関連の辺りを読んで、色々やってみりゃいいのに。
$day = date('Y/m/d', strtotime('Mon Aug 1 00:00:00 2005'));
>>779 date('Y/m/d',strtotime ("Mon Aug 1 00:00:00 2005"))
んでも、そんな不思議文字列使うよりは、タイムスタンプに統一した方がいいんでないの?
たぶんDBからの取得データだと思うから、SQLやDBの設定あたりで解決するほうがよいかと。
webArenaでpear使ってる人いる?
PHPとMySQLで登録ユーザーのみが閲覧・入力できるサイトを作っているのですが、 こういう場合にMySQLでは全てのユーザーについてそれぞれアカウントを作る必要があるのでしょうか? それとも管理に必要なアカウントを除いて、一般ユーザー用のアカウントは一つだけ作って それを使いまわせばよいのでしょうか? 後でログを確認するときなどに誰がどのような作業を行ったか分かるようにしたいのですが、 これはApache等のアプリケーション側でログを取るべきなのでしょうか? よろしくお願いします。
>>785 httpを使わないとなると、コマンドラインで実行するしか無いねぇ。
phpでそれをするには、マニュアルのプログラム実行関数あたりを参照。
んでも、対象のスクリプト側にも手を加えなきゃいけなくなると思うよ。
(perlなら @ARGVを適切に処理するように。)
787 :
じじぃ :2005/08/02(火) 19:19:18 ID:53wND5J6
Yomi-Search PHPを初めて設置しようとしましたが、エンコードがわからなくて書き換えることが出来ません・・・ config.phpのエンコードって何ですか?
配布サイトにサポート掲示板があるから、そこでk(ry
789 :
757 :2005/08/02(火) 19:35:12 ID:???
>>770 >同じような仕様ということですよね?
Yes.「訂正時の画像はそのタイミングでは消えない」というのは
せっかくアップロードは成功したのにテキストの修正だけのために
もう一度アップロードさせたくない。及びアップロードファイルのクライアントローカルパスを
PHP側で知ることが出来ないので、undo時にその値で初期化できないということもある。
(JavaScriptでゴニョゴニョやってみたことがあるが、日本語ファイルの場合の
挙動がブラウザで結構まちまちで、面倒なので投げた)
UPLOAD_ERR_NO_FILEの時で既に一度でもそのセッションで
アップロードが成功していれば、自前テンポラリーのファイルを利用する。
そんな感じで一応うまく動作してる。
select * from hoge;というsqlクエリを実行して while ($row = @mysql_fetch_array($result)){} で値を取り出しました。(1件のみヒットという前提) このなかに$row['a01']〜$row['a10']という値があるとします。 他にも$row['name']とか$row['hoge']なんていうのもあるとします。 このとき、$row['a01']〜$row['a10']のうち、値が'空'で無いものの数がいくつ有るかを数えたいです。 目的:その数分だけfor文で、テーブルのTRを描画させたい
791 :
JHON :2005/08/02(火) 19:48:37 ID:kmlqG+RX
あの、はじめまして。 早速質問ですが<table>使ってメニューボックス作ったんですけど いくつか並べておきたいんですが、綺麗に並べる方法おしえてください。 ついでにメニューボックスにタイトルつけたいんですが、それも教えてください。
こんなカンジ?
>>790 $cnt = 0;
for($i=0;$i<10;$i++) {
$key = "a" . $i;
if (!is_null($row[$key])) $cnt++;
}
794 :
785 :2005/08/02(火) 21:45:02 ID:???
>>786 プログラム実行関数ですね。
調べて試行錯誤してみます。
ありがとうございます。
>>793 レスどもです。
数字の規則的な部分は01とかみたいに、0パディングで2桁だったので、
forループの中で、
$i = sprintf("%02d",$i);
としてみました。動作はばっちりですが、sprintfってこんな感じの使い方でよいんですかね?
796 :
nobodyさん :2005/08/03(水) 03:06:52 ID:Vw0PEp23
質問させてください PHP4.1 anhttpd winxp にてPHPを勉強しているものなのですが コードを書いていて、どうしてもこの部分でエラーをだしてしまいます。 $str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str); Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/web/ciao/public_html/emoji/emoji.php on line 301 "$tmp[$1]"この部分がおかしいと思うのですが、このように値を参照してやりたいのです。 phpマニュアルに書いてある部分を読んであまり分からないまま "$tmp[${1}]" など試してみたのですがうまくいきません。 どうかお力添えをお願いできないでしょうか。
ヒアドキュメントって何度も同じID使っていいんですか? >>>DOC DOC; 例えば同じページ内で何度もヒアドキュメント使うときに DOCばっかりだとエラーの原因になったりします?
>>797 PHPタンは賢いから問題にならないけど、
人間のほーがエラーを起こす原因になるですまる
800 :
nobodyさん :2005/08/03(水) 10:16:49 ID:Vw0PEp23
>>798 レスありがとうございます。
解説を読んで括弧で明示的にしてやらないとだめなのかと思い、
"{$tmp[$1]}"
こうしてみたり、
"$tmp[{$1}]" "${$tmp[$1]}"
こうしてみたりもしたのですがダメでした。
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/web/ciao/public_html/emoji/emoji.php on line 301
こんなエラーがでます・・・
シングルクオート
>>800 「$1」は「$i」等の間違いじゃないの? 変数名の先頭は数字ダメだよ。
それと"$tmp[$1]"はダブルクオートなくてもいいでしょ。
(.*?)に一致した部分が $1 として使われて、該当部分が$tmp[$1]に置き換えられるのを期待してるんだと思うよ。 one#_hoge_#three -> $tmp['hoge'] = 'two' -> onetwothree one#_huge_#three -> $tmp['huge'] = '-' -> one-three てな感じ。
804 :
796 :2005/08/03(水) 12:12:19 ID:Vw0PEp23
>>802 レスありがとうございます。
$str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str);
このように正規表現でヒットした箇所のデータ参照を$1で行い
それを$tmpの連想配列の引数として使用し、値を参照しようとしています。
>>800 こう書くしかないんぢゃないのかなぁ。
$pattern = '/#_(.*?)_#/i';
$str = 'Start#_hoge_#End';
$tmp['hoge'] = 'fuga';
if (preg_match($pattern, $str, $match) && isset($tmp[$match[1]])) {
$str = preg_replace($pattern, $tmp[$match[1]], $str);
}
preg_replaceの実行時に、「$tmp[$1]」を評価させるんだから、 'tmp[$1]' あるいは "\$tmp[\$1]" にしないとダメでは?
>>804 e修飾子
$str = preg_replace("/#_(.*?)_#/e",'$tmp["$1"]',$str);
>>799 ありがとうございます。
確かにそうかもしれないので、ひとつひとつ変えてやってみます!
809 :
_ :2005/08/03(水) 13:27:21 ID:???
質問させてください。 windowsとlinuxでphpを使用しているのですが system関数で一部のコマンドが使えません。 どうしたら使えるようになるのでしょうか?
811 :
nobodyさん :2005/08/03(水) 13:53:34 ID:OQNM6t9u
rand()でmt_getrandmax()の数字出せますか? 割り算してループさせると処理遅い・・・30秒でタイムアウトorz
何言ってるのか分かんない。 php4@win2k echo getrandmax(); // 32767 int2 echo mt_getrandmax(); // 2147483647 int4 echo rand(2147483646,2147483647);
814 :
809 :2005/08/03(水) 14:25:10 ID:???
>>810 さんレスありがとうございます。
詳しく言うと、
imagemagickをphpで使いたいと思い
$convert = "/usr/bin/convert";
system("$convert -geometry 50 x 50 a.jpg b.jpg");
などのスクリプトを実行していましたところ、
正常に動作しなかったので、いろいろ調べてみたところ
system関数が使えてないことがわかりました。
昔は使えていたのですが、サーバーを再インストールして、使えなくなりました。
ちなみに ls などのコマンドはsystem関数で使えるのですが
mkdir や useradd などは使えません。
よろしくお願いします。
815 :
nobodyさん :2005/08/03(水) 14:25:46 ID:OQNM6t9u
間違えたスマソ rand()でmt_getrandmax()以上の数字出せますか?
816 :
nobodyさん :2005/08/03(水) 14:25:59 ID:WIIsN5aX
携帯電話のダウンロードカウンターってあるのでしょうか? PCは検索かけると出てきましたが 携帯に対応させるにはどうしてもできなく こちらに書き込みさせて頂きました。
817 :
nobodyさん :2005/08/03(水) 14:28:38 ID:WIIsN5aX
携帯電話のダウンロードカウンターってあるのでしょうか? 携帯サイトでランキングを製作したいのですが PC用のCGIダウンロードカウンターをいじってもまったくお手上げ(ToT)
818 :
nobodyさん :2005/08/03(水) 14:29:24 ID:WIIsN5aX
>816 817 間違って2度書き込みしてしまいました 汗
821 :
nobodyさん :2005/08/03(水) 14:32:35 ID:OQNM6t9u
>>819 スマソ
FFAPHPで能力値浮動小数点逝って困ってますorz
ダメージ計算でマイナス逝っちゃう・・
822 :
nobodyさん :2005/08/03(水) 14:37:30 ID:OQNM6t9u
823 :
811 :2005/08/03(水) 17:07:36 ID:OQNM6t9u
自己解決しました function random($num){ $random0 = mt_rand(0,10000); $random1= $random0 * 0.0001; $random2 = round( $num * $random1 ); return($random2); }
824 :
名無しさん@そうだ選挙にいこう :2005/08/03(水) 17:08:00 ID:pKopPkZZ
この板人大杉がでます。 PHPでなんとかしてください。
PEAR::DBの DB.phpってどこに入ってるんでしょうか? WindowsのPHP5を使ってますが、どこにあるかわかりません
検索してみたか?
>>827 してみたけど、無いんですよ
もとから入ってるものじゃないんですかね?
tgzファイルがいくつかあるみたいなので、その中に
入ってるのかと思ってるんですけど
829 :
826 :2005/08/03(水) 19:02:32 ID:???
ついでに確認ですけど、これってWindowsでも使えますよね? #pear install DB しろって書かれてるページは多いんですけど、これってLinux系で Windowsでやっても(パス設定しても)ダメでしたが・・・
環境変数のPATHにPHPやPear.batのあるディレクトリを追加するか そのディレクトリまでcdしてから実行しろよ
831 :
826 :2005/08/03(水) 19:33:07 ID:TuHx69hT
>>829 のコマンド実行後ってどれぐらいで、完了するもんでしょうか?
>>830 さんの言うようにパス設定ちゃんとしたら、エラーはでないんですけど、
実行後なんのメッセージもでないまま固まってるんですけど・・・
832 :
826 :2005/08/03(水) 19:50:53 ID:???
go-pear.bat を実行して、php.exeの場所を指定するだけだった('A`)
mysqlに投げるクエリ、 $sql = "select * from hoge;"; hogeのあとの「;」は有るのが正しい?無いのが正しい?どっちでも動いちゃうんですが。
>>833 その後になんかつなげるなら付けといてもいいだろうけど、
俺は紛らわしいしつけない。
>>833 他のDBでは通用しないのがあるので、無いのが正しいに一票。
うろ覚えだけどソース的には無いのが正しいというのを見たことがある。
2chだと思ったけど…。
836 :
nobodyさん :2005/08/03(水) 22:19:14 ID:ehblprIn
cgi版phpをつかわなければならなくなったのですが... .htaccessでphp_valueを変更しようとしたんですが、反映されません。 ものすごく既出だと思うのですが、cgi版phpで、php.iniの値を変える場合はどうしたらよいのでしょう? 変えたいのは、 mbstring.encoding_translation がonになっているので、これをoffにしたいだけなのですが...
>>836 そのCGI版PHPの設定ファイル検索ルートのどこかに
php.ini (別の名が使えるように設定している場合はその名前)を置く。
838 :
nobodyさん :2005/08/03(水) 23:53:04 ID:jkhIjHPp
ショッピングカートなどで、データを一時保存するためには 何の関数を使用すればいいんですか?
mysqlでテーブルの複数フィールドに検索したい語句が入っている可能性があります。 こういった場合、whereのあとに where key1 like '%a%' or key2 like '%a%' or key3 like '%a%' ・ ・ ・ と続けるしかないんでしょうか?
>>838 一般的なのはセッションや、クッキー(使い方によっては両方ほぼ同義だが…)。
>>840 それだと
key1='hoge'
key2='hage'
検索文字列='geha'
とかの場合に問題あるんでない?
ディレクトリ一覧を出力したいのですが、 $handle=opendir(READ_DIR); while ($entry = readdir($handle)){ if (is_dir($entry)){ echo $entry."\n"; } } closedir($handle); で出力した結果がUTF-8で出力されてしまいます。 SJISで出力するにはどうすれば良いんですか?
>>843 ディレクトリって英数文字だろ
文字コード関係ないんじゃないの
>>844 すみません説明が少なかったみたいです。
サーバはsambaを使用していて、ディレクトリ(フォルダ)に日本語で
命名しているものもあります。
それを一覧で取得したいんです。
よろしくお願いします。
取得してから文字コード変換すりゃいいだけなんじゃないの?
すみません。解決しました。 while ($entry = readdir($handle)){ if (is_dir($entry)){ echo mb_convert_encoding($entry,"SJIS","UTF-8")."\n"; } } closedir($handle); でいけちゃいました。 スレ汚しスマソ
848 :
nobodyさん :2005/08/04(木) 23:24:02 ID:6tkxUKoa
abc.def.ghi. というデータがあって、 最後の、.(ドット)だけ、削除して、abc.def.ghi というデータにしたいのですが、 どうすれば良いでしょうか?
入門書を一通り読み終えた程度のレベルなのですが、 違う本を買ってみたところ、echo文で文字列をくくるのに <<<EOD ..... EOD; というやり方が使われていました。 ぐぐってみたところヒアドキュメントというのを初めて知ったのですが、 この場合IDはなんでもいいとのことですが、EODという言葉自体はどのような意味を持つのでしょうか? 何かの略なのでしょうか?
End Of DQN
EndOfDocuments...kana? EOT na hito mo iru. EndOfText kashira.
>>849 explosive ordnance disposalの略
(爆発物処理)
853 :
849 :2005/08/04(木) 23:51:56 ID:???
>>850-852 レスどうもです。(ネタ含めて)
それにしても文字列の中に連想配列を入れるときもいちいち"......" . $hoge["age"] . "..."ってやってたのに
波括弧が使えるとは知らなかった・・・orz。
入門本なんてそんなものなのかな?
>>848 $string = "abc.def.ghi.";
$string = preg_replace("/\.(?=$)/", "", $string);
855 :
nobodyさん :2005/08/05(金) 00:15:36 ID:9OK6LhSH
文字列の中で定義した定数を使うことはできないのでしょうか? 例えば define("hoge","aiueo"); print "あいうえおはローマ字でhoge"; などとして「あいうえおはローマ字でaiueo」と出力させたいのです。 print "あいうえおはローマ字で" . hoge; というのは避けたいのですが、他にやり方はあるものでしょうか? よろしくお願いします。
856 :
nobodyさん :2005/08/05(金) 00:16:25 ID:9OK6LhSH
>>848 $string = "abc.def.ghi.";
$string = substr($string,0,strlen($string)-1);
858 :
848 :2005/08/05(金) 00:22:38 ID:???
ある程度の長さのある文字列を、頭から決まった文字数だけで切ってしまうにはどんな関数を使えばよいのでしょうか? ブログなんかでたまにある、 なんたらかんたらなんたらかんたらなんたらかんたらなんたらかんたら...続きを読む、みたいな感じにしたいのです。
>>859 本読んだらすぐわかる気がするが。読む気ないのか?
>>856 $string = substr($string,0, -1);
>>848 $string = "abc.def.ghi";
863 :
nobodyさん :2005/08/05(金) 08:37:06 ID:xefaOJlU
apache2.0.54とphp5.0.4を連携させようと思うのですが internal server errorがでしまいます。 OSはフェドラコア4でapacheとphpはyumでインストールしてきました。 このとき設定は特に変える必要はないそうなのですが、何か変更が必要ですか? すれ違いなら誘導お願いします。
パーミッションじゃねーの?
まずエラーログを見れ
866 :
863 :2005/08/05(金) 09:43:21 ID:tHV4jGl/
パーミッションは大丈夫です。 エラーは security alert This PHP CGI cannot be accessed directry まずこれがあります。 ほかにもあるんですが、いまコピペできる環境にないんで。
php.iniの設定ミスっぽいね。 ; cgi.force_redirect = 1 ↓ cgi.force_redirect = 0
868 :
863 :2005/08/05(金) 10:05:20 ID:tHV4jGl/
わーーーーーーーーーー
できたーーーーーーーー
俺
>>867 さんのことダイスキ。ありがとうございました。
PHPでDOSのバッチファイルを作成して実行しています。 結果を変数に取り込むにはどうすればよいのでしょうか? exec関数では結果が返ってきませんし、passthruやsystemでは 直接画面(ブラウザ)に表示されてしまいます。 $result = system($file_name); ↑みたいな感じで書いてみたのですが・・
>>869 画面に出ちゃうのは、ob_* を使えば 変数に取り込めるよ。
ob_start();
system('test.bat');
$str = ob_get_contents();
ob_end_clean();
echo "<p><font color="#ff0000">$str</font></p>";
まぁ、batファイル内でecho したものを $str=` ` や $str=exec() で変数に入れちゃえますけど。
>>870 なるほど。やってみます。
取りあえずバッチファイル内の各行末でパイプ使ってリダイレクトさせてみましたが、
余計なファイルを作らなくて良いならそれにこしたこと無いので。
873 :
nobodyさん :2005/08/05(金) 14:56:29 ID:vB1WCgKJ
インクルード使うと、ページの上下余白がなくなっちゃうのは仕様ですか?
>>873 読み込み先のファイルでCSSとか定義されてんじゃね?
>>873 ブラウザが取得するのは単なるhtmlで、それがPHPを経由してるかどうかなんて気にしないよ。
違いがでる場合の(htmlの)ソースを見比べてみ。
876 :
nobodyさん :2005/08/05(金) 16:41:48 ID:jDJVMZFR
DB検索について教えて下さい。PHP+MySQLです。 postメソッドで検索語句を変数$keyに渡しすのですが、語句が1語であれば select * from TABLE like '"% . $key. "%'"; で出来るのですが、複数のキーワード(and検索)の場合はどうすればいいんでしょうか。
';DELETE from TABLE WHERE 1 OR ' で検索してみようかな
879 :
nobodyさん :2005/08/05(金) 17:14:45 ID:DYX+HJMi
phpからphp_mssql.dllを利用してWindowsSQLServerのデータベースに 接続しています。ntext型のデータをphpからselectする際、データが 大きいと「Warning: mssql_query(): message: Unicode のみの照合順序の Unicode データまたはNTEXT データを、DB-Library (例 ISQL) または ODBC バージョン 3.7 以前を使用しているクライアントに送信できません。」 と表示され、selectが行えません。 色々と試した結果、255バイトまでであれば取得できるようです。 上記症状の解決方法をご教えて頂け無いでしょうか。 実行環境はWindowsServer2003StandardEditionSP1 MicrosoftSQLServer2000 php4.4.0 を使用しています。
>>877 南海ですか・・・。
一応、こういった処理までいきました。
全角スペース→半角スペースに変換
半角スペース→カンマに変換
検索語句をカンマ区切りで配列化させる
後はSQL文で複数のキーワードをどうやって入れるかなんですけど…。
like $key1 and $key2 and $key3 …
みたいな感じでできますか?
>>880 いや、はっきり言えばコードの抜粋の仕方も日本語もおかしいってことだ。
SQLの質問ならずばり板違い
where col like '%a%' and col like '%b%' and col like '%c%'
画像を表示させる文 $img_ref .= '<img src="'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'" width="'.$W.'" height="'.$H.'" align=left></a>'; を 画像だけじゃなくファイル全般のリンクとしたいのですが <img srcを <a href に width height を消去 <a href=xxxxx>と</a>の間に 文字を挿入でよいかと思われるのですが間違ってるでしょうか? $img_ref .= '<a href="'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'" align=left>"'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'"</a>'; ちなみにやろうとしていることは画像UP掲示板をファイル全般UP可能に変更しようとしてます。情報お待ちしてます
>>882 えらく見づらいけど、あってると思うよ。ただのリンクなんでalign=leftはいらないだろうけど。
動かないからカキコしたのかな。だったらどう動かないか書いた方がいいかも。
老婆心だけど直接 $_POST['key'] を埋め込むのはあまり良くないな。
理由が判らなければサニタイジングでググって味噌。
884 :
882 :2005/08/05(金) 23:51:58 ID:???
構造がえらく複雑な掲示板みたいで
通常表示はindex.htmlを表示
書き込みがあった場合にbbs.php さらにbbs2.phpを参照してるっぽいんです。
で、UPロード関連の処理が書いてあるのは bbs2.php
そして、実際に書き込みをして、正常ならば更新されたindex.htmlが表示されるようなんですが、手を加えていない bbs.phpにアクセス中にとまってしまうんです。
・・・・何言ってるかわかり辛いと思うんで
改造しようとしているやつ
ttp://script.s16.xrea.com/2ch/ 改造しようとしているのは、UP可能なファイルを画像だけでなく
その他の拡張子も受け付けるようにしたいのです。
サイタニシングという名の特殊記号による文字化け注意了解です
>>884 >サイタニシングという名の特殊記号による文字化け注意了解です
それ、正しく理解できてないから。
もっと酷いことが起こります。
日記スクリプト作ってる。 年・月ごとにフォルダを作って、一日分ずつログを作っていく形式にしようと思ってる。 ・・・のだけど、レン鯖のPHPがセーフモードOnみたいで、mkdirとchmodが動作しない。 回避策を教えてくれエロい人。
>>887 PathInfoつかって偽装するのじゃダメなの?
>>887 年月ごとだったら、別にスクリプトで生成しなくたって、
予めFTPとかで作っておけば?
3年分でもたかだか36個だしょ?
>36個
891 :
887 :2005/08/06(土) 01:18:47 ID:???
>>888 PathInfoってのが初耳。
ちょっとマニュアル見てくるっす。
>>889 ん、それでもいいかも。
もうちょっと格闘してみようかな。
ありがとうエロい人達。
892 :
nobodyさん :2005/08/06(土) 04:41:55 ID:zdmG/ySS
phpで記述されたページから、もうひとつの違うphpで記述されたページにジャンプするときに データを渡すことは可能なのでしょうか?
893 :
892 :2005/08/06(土) 04:48:42 ID:???
すいません。書き忘れです。 自動にジャンプするときです。たとえばログインボタンなどを押して、自動的にジャンプするときに さらにデータを送るということです。
GETでもPOSTでもSESSIONでも好きにしてくれ。
すいません。書き方が悪かったかもしれませんね。 phpファイルが二つあるある場合にそれどれのファイルから違うファイルにデータを渡すということです。 自動ジャンプは header(Location: *******); しか知らない上に使い勝手が悪いので困っています。
すみません、何が問題なのかうまく説明できないのですが、 下記のプログラムで、一つ階層の下のXXXというフォルダの 下の(中の?)フォルダのリスト名を取得したいのですが、どうすればできますか? <?php if ($handle = opendir('./')) { while (false !== ($file = readdir($handle))) { if (is_dir($file)) { if ($file != "." && $file != "..") { echo "$file\n"; } } } closedir($handle); } ?>
>>897 if ($handle = opendir('XXX')) {
>>897 opendirとis_dirの引数の両方変更しないとあかんやろ。
<?php
if ($handle = opendir('XXX/')) {
while (false !== ($file = readdir($handle))) {
if (is_dir('XXX/' . $file)) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
}
closedir($handle);
}
?>
>>893 つ
<html><head></head>
<body>
//input系のbox
<form method='post' action='データを渡す先の.php'>
<input type='submit' value='ログインボタン'>
</form>
</html>
・ボタンを押した時に ・自動的に どっちやねん(´_ゝ`)
入力フォーム -> 入力処理(画面表示なし、リダイレクト) -> どっかのページ じゃないの?
まぁなんにせよ、
>>894 だが。
PHP4とGDで画像出力をいろいろ試しているのですが、 あるスクリプトの一部で作成した画像をそのスクリプト内で表示することはできないのでしょうか? 調べてみたところ、この用法としては ・ヘッダーに画像情報を入れて*.phpを画像としてIMGタグで指定する ・画像ファイルを作成する の二つのようですが、ファイルを作成することなく一時的な画像を同スクリプト内で表示することはできないものでしょうか?
>>903 1つのリクエストに対して、複数の内容のレスポンス(html + 画像)を返すというのは、
仕様としては存在してるんだけどブラウザ側で対応しているものがほとんど無い。
>>903 引数で表示画像内容を指定できるスクリプト(.php)と、
その.phpを<img>で呼び出すHTMLを吐き出す.php
の二つの.phpを作成汁
>>903 たぶんこんな感じのことをやろうとしてるのだろうか?
--- gd_and_img_tag.php ---
<?php
// リクエストパラメータに応じてGDでごにょごにょ
imagePngとかimageJpegあたりで出力みたいなこと
?>
<img src="自分の出力">
-----------------------
いやでもね、単純に
--- img_tag.php ---
<img src="gd.php?リクエストパラメータ">
-----------------
--- gd.php ---
header('Content-type: image/png');
// リクエストパラメータに応じてGDでごにょごにょ
imagePngとかimageJpegあたりで出力みたいなこと
-------------
でいいんで内科?
パラメータがデカイならセッションなりなんなりで。
907 :
906 :2005/08/06(土) 12:02:52 ID:???
908 :
903 :2005/08/06(土) 12:04:58 ID:???
むぅ。そうなんですか。
>>904 ためしに一時的にファイルを作成してIMGタグで指定したあとでunlink()で削除したら
ブラウザには壊れた画像アイコンが出てきました。
直後に消すのもまずい様子。
・・・ってことはファイルに保存してもIMGタグで読み込むまでのタイミングで他の人が上書きしても
それは反映されてしまうかもしれないってことかな?
(実際に画像を読み込むタイミングはIMGで指定したよりずいぶん後になるのか?)
この辺はどういう仕様になってるんだろ??
>>903-905 検証もしていないし、IE限定っぽいんだけど、
phpでmhtファイルを送出したらどうなんでしょうね?
画像はbase64でエンコードして埋め込むことになる。
今度暇になたら検証してみよう。
910 :
903 :2005/08/06(土) 12:14:35 ID:???
スレ違いすまそ。
>>905-907 言われてみれば最初から別ファイルにすればよかったorz。
いや、あまり細々とファイルをいっぱい作るのが嫌なので
同カテゴリのページはすべてフラグを設定して一つの.phpの中でやってたんですが、
よく考えたら画像生成用関数を外部につくるくらいなら画像生成用.phpを作っても大して変わらない・・・。
みなさんレスどうもです。
これまたよく考えたら
>>908 は当たり前すぎてorz。
クライアントに届く前に削除してるんだから見えるわけがないよな・・・。
×スレ違い ○すれ違い
初歩的ですみません、 $ary01 = array("鈴木","20"); $ary02 = array("田中","18"); $ary03 = array("渡辺","19"); $ary04 = array("田中","21"); . . . $aryN = array("佐藤","21"); 重複している『田中』を削除して $ary01 = array("鈴木","20"); $ary02 = array("田中","18"); $ary03 = array("渡辺","19"); . . . $aryN = array("佐藤","23"); にしたいんだが、どうすればできますか?
まずは2次元配列覚えてくれ
>>912 913のいうように二次元配列を使ったほうがいい。
$ary = array();
$ary[1] = array('名前', '年齢');
$ary[2] = array('名前', '年齢');
・
$ary[N] = array('名前', '年齢');
for($i=1;$i<=count($ary);$i++) if($ary[$i][0]=='田中') unset($ary[$i]);
そのデータのままやるんなら、
$aryNがいくつまであるのかっていうデータが必要。
それをforで同じように回してunsetする。
誕生日になったから
917 :
914 :2005/08/06(土) 14:29:55 ID:???
>>912 あ、良く読んでなかった。
「田中」を全て削除するもんだと思って
>>914 書いてしまった、すまん。
それこそ、二次元配列でデータを入れる段階で、
$ary['田中']='18';とかにしていけばいいんじゃないか?
ちなみに、あなたの質問の仕方にもちょっと足りないところが。
「重複している『田中』を削除して」って、どういう削除だ?
最初に出てきた『田中』が残るのか、後に出てきたのが残るのか。
上記のように二次元配列を使うと、後に出てきたのが残るんだが…
>>915 ワロスwwwwwww
重複してるからって削除される田中[2]の意味がわからん。 削除されるのは常に後から来た方なのか?
919 :
912 :2005/08/06(土) 14:43:07 ID:???
>>915 誤記
>>913-918 詳しくありがとう。
説明不足で申し訳ない、
削除するのは前でも後ろでも構わない、片方どちらか残せば、
重複しているの『田中』だけじゃなく、仮に『高橋』『伊藤』『小林』....
がでてきた場合も削除したいんだ、できますか?
>>916 も加味して忠実に書きました。
for ($i = 1; ; $i ++)
{
$aryname = sprintf("ary%02d", $i);
if (! isset($$aryname)) break;
$ary = $$aryname;
if (! isset($tmp[$ary[0]])) $tmp[$ary[0]] = array($i, $ary[1]);
unset($$aryname);
}
foreach ($tmp as $n => $v)
{
$aryname = sprintf("ary%02d", $v[0]);
$$aryname = array($n, isbirthday($n) ? (string)($v[1] + 2) : $v[1]);
}
まわりくど・・・・
なんか夏休みの課題みたいな質問が多いよな
$fp = fopen("hoge.txt") or die("hoge"); みたいに $fp = fopen("hoge.txt") or return; とやりたいけど当然うまくいかない ここをかっこよく書く方法を
>>922 かっこよいかどうか判らんが
if (!$fp = fopen('hoge.txt', 'r')) return;
ぢゃあかんのか?