トップページ⇒php
1001コメント305KB

【PHP】下らねぇ質問はここに書き込みやがれ 37

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/01/24(水) 22:10:29ID:???
PHPに関する質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 36
http://pc10.2ch.net/test/read.cgi/php/1168395610/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
 しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0153nobodyさん2007/01/26(金) 16:17:20ID:cz0hND8g
調べてみたのですが見つからなかったので質問させてください。

「PHPでは変数宣言が必要ない」ということがよく書いてありますが、
逆に変数宣言を必須にするようなモードなどはありますでしょうか。
0154nobodyさん2007/01/26(金) 16:18:30ID:???
>>153
ALL ERROR
に設定すればok
0155nobodyさん2007/01/26(金) 16:37:05ID:???
>>152
PHP終了とともに開放されるけどGDは結構メモリ食うから使い終わったらさっさと開放しようとは思わんかね。
0156nobodyさん2007/01/26(金) 17:03:54ID:???
天然富豪か
01571532007/01/26(金) 17:12:23ID:cz0hND8g
>>154
レスありがとうございます。
しかし具体的にどこにどのように書けばいいのかわからず、
「ALL ERROR」のキーワードを手がかりに
マニュアル見たりぐぐったりして見ましたがわかりませんでした。

具体的にどこにどのように書けばいいのか、
または解説しているサイトなどありましたらお教えくださいますと幸いです。
0158nobodyさん2007/01/26(金) 17:19:15ID:???
ねぇだろw
0159nobodyさん2007/01/26(金) 17:40:04ID:???
$a = "aa";
if ($a != "aa") {
$a = "xaa";
} elseif ($a != "bb") {
$a = "xbb";
} elseif ($a != "cc") {
$a = "xcc";
} else {
$a = "xxx";
}

if($a == "xaa"){
print "aaじゃない";
}
if($a == "xbb"){
print "bbじゃない";
}
if($a == "xcc"){
print "ccじゃない";
}

このように記述した場合、「bbじゃない」としか表示されないのですが、
「ccじゃない」も表示させたいです。どうしたら良いのでしょうか?
0160nobodyさん2007/01/26(金) 17:40:59ID:???
>>157
error reporting
E_ALL
0161nobodyさん2007/01/26(金) 17:44:46ID:3bBneFQb
>>159
if($a == "xbb"){
print "bbじゃない";
print "ccじゃない";
}

0162nobodyさん2007/01/26(金) 17:57:26ID:???
>>159
「じゃない」にしたいなら != をつかわないか普通
01631592007/01/26(金) 18:09:17ID:???
>>161,162
レスありがとうございます。
できれば $a = "xbb"; と } elseif ($a != "cc") { の間で
$aを"aa"に戻し、「bbじゃない」と「ccじゃない」を表示させたいんです。
これって可能でしょうか?
0164nobodyさん2007/01/26(金) 18:12:34ID:???
>>163
$a = "aa";

if($a != "aa") print "aaじゃない";
if($a != "bb") print "bbじゃない";
if($a != "cc") print "ccじゃない";
0165nobodyさん2007/01/26(金) 20:02:07ID:Ratl1Nqj
POSTとGETの受け取りについてですが、最も効率の良い受け取り方はどのような処理でしょうか?
みなさんのご意見をお聞かせ下さい。
0166nobodyさん2007/01/26(金) 20:12:50ID:???
(゚д゚)
0167nobodyさん2007/01/26(金) 20:16:24ID:???
PHPをアンインストール
0168nobodyさん2007/01/26(金) 20:24:46ID:???
$_POST['hoge'] と $_GET['hoge']
0169nobodyさん2007/01/26(金) 20:52:30ID:???
$_REQUEST['hoge']
0170nobodyさん 2007/01/26(金) 21:12:48ID:???
ヤフーで「PHP」で検索すると出てくる
完全無料のPHPスクール行った奴いる?
0171軟式PHP2007/01/26(金) 21:40:00ID:???
>>170
見てみた。
>短期間で即戦力となれるようなスキルを実につけることが出来ます。
(´・∀・`)ヘー

>Webの申込フォームやメール送信、管理画面(DB連携、検索、リスト抽出、編集、削除)を作成可能なレベルを目指します。
( ゚д゚)

(つд⊂)ゴシゴシ

(;゚д゚)

(つд⊂)ゴシゴシ
  _, ._
(;゚ Д゚)
01721652007/01/26(金) 22:27:06ID:Ratl1Nqj
例えば、

<form method="POST" action="./○○○.php?mode=kakusei">
<fieldset>
<legend></legend>
<dl>
<dt>覚醒レベル</dt>
<dd><input type="text" name="level" /></dd>
</dl>
<p>
<input type="submit" />
<input type="reset" />
</p>
</fieldset>
</form>

このように、POSTもGETもスクリプトに送りたいのですが、両方を受け取ることは可能でしょうか?
また、どの様な処理で受け取ることができるでしょうか?
0173nobodyさん2007/01/26(金) 22:33:58ID:fmcX9VXG
php4.4.4です。

あるPHPファイルで
ereg("^[  ]+$" , $name) ←半角スペースと全角スペース
で、入力された値が空白かチェックしております。
ここではきちんと動作しているのですが、
最初のファイルはpublic_html/bbs/test.php にあります。
public_html/test.php で全く同じものを実行すると全角スペースがチェックにひっかかりません。

これはなんでなのでしょう?
eregのオーバーロードはされているみたいです
0174nobodyさん2007/01/26(金) 23:03:26ID:???
>>172
可能だよ
この例だと $_GET['mode'], $_POST['level'] で受け取れる
0175nobodyさん2007/01/26(金) 23:09:13ID:???
>>173
どっかが違ってるとしか思えん
コードは同じでも $name に渡しているのが違うとか
それから空白文字のチェックなら ctype_space 使った方が楽だよ
0176nobodyさん2007/01/26(金) 23:13:24ID:???
>>174
両方とも$_REQUESTで取ればいいんじゃない?
01771652007/01/26(金) 23:33:49ID:???
みなさん、ご回答ありがとうございます。
私は1つの配列にGETもPOSTも入れられないか、と悩んでいました。
解決策として、($_GET + $_POST)を返す関数を作成しました。

あと、$_REQUESTはできるだけ使用するな、と言われましたがどうなんでしょう。。。

さらに質問ですが、みなさんはZendやPearコーティング規約に則していますか?
宜しければお答えくださいm(_ _)m
0178nobodyさん2007/01/26(金) 23:34:30ID:sVVIcX6W
2次元配列の変数をカウントした時って、何がカウントされるんでしょうか。
想像どおり2次元目の配列は無視してカウントされますか?
今、PHP触れない環境で紙とペンでプログラム作ってます。
誰か教えてください(>_<)
0179nobodyさん2007/01/26(金) 23:34:30ID:???
>>176
$_REQUEST ってデフォルトで"EGPCS"と全部入るから無用な混乱を避けるためにも
あらかじめ分かっている部分には $_GET, $_POST を使い分けた方がいいかなぁと
まぁ俺のポリシーなんだけどね
0180nobodyさん2007/01/26(金) 23:41:17ID:???
>>178
$a = array(range(0, 10), range(0,10), range(0,10)) ;
echo count($a) ;

これの出力結果が知りたいということ?
0181nobodyさん2007/01/26(金) 23:43:31ID:sVVIcX6W
>>177
POSTから受け取りたい変数がGETで渡された場合にも代入されちゃうから
あんまりよくないけど、わかってれば大丈夫。
大抵、表示部分はGETでやって、サーバー側に記録するような受け渡しは
POSTでやる。

俺は、タブが空白4文字だっけ?あれ以外はZENDのコーディング規約と同じで
phpのみの場合<?php 〜 exit;で行の文字数も広げすぎないようにしてる。
空白4文字だと、タブと違って作る時や消す時にメンドイ。
あの理由は、あらゆる人のエディターで
同じインデント幅って意味だと思うから一人で作る時は関係ない。
あとの規約は
if(){
}
と
function
{
}
って書き方くらいだったはず。
0182nobodyさん2007/01/26(金) 23:44:19ID:sVVIcX6W
>>180
そうですよろしくお願いしますm(__)m
0183nobodyさん2007/01/27(土) 00:01:42ID:???
>>177
他の人も言ってるけど、わかってて使う分には問題ない。
ただ、CSRF攻撃の対策だけは考えといてね。
0184nobodyさん2007/01/27(土) 00:02:00ID:???
>>182
http://jp.php.net/count
0185nobodyさん2007/01/27(土) 00:23:23ID:???
何でやってみれば分かる質問するんだろう・・
0186nobodyさん2007/01/27(土) 00:52:46ID:???
$_REQUEST使いまくり。
POSTとGETのところで気をつかっても仕方ないぞw
0187nobodyさん2007/01/27(土) 01:05:43ID:???
全部$_REQUESTだとスクリプト使わなくても
他人の自動登録リンク集にクエリ付きでURL登録するだけでイタズラし放題。
0188nobodyさん2007/01/27(土) 01:05:47ID:???
>>185
聞けば必ず正しい答えが返ってくると信じてるからじゃない?
0189nobodyさん2007/01/27(土) 01:13:33ID:???
これからIDださないで質問してくるやつは容赦なく叩くからね。
0190nobodyさん2007/01/27(土) 01:56:12ID:???
>>185
初心者はエディタを即起動して、ちょろっとプログラム書いて、即実行できるような環境作りができていないことが多いからだと思われ。
0191nobodyさん2007/01/27(土) 02:41:39ID:G9yQMd4B
例えば2chだったら、"書き込む"を押す必要がありますが、
この 書き込む ボタン や 特定のリンクなど を"キーボードからの操作"で
即選択させられるようにするか、押す 方法はありませんかね?
0192nobodyさん2007/01/27(土) 02:44:28ID:???
>>190
大抵の入門向けの書籍って環境作りから書いてあったりするのに…
テスト環境を作るのが初心者の最初の課題だろう
ローカルなテスト環境作らない奴っていきなりレン鯖でテストするのか?
0193nobodyさん2007/01/27(土) 02:45:18ID:???
GETデータのリンクをAltで関連付ければ万事おk
0194nobodyさん2007/01/27(土) 02:50:20ID:???
>>191
PHPいらない。
Webサイト制作初心者用質問スレ Part 178
http://pc10.2ch.net/test/read.cgi/hp/1169219011/

>>192
そういうの多いみたい。ApacheもPHPもMySQLも自分で準備するもんじゃないと。
入門書もマニュアルもなしで適当なサイト見てるだけだったりするし。
01951912007/01/27(土) 03:24:29ID:???
>>194
アリガトウゴザイマス
そちらのスレッドへ行ってみマス
01961732007/01/27(土) 09:18:48ID:???
>>175
やっぱりそこまでの過程は全く同じでした。
なぜだか原因がわかりません。

だけど教えていただいたctype_spaceつかったらうまく行きました。
原因はわからないけど、とりあえず希望する結果が得られたので、ありがとうございました。
0197nobodyさん2007/01/27(土) 12:09:05ID:P0eOVa/K
$str = "あいうえお";

$array['comment']

$smarty->assign('age', $age);

など"と'が使える場所で、変数を展開することがない場合は'を使ったほうがいいのでしょうか?
0198nobodyさん2007/01/27(土) 13:20:57ID:pVD/5wi/
>>192
>大抵の入門向けの書籍って環境作りから書いてあったりするのに…
おいらは、あれでページ稼ぎしているのかと思ってたw
0199nobodyさん2007/01/27(土) 13:27:50ID:???
>>197
きちんと理解できているのなら、どちらでもいい。
好きなほうでやるべし。
0200nobodyさん2007/01/27(土) 13:32:29ID:???
ニュー速の名記者の名前を教えてください。その記者の記事のみ取得するスクリプト作りたいんですが携帯からだと流れの早い板においつけなく、また検索できなくて困ってます。
0201nobodyさん2007/01/27(土) 13:55:51ID:???
またエスパーか
0202nobodyさん2007/01/27(土) 14:00:06ID:???
>>200
ttp://hauu.cc/
0203nobodyさん2007/01/27(土) 18:21:46ID:???
PDOからSQLiteのテーブルの定義を調べるにはどうしたらいいですか?
02042032007/01/27(土) 18:37:52ID:???
ごめん自分で解決した
0205nobodyさん2007/01/27(土) 19:05:35ID:???
204は偽者です。いい大人が恥を知れ。
02062032007/01/27(土) 20:19:21ID:???
事故解決しました。ヤフーでググったらすぐ分かった。
これくらいすぐ教えてくれたらいいのに
0207nobodyさん2007/01/27(土) 20:31:14ID:???
203大杉ワロス
0208nobodyさん2007/01/27(土) 20:32:45ID:???
質問者はID表示しるって書いてあるのになあ
0209nobodyさん2007/01/27(土) 20:33:50ID:???
206は偽者です。こういうことがあるとそのスレの程度がしれるよね。
0210nobodyさん2007/01/27(土) 21:08:09ID:8H08hEUC
すみません、質問させてください  今、二次元配列の勉強してるんですが
以下のスクリプトがうまくいきません。どこが悪いんでしょうか。

<?php
$artist = array(
"ピカソ" => array(
"出身地" => "スペイン",
"性別" => "男",
"タイプ" => "キュビズム",
"代表作" => "自画像"),
"ゴッホ" => array(
"出身地" => "オランダ",
"性別" => "男",
"タイプ" => "印象派",
"代表作" => "ひまわり"),
"モロー" => array(
"出身地" => "フランス?",
"性別" => "男",
"タイプ" => "神秘派",
"代表作" => "出現")
);

echo $artist["ピカソ"]["出身地"]."<br>";
echo $artist["ゴッホ"]["代表作"]."<br>";
echo $artist["モロー"]["出身地"]."<br>";
?>

項目をどれか一つ(一人)に絞れば大丈夫みたいなんですが、、
どこか間違ってるでしょうか。こんなので4時間くらいはまっています…
02112032007/01/27(土) 21:08:10ID:???
>>209
私は本物ですよ。
もしかして、貴方も私の質問の回答を知りたいんですか?
調べたら簡単にわかりますよ。
0212nobodyさん2007/01/27(土) 21:10:05ID:???
>>210
エラーの内容ぐらいかけ!っと何度(ry
0213nobodyさん2007/01/27(土) 21:15:36ID:???
>>210
ググって調べろ!っと何度(ry
0214nobodyさん2007/01/27(土) 21:25:44ID:8H08hEUC
>>212-213
スイマセン エラーの内容は、全く何も画面に表示されないんです
ググッて調べたりもしたんですが、上手くいかないんですよねー
phpは5だけど、バージョンが関係するような大した物じゃないし。。
0215nobodyさん2007/01/27(土) 21:30:19ID:???
>>210
もじこーど
0216nobodyさん2007/01/27(土) 21:34:14ID:???
>>214
PHP5の自鯖環境で、>>210のコードをコピペしたら、
普通に↓のように出力されましたが・・・

スペイン
ひまわり
フランス
0217nobodyさん2007/01/27(土) 21:35:17ID:???
>>201
sjisなんてオチはやめてくれよ?
0218nobodyさん2007/01/27(土) 21:36:37ID:8H08hEUC
>>215
アドバイスありがとうございます。
しかし文字コードは関係ないような。。単純に配列の要素を減らしたら表示されるんです。
↓みたいのならOKです

<?php
$artist = array(
"ゴッホ" => array(
"出身地" => "オランダ",
"性別" => "男",
"タイプ" => "印象派",
"代表作" => "ひまわり")
);
echo $artist["ゴッホ"]["代表作"];
?>
0219nobodyさん2007/01/27(土) 21:40:56ID:???
>>218
>>215が正解
0220nobodyさん2007/01/27(土) 21:44:10ID:???
>しかし文字コードは関係ないような。。
じゃあいいです
0221nobodyさん2007/01/27(土) 21:47:49ID:???
>>218
>>216
0222nobodyさん2007/01/27(土) 21:49:54ID:???
>>218
"フランス?" を
"フランス" にすると結果どうなる?
0223nobodyさん2007/01/27(土) 21:52:18ID:???
>>222
だからそんなのは関係ない。
文字コードが原因。
>>216の環境では実行できる。
>>210の環境では実行できない。

こんな単純なコードが実行環境によって変わると思うか?
変わるのは表示している環境。
0224nobodyさん2007/01/27(土) 21:54:27ID:???
>>223
いや、だからSJISが原因なのは明白だから
「?」を消すと分かってもらえるだろうと思ってさ。
0225nobodyさん2007/01/27(土) 21:57:32ID:8H08hEUC
>>222
?とっても結果同じでした。
すみません

>>223
文字コードですか…
phpの保存形式もphpのcharsetもShift-jisです。
自分なりに調べたりしてますが、文字コード良くわからないんです まいったな
0226nobodyさん2007/01/27(土) 22:00:00ID:M7VqTPnR
便乗で知りたいです。
具体的に文字コードの何?
SJISで2次元配列使うとダメなんですか?
パッとみエスケープするべき文字は
入ってない気がするんだけど。

ひょっとしてEUCでもKEYに'〜'とか使ったらおかしくなります??
0227nobodyさん2007/01/27(土) 22:04:38ID:51nHlwTU
すみません、少し聞きたいのですが
mb_send_mail関数から送ったメールのタイトルの最初に ”ご"という文字が入っていると文字化けするのですが
なにか対処法があるますでしょうか?
mb_language(ja)やっても同じですしmb_internal_encodingはEUCです。

ちなみに"ご"という前に空白とか入れると問題ないですし逆に最初に "ご"を入れると次の文字も化けています。
0228nobodyさん2007/01/27(土) 22:06:12ID:???
SJISだと"ピカソ"がダメっぽいですね。
internalでEUCです。
0229nobodyさん2007/01/27(土) 22:08:32ID:???
これはPerlの例だけど基本的にPHPでも同様、SJISは避けた方がイイ
ttp://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
0230nobodyさん2007/01/27(土) 22:09:43ID:???
>>223
すまん俺の恥ずかしい勘違いでした

>>225
うちの環境ではSJISでは空白、EUCで保存するとうまくいったよ
0231nobodyさん2007/01/27(土) 22:12:31ID:M7VqTPnR
あ〜ソっか〜
2次元配列って"を使ったときの挙動おかしい??
echo "$arr["hoge"]["hage"]";だと展開されずにエラーになる。
echo $arr["hoge"]["hage"];だと上手く行く。
一番良いのは
echo $arr['hoge']['hage'];っぽい。
これだとおっぱい括弧要らない。
0232nobodyさん2007/01/27(土) 22:13:49ID:???
>>226
少なくとも「ソ」と「表」にバックスラッシュ入ってる。
EUC-JPならもちろん無問題。
0233nobodyさん2007/01/27(土) 22:16:48ID:???
>>231 >>5
0234nobodyさん2007/01/27(土) 22:19:43ID:8H08hEUC
>>228
ピカソ がトラブルの原因ですか。。 そんなの想像も出来ないですね

アドバイスにしたがってEUCで対応しようと思いますが、
<meta http-equiv="content-type" content="text/html; charset=EUC">
で、
保存形式もEUCにしたのに、ローカルテストで化けています。
トクトクのレンタルスペースならちゃんと表示するのに…

そろそろウザイですね、、文字コード勉強しなおしてみます
皆さんありがとうございました。<(_ _)>
0235nobodyさん2007/01/27(土) 22:21:13ID:???
二次元配列をFOREACHを使わずに展開する方法ってありますか?
0236nobodyさん2007/01/27(土) 22:28:06ID:???
>>233 >>231
0237nobodyさん2007/01/27(土) 22:29:57ID:???
>>234
internalをEUCにする。
0238nobodyさん2007/01/27(土) 22:31:39ID:???
>>234
>そんなの想像も出来ないですね

(゚д゚)
0239nobodyさん2007/01/27(土) 22:33:10ID:???
>>235
print_r(藁
正直知らん。
二次元配列でも、配列の中の値はただの配列だから
普通にやればいいんじゃないかな。
辞典買ったけど、二次元配列用に便利な関数とかは特に無かったと思う。
0240nobodyさん2007/01/27(土) 22:34:30ID:???
>>235
array_mapで再帰的に。
0241nobodyさん2007/01/27(土) 22:37:15ID:???
>>238
最初は皆そんなもんだろ。
英語圏だったら良かったのにって何度思ったことか…

ところでユニコードでセキュリティの
大問題が発見されたみたいだけどPHPは大丈夫なのかな?
後で試してみるけど。
0242nobodyさん2007/01/27(土) 22:56:37ID:???
っていうかキーに日本語使うって普通なのか?
あんまりオススメできない気がするが
0243nobodyさん2007/01/27(土) 23:01:57ID:???
>>242
慣れてくればやらなくなる気もするし、
最初に使わないルールを覚えさせた方が後で苦労しない気もするw
0244nobodyさん2007/01/27(土) 23:02:29ID:u45Vq17A
"name , type, value, primary key(name,type)"
この文字列をsplitにより,で分割(ただしカッコ内は除外)するにはどういう正規表現にすれば良いですか
0245nobodyさん2007/01/27(土) 23:12:12ID:???
フォームのテキストボックスに記入して登録ボタンなどをクリックした場合の質問です。
普通は戻るボタンをクリックすると先ほどの文字が記入したままになっているのですが
フォームのphpファイルでセッションを使っていると記入した文字が消えてしまいます。
記入したままにするにはどうしたらいいでしょうか?
よろしくお願いします。
0246nobodyさん2007/01/27(土) 23:22:46ID:???
>>245
クライアントのリクエストに対して
動的に生成するページでは
戻るとフォームは空になる

POST して戻らせるようにすればいい
0247nobodyさん2007/01/27(土) 23:40:55ID:SMgvGaRS
PHP5.2.0にしたら環境変数$_ENVが取得できなくなってるぽい
(俺鯖のメールをPHPに渡して処理させるスクリプトで)
ほかに同じ人いますか?
0248nobodyさん2007/01/27(土) 23:44:18ID:???
>POST して戻らせるようにすればいい
どゆこと?
0249nobodyさん2007/01/27(土) 23:45:37ID:???
>>244
その文字列なら楽勝
split(', ', "name , type, value, primary key(name,type)");
0250nobodyさん2007/01/27(土) 23:45:47ID:???
>>247
仕様です
環境変数はgetenv関数で取得しましょう
0251nobodyさん2007/01/27(土) 23:46:33ID:???
>>248
フォームに戻るボタンを設置してPOSTさせる
よく見かけるだろ
02522472007/01/27(土) 23:56:48ID:SMgvGaRS
>>250
ええっ
そうなんですか?
$_SERVERに同じのがセットされてるようなのでそれで間に合わせましたよ
getenv関数は思いつかなかった
サンクスです

#もしかしてqmailの設定いじることになるのかと思って頭が真っ白になった
#しかしなんでこう覚えておくのが多いのか
#昔やった設定なんか綺麗サッパリ忘れとるがな
■ このスレッドは過去ログ倉庫に格納されています