【PHP】下らねぇ質問はここに書き込みやがれ 61
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/12/19(水) 03:33:51ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 60
http://pc11.2ch.net/test/read.cgi/php/1196511516/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0244nobodyさん
2007/12/24(月) 15:48:25ID:tHEPo1ls<input type="text" name="text">
<input type="submit" value="test1" name="test1">
<input type="submit" value="test2" name="test2">
</form>
こんな感じでformの中にinput-submitのボタンが複数あって、
押したボタンによってPHP側で"text"の処理分けしたいんですが、
valueの値で判定するしかないんでしょうか。
valueだとボタンの名前として表示されるため他の方法を探しています。
0246nobodyさん
2007/12/24(月) 16:27:38ID:???0247244
2007/12/24(月) 17:11:12ID:tHEPo1lsvalueの値だけは違いがありますね。
input-submitじゃなくて
button-submitを使いボタン名をvalueとは別に設定することで解決しました。
レスありがとうございました。
0248nobodyさん
2007/12/24(月) 17:19:57ID:???本当にありg(ry
0249244
2007/12/24(月) 17:29:41ID:tHEPo1ls本当にありがとうございました…。
0250244
2007/12/24(月) 17:54:23ID:tHEPo1ls<button type="submit" value="test" name="test1">内容</button>
だとvalueに設定されているtestは送信されなくて、内容が送信されるようですね。
手元のHTML本ではvalueが送信値となってますが、仕様変更でもあったのか。
>>248さんのご指摘とは違い他フォームの内容もちゃんと送信される模様です。
0251nobodyさん
2007/12/24(月) 18:18:44ID:???嘘だろうと思って動作確認したらIE7では確かにそう動いた。
ちなみにFireFox2 Opera9 ではvalue値が送信されてる。(IE7と動作が異なる)
PHPの話題じゃないけど、RFC的にはどうなんだろ。
<html>
<head><title>test</title>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
</head>
<body>
<?php print_r($_GET); ?>
<hr/>
<form action="test.php" method="get">
<button type="submit" value="test" name="test1">内容</button>
</form></body></html>
0252245,248
2007/12/24(月) 19:02:38ID:???以下のコードで、
・name1 name2 のいずれかをクリックした時に、3,4は送信されるべきでは無い
・name3 name4 のいずれかをクリックした時に、value3またはvalue4が送信されるべき
DOMの扱い時にも同様の支障がでてくる。
なので、buttonを使うより、input type=button を使う方が良い。(buttonに比べて表示の自由度は落ちる)
検証用コード
<html><body><form>
<input type="submit" name="name1" value="value1"></input>
<input type="submit" name="name2" value="value2"></input>
<button type="submit" name="name3" value="value3">3</button>
<button type="submit" name="name4" value="value4">4</button>
</form><p>
<?php
var_export($_GET);
?>
</p></body></html>
0253nobodyさん
2007/12/24(月) 22:47:49ID:???IE7でも相変わらず腐ってるんだな・・
0254nobodyさん
2007/12/25(火) 08:19:17ID:???取得したいのですが、基本的に不可能でしょうか?
ZendFrameworkのZend_Mail使ってみたんですが、
オブジェクト指向を完全に理解していないオイラには
かなりつらい部分があったので、imap関数に移ろうとしてるのでつが。
0255255
2007/12/25(火) 09:05:15ID:Coxwnlyhその中のメールフォームサンプルを自分のサイトの隅っこに置いて、apacheを起動させて動作確認してみたところ、
フォームに文字入れて確認画面に進み、送信を押すと 本当は「送信成功しました。or失敗しました。」と表示されるはずが、何も
表示されず、メールも送られていません。php.iniはデフォのままなんで、そこがダメなんじゃないかと思うのですが、
どうなんでしょう。書籍には何も書いてないです。
0256nobodyさん
2007/12/25(火) 10:39:57ID:???そういう本(書いてない本)多いけど
0257nobodyさん
2007/12/25(火) 11:11:07ID:???何時もphp.iniに書く時に迷う・・・
0258nobodyさん
2007/12/25(火) 11:15:16ID:M0LvCdnx送信しましたor失敗しました あたりのソースうp
質問ですが、SQLインジェクション対策ってどうしてます?
自分はMySQLを使っていたので、mysql_real_escape_strngを使っていたのですが、
他のデータベースでも書き換えなくていいように、全てのデータベースで活用できるような
インジェクション対策などありませんでしょうか?
0260nobodyさん
2007/12/25(火) 12:06:36ID:???0261nobodyさん
2007/12/25(火) 13:18:29ID:???parse_ini_file("test.ini",true);
で読み込むとshift_jisで読み込まれちゃうんですが、ファイル読み込みのエンコーディングをUTF-8にしたいんです。
iniや表示するphpファイルは全てUTF-8になっています。
php.iniでファイル読み込みのエンコードとかでしょうか?
iniの中身は
------------------
[友達]
"佐藤" = "コスプレ"
"伊藤" = "女装"
------------------
0263nobodyさん
2007/12/25(火) 13:31:06ID:Kk9QHm5Itest.iniってファイルを
parse_ini_file("test.ini",true);
で読み込むとshift_jisで読み込まれちゃうんですが、ファイル読み込みのエンコーディングをUTF-8にしたいんです。
iniや表示するphpファイルは全てUTF-8になっています。
php.iniでファイル読み込みのエンコードとかでしょうか?
iniの中身は
------------------
[友達]
"佐藤" = "コスプレ"
"伊藤" = "女装"
------------------
PHP Version 5.2.4
0265nobodyさん
2007/12/25(火) 14:41:28ID:Kk9QHm5Iそうなんですか、それでも文字コードの問題は残るので解決方法があればお願いします。
ひとまずキーにダブルクォートで動いてはいます。
0266nobodyさん
2007/12/25(火) 14:45:46ID:???一応ご報告を
0267nobodyさん
2007/12/25(火) 14:47:22ID:V7kmAO2b$bbb[0]['abc']="表示テスト";
$a=<<<EOS
<table>
<tr>
<td>$bbb[0]['abc']</td>
</tr>
</table>
EOS;
print $a;
EOS内で連想配列の変数を簡単に吐き出す方法はありますか?
そのままだと Array['abc'] となってしまいます・・。
変数に入れ直せば良いのですが種類が多いと大変で・・
皆さんはどうやってますでしょうか。
0268nobodyさん
2007/12/25(火) 14:51:23ID:ek1/aJk1WEBサーバーでSSLを設定してそこにPHPファイルを配置したところ、httpでのアクセスだとPHPは正常
に動くんですが、httpsだと何故か404になってしまいます。
他の形式(aspx、txtや画像)はhttpでもhttpsでも問題無く動くのでアクセスしているフォルダが違うとかは
考えられず、httpだとPHPは動くのでPHP自体がおかしいってことも考えられず…。
通常のSSLの設定は終えていますが、PHPをSSLに配置する際は他に何か設定等必要なんでしょうか?
環境ですが、
Windows2000ServerSP4 + IIS5.0 + PHP5.2.5 (+ VisualStudio2003)
です。
よろしくです。
0270nobodyさん
2007/12/25(火) 14:57:18ID:V7kmAO2b即答ありがとうございます!それだけで良かったんですね
基本的な方法が分からずにいろんな遠回り処理した上で
えーーそんな簡単にできたの・・みたいな事がよくあります
有難うございました。
0274nobodyさん
2007/12/25(火) 16:32:12ID:???フリーので。
0276nobodyさん
2007/12/25(火) 16:41:01ID:Kk9QHm5Iすいません ><
ID出し忘れたので偽者と思われないようにも返信しときます・・
0278nobodyさん
2007/12/25(火) 17:37:59ID:???EmEditor→phpエディタ→phpeclipse→zend
と使ってきたけど俺はphpeclipseが一番使いやすかった
0279nobodyさん
2007/12/25(火) 19:39:53ID:YdyXWQpGhttp://headlines.yahoo.co.jp/hl?a=20071225-00000912-san-soci
<futoji>元福岡地検検事正で公証人の絹川信博さんの話</futoji> 「鑑定結果が今後、民事訴訟の証拠として採用される可能性は十分ある。
民事分野でも、ポリグラフの活用範囲が広がる可能性がある」
0280nobodyさん
2007/12/25(火) 20:31:12ID:qdKsQYMAarray("aaa" => "bbb", "ccc" => "ddd" "???" => "fff")
この配列から「三個目の要素」であること、又は「値がfff」であることから、
不明なキー名である???のみを抜き出したいのですがどのような方法があるでしょうか。
よろしくお願いします。
0281nobodyさん
2007/12/25(火) 20:43:37ID:???http://www.php.net/manual/ja/function.array-search.php
0282nobodyさん
2007/12/25(火) 21:14:34ID:qdKsQYMA普通に定義されてるんですね。回答ありです。
0285nobodyさん
2007/12/26(水) 00:57:00ID:???×imagejpeg ($image_new , $uploadfile , $quality);
○imagejpeg ($image_new , $image_temp , $quality);
にして、
/usr/bin/convert オプション $image_temp $uploadfile;
にすると、
PHP Parse error: syntax error, unexpected '/'
in /home/webmaster/blog/nucleus/plugins/NP_ImageLimitSize.php on line 65,
referer: http://******/nucleus/plugins/mediatocu/media.php
と、出ました、フルパスで書けば問題無いと思ったのですが、どのようにコマンドを挿入すればいいでしょうか?
function event_PreMediaUpload(&$data) {
$collection = $data['collection'];
$uploadfile = $data['uploadfile'];
$filename = $data['filename'];
// evaluate the filetype from the filename
$filetype = strtolower(substr($filename, strpos($filename, ".")+1));
0286285
2007/12/26(水) 00:57:53ID:???if ($filetype=='jpg' || $filetype=='jpeg') {
$size=getimagesize($data['uploadfile']);
// size[0] is the image width
if ($size[0]>$this->getOption('maxwidth')) {
$newheight = $this->getOption('maxwidth') * $size[1]/$size[0];
$image_orig = imagecreatefromjpeg($uploadfile);
$image_new = imagecreatetruecolor($this->getOption('maxwidth'), $newheight);
$quality = $this->getOption('quality');
imagecopyresampled($image_new, $image_orig, 0, 0, 0, 0, $this->getOption('maxwidth'), $newheight, $size[0], $size[1]);
imagejpeg ($image_new , $uploadfile , $quality);
※※※
// clear the memory
imagedestroy($image_orig);
imagedestroy($image_new);
}
}
0289285
2007/12/26(水) 01:10:06ID:???○:これしか思いつきません
0290nobodyさん
2007/12/26(水) 01:39:36ID:???Linux界隈、ディストリ間の差異大杉でFreeBSD派にはついていけねえな
0291nobodyさん
2007/12/26(水) 03:42:29ID:???0292nobodyさん
2007/12/26(水) 04:19:38ID:???0293nobodyさん
2007/12/26(水) 04:56:01ID:???> PHP Parse error: syntax error, unexpected '/'
PHPの文法レベルでエラーが出てるんだからフルパスとかコマンドの違いとか全然関係ねーよ。
> /usr/bin/convert オプション $image_temp $uploadfile;
> にすると、
ってこれ、PHPのソース中にシェルコマンドを生で書いてるのか?
PHPはシェルスクリプトじゃねーぞ?
system()とか使えよ。
0294nobodyさん
2007/12/26(水) 10:54:23ID:WFCxb7oZどのような実装方式が一番楽な方法でしょうか?
例
ローカルphpが、サーバー側phpを呼び出す
サーバー側phpが処理を実行し、実行結果を返す
ローカルphpがサーバー側のphpの実行結果を受け取り、その実行結果により処理を条件分岐する
このような感じで、サーバー側の実行結果によってローカルの実行結果が異なります。
ソケット通信での実装を考えたのですが、少々面倒なので、もっと簡易にできる方法があれば助かります。
宜しくお願いします。
0295nobodyさん
2007/12/26(水) 11:57:31ID:???レスポンス速度重視でないならば、http で通信すればいいんじゃないの。サーバは apache経由にして。
0296nobodyさん
2007/12/26(水) 11:58:07ID:???0297nobodyさん
2007/12/26(水) 12:17:11ID:???PHPネタじゃないけど、soapってどうなの?
以前 Javaでやったときは、なんか中途半端に隠蔽されて自由度が低いだけって印象なんだけど。
0298nobodyさん
2007/12/26(水) 13:15:38ID:???auto_prepend_fileを使いたいのですが、
一部のディレクトリんは適用させたくないのですが、
その場合どのように記述すれば良いのでしょうか?
0299298
2007/12/26(水) 13:16:09ID:0y2BVKsSお願いします
0300nobodyさん
2007/12/26(水) 13:30:41ID:???0301nobodyさん
2007/12/26(水) 13:33:05ID:0y2BVKsSありがとうございます
すみません、書き忘れていました
レンタル鯖の仕様によりhtaccessでのphp_value・flagが仕様できないのですorz
0302nobodyさん
2007/12/26(水) 15:08:20ID:???0303nobodyさん
2007/12/26(水) 15:14:38ID:???と続くからなw
0304nobodyさん
2007/12/26(水) 15:54:46ID:???0305nobodyさん
2007/12/26(水) 16:07:23ID:5CJgBllV(ログインフォームの次の会員トップページの処理です)
0)session_start(); (タイムアウト設定も同時にする)
1)$_SESSION['LogIn']=0;//ログイン状態のフラグの用意
2)1)をチェック →0なら3)
3)POSTされたid,passwordをもとにログイン処理 →LogIn=1にする
4)以降のページでは0〜3を(外部ファイル化して)最初にチェック
※3)のPOSTデータがなければ警告画面に遷移
PEAR:AUTHも考えたんですが、ログインフォームと認証後トップページを
同じにしなきゃだめっぽいんでやめました
環境はPHP5,APACHE2です
0308305
2007/12/26(水) 16:32:50ID:5CJgBllVLogInは初期化しません 最初にチェックするだけです
あと、今思ったんだけど、最初のログイン時にランダム値を持たせといて(DBにも登録)
それもリクエストごとにチェックするとかの方がいいのかな?
それがセッション名(?)てことだからわざわざやらなくていいんでしょうか?
0309nobodyさん
2007/12/26(水) 16:53:52ID:???誰がログインしているのかという、「ログインユーザのID」を管理した方が良いと思う。
ログイン後は、それが誰だかわからなくても良いなら、別に良いけど。
0310305
2007/12/26(水) 17:23:39ID:5CJgBllVログイン開始と終了を記入するテーブルみたいなのを作るわけですか?
考えたこともなかったです。
ログイン状態のチェックだけなら305の内容でokなんでしょうか 度々すみません
0311nobodyさん
2007/12/26(水) 17:33:52ID:???「ログイン状態のチェック」が「だれかがログインしているが判定できる」なら、305の内容でOK。
普通は、このセッションでログインしているのが誰かも判らないと困るんじゃないかと。
0312305
2007/12/26(水) 17:53:13ID:5CJgBllVしかしセッションの知識が不足でよく理解できません
idに依存したセッション名を発行するのかな、、 ちょっと勉強してきます
ありがとうございました
0313nobodyさん
2007/12/26(水) 18:50:16ID:7SSM1+qDキーボードからそのまま受け取ったデータaを
cに変更して<textarea>に出力する ことはできますでしょうか?
いろいろ調べて下記のようなものを書いてみましたが、できません。
<form>
<textarea>
<?php
set_time_limit(0);
($stdin = fopen("php://stdin", "r"));
$s = trim(fgets($stdin, 256));
if($s == "a"){
$s = "c";
}
print $s;
?>
</textarea>
</form>
ハッスルサーバを使っていて、phpはバージョン4.3です。
初心者の質問で申し訳ありませんが、どうかよろしくお願いします。
0314はっしゅ(前すれ703)
2007/12/26(水) 19:02:23ID:drjhjm0k回答ありがとうごいました。
レベル低すぎて誰も答えてくれないのであきらめてたんですが、今日見たら回答きてたのでお礼に伺いました。
またわからないことあったら教えてください。
遅ればせながらありがとうございました。
0315nobodyさん
2007/12/26(水) 20:44:56ID:???JavaScript使うかAjax使わないと無理
phpはサーバーサイドスクリプトです
0316315
2007/12/26(水) 20:45:19ID:???0317nobodyさん
2007/12/26(水) 20:45:33ID:???意味がわからない キーボードから受け取ったデータってなんだ?
サーバの送受信はするの? しないんだったらphpじゃなくてjavascriptでしょ
具体的にどういう操作と結果がほしいのかわからなきゃ回答不可だよ
0318nobodyさん
2007/12/26(水) 22:33:52ID:???ノシ
0319nobodyさん
2007/12/26(水) 22:40:10ID:???$black =& $white;
unset($white);
print $black; //snow
これで snowが出力されるんだけど、$blackは$whiteの参照になってるから
unset($white)で$blackの値も破棄されるんじゃないの?
なぜsnowがprintされるのかわかりません。
0320nobodyさん
2007/12/26(水) 22:46:40ID:???http://jp2.php.net/manual/ja/function.unset.php
>参照渡しされた変数が関数内で unset() された場合に、 ローカル変数のみが破棄されます。
>呼出側の環境でその変数は、 unset() がコールされる前と同じ値を保持します。
って書いてあるから良いんじゃないの。
0322319
2007/12/26(水) 22:54:50ID:???参照渡しの場合はローカル変数しかunsetされないでいいんかな
0323nobodyさん
2007/12/26(水) 23:00:42ID:???「>」を入れると
勝手に「>」にエスケープされるんですが、
ホワイ?
特に htmlspecialcharsとかかけてないんですが。。。
0324nobodyさん
2007/12/26(水) 23:11:12ID:???勝手にエスケープされるんでつね。。。
mb_send_mail( $this->af->get('to'), $this->af->get('subject'), $this->af->get('body') );
みたいな送信の仕方できないですが、
一回エスケープしたのを戻すとかの作業するのが一般的なんでしょうか
0325324
2007/12/26(水) 23:20:58ID:???ethna関係ないっぽいです、普通にやってむりぽでした。
0326nobodyさん
2007/12/26(水) 23:53:50ID:5CJgBllVHeader関数(location)がエラー起こします。ほかに方法はないんでしょうか?
echoでjavascript出力もできますがそれはあんまりなので、、 よろしくお願いします
0327nobodyさん
2007/12/27(木) 00:13:03ID:kzcBaheO飛ばしたいページのファイルをincludeすればいいんじゃね?
0329nobodyさん
2007/12/27(木) 00:39:58ID:???単に、header関数の前に何か出力されちゃってるんでない?
それか場所の指定に変数を使ったりしてるならそこがおかしいか。
0330nobodyさん
2007/12/27(木) 00:54:22ID:???キャッシュが効いて動作がおかしくなったりもするがな<header()
0331326
2007/12/27(木) 00:57:52ID:k02W1D9gありがとうございます
前に一度相談してて、自力解決めざしたんですができなかったんです
詳細は>>111です 今apacheのエラーログ見たところ、
PHP Parse error: syntax error, unexpected T_EXIT in
C:\\Program Files\\Apache Group\\Apache2\\htdocs\\system\\admin\\hoge\\index.php on line 14,
referer: http://localhost/system/ …らしいです
14行目は>>111のexit;なので、コメントアウトしたら(//exit;)今度は
unexpected '}'〜〜 と出ました。ただのif文なのに意味がわかりません
ググっても出てこないし、気が向いた方教えてください お願いします
0332nobodyさん
2007/12/27(木) 01:10:18ID:???エラーの行なんて参考でしかないから
/* */で囲みながら範囲をせばめてエラーで出てる箇所特定しろよ
どうせ、おっぱいかっこ{}の数があってないとか、そういうのだろ
0334255
2007/12/27(木) 03:55:57ID:tJxOOzWu<?php
// メール送信先を指定します。
$to = "実際は指定しました。";
// フォームの値を取得します。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach($_POST as $k => $v){
// 「magic_quotes_gpc = On」のときはエスケープ解除
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}
}
else {
exit();
}
// メール本文を組み立てます。
$naiyou = "お名前:$name\n
メールアドレス:$from\n
タイトル:$title\n
内容:$naiyou\n"
0335255
2007/12/27(木) 03:56:48ID:tJxOOzWuand $naiyou != "" ) {
if (mb_send_mail($to, $title, $naiyou, "From:$from")) {
echo "メールを送信しました";
}
else {
echo "メール送信失敗です";
}
}
?>
0336sage
2007/12/27(木) 05:13:26ID:aXynhXDHちなみにEUC-JPです。
ファイルを確認した所、保存時では「+%CC%A3%C1%B9+」とurlencodeされているのですが
webで表示(print $_COOKIE[hoge];)するときだけバグります。
64encodeしてから食わし、64decodeして吐かすとも考えたのですが、
ファイル全部の保存と表示部分を直すことは大量すぎて辛いっす。
何かいい解決策は有りませんでしょうか。
0337336
2007/12/27(木) 05:28:15ID:???追加ですが「あへあへ噌」や「味噌漬け」はバグりません。
0338326
2007/12/27(木) 05:57:19ID:k02W1D9gありがとうございます
構文エラーということで、{の閉じ忘れなどチェックしてもなかったので、
ソースをガンガン削っていったら
1)これは動作する
<?php
header("Location: http://www.yahoo.co.jp/");
?>
2)これは動作しない
<?php
header("Location: http://www.yahoo.co.jp/");
exit;
?>
という状況になりました。ホントに上のソース以外一切何も書いてません
誰か同じ症状になった方いないですか? 参った、、
PHP5.2.3 winXP apache2です
0339nobodyさん
2007/12/27(木) 09:19:36ID:jblLPn+aドメインを正規表現を使って省こうとしているのですが、
このようなドメインが有効なのですが、
ドメインの2番目で3文字以上ないといけないのではないでしょうか?
ドメイン名の規約とかないでしょうか?
http://www.ms.com/
(モルガンスタンレー証券)
0341nobodyさん
2007/12/27(木) 09:26:19ID:???例えば
header("Location: ./");
@file_put_contents("nnnnnnn.txt", "test" ,FILE_APPEND);//ファイル作成
とすると、表示はジャンプで終わるが読み込み処理は終わらずにファイルも作られる。
header("Location: http://www.yahoo.co.jp/");exit;
@file_put_contents("nnnnnnn.txt", "test" ,FILE_APPEND);
だとexitで終了され、ファイルは作られない。
exit終了しない場合の後述によるエラー文表記は動作が不安定なので一概に言えない。
if(!$a){header("Location: http://www.yahoo.co.jp/");exit;}
などとしてでも、Locationにexitはセットと考えた方がいい。
でもexitつけたら動作しないというのは初耳。
0342nobodyさん
2007/12/27(木) 09:27:56ID:NgfmXqR6>>317
>>333
313で質問したものです、
ご回答ありがとうございました。
javascriptを勉強してみたいとおもいます。
■ このスレッドは過去ログ倉庫に格納されています