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

【PHP】下らねぇ質問はID出して書き込みやがれ 101

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/11/15(月) 13:00:07ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 100
http://hibari.2ch.net/test/read.cgi/php/1288168893/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0577nobodyさん2010/12/10(金) 10:24:50ID:???
>>576
どっちでも問題なく使える
絶対パスで問題があるとしたらスクリプトの配置を変えた時だね
0578nobodyさん2010/12/10(金) 10:33:54ID:5NVSc+YH
なるほど!
ありがとうございます!
0579nobodyさん2010/12/10(金) 10:43:42ID:???
相対パスのほうが、デバッグの時は有利
0580nobodyさん2010/12/10(金) 10:53:37ID:???
相対だと違う階層のファイルをincludeしたときとかに、カレントが実行してるファイルのとこになるので注意。
結局 dirname(__FILE__)使ったりする。
0581nobodyさん2010/12/10(金) 12:03:19ID:FHNkWvc0
strlen()関数について質問です
strlen()関数はそのまま使ったら文字数のバイト数を表示するんですよね?
'あいうえお'と入れても10ではなく15バイトと表示されてしまうのですが
0582nobodyさん2010/12/10(金) 12:05:37ID:oH6UvGx+
質問です。
・したい事
ページ遷移先で$_FILESを有効にしたい。

・問題点
<form action="./" method="POST" id="m-form" enctype="multipart/form-data">
の「enctype="multipart/form-data"」を付け足したのですが、
画面遷移すると文字化け(s-jisで作っていて、UTF-8で表示しているため)します。
その後、ウェブのメニュー画面より、表示->エンコード->s-jisと
したら、「ページの有効期限が切れています。」となります。

どのように解決すればよいかわかりません。
お教えください。よろしくお願いします。
05835812010/12/10(金) 12:09:03ID:FHNkWvc0
さらに言うと全角の容量を1つ3バイトではなく2ちゃんねるのように1つ2バイトにするには
どうすればよいのでしょうか?
0584nobodyさん2010/12/10(金) 12:09:09ID:???
>>581
マルチバイト対応のmb系の関数を使ってください
mb_strlen
0585nobodyさん2010/12/10(金) 12:18:16ID:FHNkWvc0
>>584
やはり一文字当たり3バイトになっていまいます・・・。

$contents = htmlspecialchars($_POST['name']);
if(mb_strlen($name) >= 50){
$name = 名前長すぎ;
}

とやってるんですが、全角じゃ16文字が限界で
0586nobodyさん2010/12/10(金) 12:19:52ID:FHNkWvc0
$name = htmlspecialchars($_POST['name']);
if(mb_strlen($name) >= 50){
$name = 名前長すぎ;
}
です・・・。連続投稿すみません・・・。
0587nobodyさん2010/12/10(金) 12:23:57ID:???
http://itpro.nikkeibp.co.jp/article/COLUMN/20070307/264117/
0588nobodyさん2010/12/10(金) 12:25:10ID:???
UTF-8に統一しろというのはそういうことさね
0589nobodyさん2010/12/10(金) 12:25:25ID:???
>>587
おお、ありがとうございます
本当に5回もレスしてすみません・・・。
0590nobodyさん2010/12/10(金) 12:47:17ID:???
っていうか2chが全角=2byteなのってUTF-8使ってないからじゃ無いっけ?
UTF-8なら全角=3byteで正解な気が
0591nobodyさん2010/12/10(金) 12:57:44ID:???
ラテン文字に居たっては1→2バイトだからな
UTF-8になかなか統一されない一番の理由はそこにある
0592nobodyさん2010/12/10(金) 13:00:25ID:???
いや、携帯のせいだろ
05935822010/12/10(金) 13:18:42ID:oH6UvGx+
たすけてけろーー!
0594nobodyさん2010/12/10(金) 13:41:15ID:???
metaタグかContent-Typeヘッダを正確に書けば文字化けしないっしょ
05955822010/12/10(金) 14:32:10ID:oH6UvGx+
ありがとうございます。

やってみます。
0596nobodyさん2010/12/10(金) 14:53:45ID:???
>>594
そもそもmb_strlenの第二引数に文字コード入れれるだろ
05975962010/12/10(金) 14:54:40ID:???
ごめん間違えたわ
0598nobodyさん2010/12/10(金) 22:18:42ID:sfMMgbI8
名前空間って何に使うんですか?
0599nobodyさん2010/12/10(金) 22:34:15ID:???
クラス名の衝突回避
0600nobodyさん2010/12/11(土) 01:23:40ID:???
変数名の衝突回避もできれば便利なのに。
0601nobodyさん2010/12/11(土) 06:59:44ID:???
変数名が衝突するとか言うのは作りが悪いだけ。
0602nobodyさん2010/12/11(土) 09:51:20ID:???
わしもそうおもふな
0603nobodyさん2010/12/11(土) 16:00:56ID:???
じゃぁクラス名が衝突するのは作りに問題ないの?
0604nobodyさん2010/12/11(土) 16:39:46ID:???
クラス名は衝突するようになってるの
再利用可能な部品だからいろんな人がお好きに使ってねーって公開してるの
いろんな部品かき集めて作ったら同じクラス名があってうまくインスタンス化できないの
誰が作った部品か書いてあればよかったのになぁと思うわけなの

まぁ普通は他人と衝突しないように作るがどうしても名前が長くなってしまいがち
別に悪くはないけど長くしたところで100%衝突回避できる保証はないからあったほうがいいという話
0605nobodyさん2010/12/11(土) 17:09:07ID:kZNhymsR
【OS名】windowsXP
【PHPのバージョン】5
【連携ソフトウェア】
【質問内容】
会員登録ページを作りたいのですが、会員数は800人程度なのと
内輪のサークルみたいな感じで不特定の人を相手にする訳ではないのと
頻繁にアクセスされる事もないのでデータベースとかを使うのは
大げさ(自分が扱う自信がない)な感じがしています。

データベースを使わない会員登録&アクセス制限の無料サンプルってないでしょうか?
「会員登録 php」でググってるのですが、中々ヒットしなくて
0606nobodyさん2010/12/11(土) 17:10:44ID:???
800人も居たらDB使ってもいいんじゃ
0607nobodyさん2010/12/11(土) 17:54:38ID:???
DB使った方が簡単だと思うが…
テキストファイルベースでそういうの作る方が難しい
06086052010/12/11(土) 18:02:38ID:kZNhymsR
レス、ありがとうございます。
DB使った方が良いですか。
先程からググってるんですが、なんかこれだってのが
見つからないんで、お勧めあったら教えて下さい。
今から、本屋行ってphpの本漁ってきます。
0609nobodyさん2010/12/11(土) 18:03:31ID:???
ファイルで管理する一番単純な方法はディレクトリ名をアカウント名にする
0610nobodyさん2010/12/11(土) 18:07:09ID:???
1000人以下ならCSVファイルでokだろ。
あとの管理も楽。
0611nobodyさん2010/12/11(土) 18:09:13ID:???
口で言うのは簡単だがあなたにはたぶん作れない
というわけでDBを使う気があるのならxoopsみたいなものをインストールしたほうが早いんでは?
0612nobodyさん2010/12/11(土) 18:23:10ID:???
会員登録だけのスクリプトとかあんまり落ちてないだろう
ショッピングカートとか探して参考にしてみれば?
0613nobodyさん2010/12/11(土) 18:27:49ID:???
>>610
1000人以下でもSQLite使ったほうが管理はしやすいと思うが・・・
0614nobodyさん2010/12/11(土) 18:31:33ID:6a9fgwGZ
ふつうにDB使っとけよ
0615nobodyさん2010/12/11(土) 18:52:14ID:???
>>605
DBを使うことが大げさとは思わないけど、DBを避けて作ることも可

サンプル探す時は「会員登録」に拘るんじゃなくて
構成の似ているものを探せばすぐ流用できるのは出てくる。
0616nobodyさん2010/12/11(土) 19:07:53ID:???
はぁ?

単にDB使う前に二の足踏んでるだけの人に
なんでそんなこと薦めるんだよ

あとあとのこと考えれば明らかにDB使わないほうが
ややこしいっつーの
0617nobodyさん2010/12/11(土) 19:18:05ID:???
・800人
・仲間内
・管理者は一人

じゃあEXCELで十分。
0618nobodyさん2010/12/11(土) 19:31:25ID:???
質問と関係ないとこでケンカすんな餓鬼ドモが
0619nobodyさん2010/12/11(土) 19:34:36ID:???
便所の落書きで熱くなるなよ
0620nobodyさん2010/12/11(土) 20:25:10ID:???
EXCELすごいよEXCEL
0621nobodyさん2010/12/11(土) 20:39:59ID:???
アクセス制限も含めてやりたいんじゃないの?
0622nobodyさん2010/12/11(土) 20:56:54ID:???
データベースかテキストかって単なる保存場所の問題で
アクセス制限とはまた別の話
0623nobodyさん2010/12/11(土) 21:52:53ID:???
>>622
>データベースを使わない会員登録&アクセス制限の無料サンプルってないでしょうか?
別な話じゃねーよ
0624nobodyさん2010/12/11(土) 22:03:24ID:???
はい?「データベースを使わない」って形容詞が付いてるんだから
使っても作れるし、使わなくても作れる、つまり別の物だろ。
0625nobodyさん2010/12/11(土) 22:50:31ID:???
> データベースを使わない
↑これ形容詞なのかwww
0626nobodyさん2010/12/11(土) 23:10:05ID:???
小卒かな
0627nobodyさん2010/12/11(土) 23:52:26ID:???
SQLiteかPosql使えばいいよ
0628nobodyさん2010/12/12(日) 03:10:46ID:upsovo/5

$text = <<EOL
この中でphpのif文などを使いたい
EOL;

のですが可能ですか?
0629nobodyさん2010/12/12(日) 03:19:25ID:???
>>609
ファイルの方が手っ取り早くね

アカウント作成
touch($user)

アカウント削除
unlink($user)

アカウント確認
file_get_contents($user)

パスワードはファイル内にでも書いとけってことで
0630nobodyさん2010/12/12(日) 03:43:01ID:???
>>628
あなたがやりたいのは
$text = "この中でphpのif文などを使いたい";
と同じこと。途中でif文を使いたいなら分割しましょう。
ちなみにヒアドキュメントは"<<<"です。

$text = <<<EOL
・・・
EOL;
if(〜){
$text .= <<<EOL
・・・
EOL;
}else{
$text .= <<<EOL
・・・
EOL;
}
0631nobodyさん2010/12/12(日) 04:25:43ID:upsovo/5
>>630
本当にありがとうございます
0632nobodyさん2010/12/12(日) 14:41:37ID:p55fUIgB
return値がvoidの場合でもちゃんとreturnは記述したほうがいいですか?
0633nobodyさん2010/12/12(日) 14:51:35ID:N/dcrvR4
別に書かなくて良いよ
0634nobodyさん2010/12/12(日) 14:52:48ID:???
書く必要はないが気持ち悪いのでいつも書いてる
0635nobodyさん2010/12/12(日) 14:53:47ID:???
むしろ書いちゃダメでしょ
0636nobodyさん2010/12/12(日) 16:34:39ID:???
なんとか粒子が濃いからね
0637nobodyさん2010/12/12(日) 16:38:08ID:oK+8zv6U
かきすぎるとさるとよばれますよ。
0638nobodyさん2010/12/12(日) 18:21:06ID:???
if () {
 while(1) {
  if () {
    return;
  }
 }
}

後ろに処理がなかったらbreakの代わりにreturn使ったりするな
ちなみに俺はループは無限ループにして
中で抜ける条件を書く異端者なので参考にしないほうがいい
0639nobodyさん2010/12/12(日) 18:27:51ID:???
異端というか組み込みやってた感じがしなくもないな
まぁ参考にはしないほうがいいなw
0640nobodyさん2010/12/12(日) 18:31:03ID:???
スクリプト言語に過度の期待はするなw
商売なら別だけどね
0641nobodyさん2010/12/12(日) 19:29:47ID:???
トリッキーなことを得意がってやっていると
改造の時に困るぞ。
0642nobodyさん2010/12/12(日) 22:53:47ID:G6vvlQR5
自作関数について質問です。
a.txt
1列目,2列目
ID,001
name,名前
(行列可変)
のような複数のデータファイルがあります。
これを複数同時に読み込みたいので下記の関数作ってみたけどうまくいきませんでした。
$dataに連想配列が返ってくるようにはどうしたらよいでしょうか?
$read_file = array("a.txt","b.txt");
function Read($read_file){
foreach($read_file as $key){
$str = @file_get_contents($key);
$array = explode("\r\n", $str);
foreach($array as $koumoku => $value){
if($value){
$item = explode(',', $value) ;
$data[$key][$item[0]] = $item[1];
echo $data[$key][$item[0]]."<BR>";
}}}
return $data;
}
var_dump($data);
------
0643nobodyさん2010/12/12(日) 23:26:41ID:???
関数呼び出ししてないってオチじゃないよね・・・?
あとfgetcsvを知っておくとともっと楽にできるかもしれない
0644nobodyさん2010/12/12(日) 23:32:39ID:G6vvlQR5
参考書探して呼んでたら自己解決しました。
global $data
っての追加したらできました。

>>643
呼び出し部分はここのコピぺし忘れただけです;
fgetcsv調べてみます
ありがとうございます。
0645nobodyさん2010/12/12(日) 23:53:05ID:???
returnして受け取れよw
0646nobodyさん2010/12/13(月) 00:06:22ID:???
~~旦_(‥ )こりゃどうも
0647nobodyさん2010/12/13(月) 07:58:36ID:???
便利だぞ!

global 彼女の部屋
0648nobodyさん2010/12/13(月) 08:59:07ID:???
リア充乙
0649nobodyさん2010/12/13(月) 10:42:41ID:???
global 俺の嫁
0650nobodyさん2010/12/13(月) 11:15:55ID:???
彼女の部屋.引き出し.open()

おや・・・知らない男の写真がたくさん出てきたぞ
0651nobodyさん2010/12/13(月) 11:24:41ID:???
>>650 fgetcsv で取り込んで整理しましょう。
0652nobodyさん2010/12/13(月) 11:51:19ID:???
unlink(>>650)
0653nobodyさん2010/12/13(月) 13:05:35ID:???
>>652
パーミッションエラー
削除する権限がありません
0654nobodyさん2010/12/13(月) 13:13:46ID:???
MySQLのビューって、LEFT JOINみたいにキーが一致するものを取得するんだと思ってたけど
実際には一度全てのパターンマッチを取得してからWHEREでキーの一致する部分を検索してたんだな
そりゃ思いはずだ
0655nobodyさん2010/12/13(月) 17:57:30ID:???
ゴバ━━━━(゚∀゚)━━━━ク!!!!
MySQL 総合 Part18
http://hibari.2ch.net/test/read.cgi/db/1276247839/l50
0656nobodyさん2010/12/13(月) 19:51:50ID:3wG2VAx5
Windows7(32bit)
PHP5.3.3
Apache2.2.17
この環境で拡張子htmlのファイルからテキストデータを拡張子phpのスクリプトに送信すると何故かダウンロードダイアログが出てしまいます
php→phpだと特に問題ないのですが何か設定するべき箇所はありますか?
0657nobodyさん2010/12/13(月) 20:04:02ID:???
キャッシュ削除してみると幸せになれるかも

あとはエスパーに任せたw
0658nobodyさん2010/12/13(月) 20:31:58ID:X4P4A1O7
>>656

> テキストデータを拡張子phpのスクリプトに送信する

 この部分についての具体的な記載をお願いします。

>> テキストデータを送信する、拡張子phpのスクリプトに

 どの様な方法で、どの様なテキストデータを送信しているかが判然としません。
0659nobodyさん2010/12/13(月) 20:33:41ID:???
追加して書けば…

>> 拡張子phpのスクリプトで受信する

 考えがあると思いますが、どのようなテクストデータを
 どの様に受信する考えでしょうか?

 質問が漠然とし過ぎていて、回答が得難いと考えます。

0660nobodyさん2010/12/13(月) 20:47:57ID:3wG2VAx5
>>658-659
漠然としすぎましたね申し訳ないです
具体的なソースを書くと

A.html
<FORM method='post' action='B.php'>"
<input type='text' name='a'>"
<BR>"
<input type='submit' value='送信'>"
</FORM>"
このフォームで作ったテキストデータを

B.php
<?php
print $_POST["a"];
?>
このスクリプトにPOSTで送信して表示させたかったのですがAがhtmlだとダウンロードダイアログが開いてしまいます
A.htmlを
<?php
echo "<FORM method='post' action='uke.php'>";
echo "<input type='text' name='a'>";
echo "<BR>";
echo "<input type='submit' value='送信'>";
echo "</FORM>";
?>
の様にphpソースに書き換えるとB.phpに問題無く送信出来て表示も出来るのでapacheのhttpd.conf等に何か記述漏れがあるのかと思い質問させて頂きました
0661nobodyさん2010/12/13(月) 21:00:56ID:???
どう見ても下はBに送ってないが
0662nobodyさん2010/12/13(月) 21:05:18ID:???
A.htmlにダブルクオーテーションが混入してるように見えるが
0663nobodyさん2010/12/13(月) 22:09:59ID:3wG2VAx5
すみません自己解決しました
原因はhtmlファイルにhttp://localhost/〜経由でアクセスしていたのではなくhtmlなのをいいことに直接ファイルをクリックしていたのが悪かったみたいです
0664nobodyさん2010/12/13(月) 22:11:53ID:???
はぁ?
0665nobodyさん2010/12/13(月) 22:20:58ID:???
つまりhttp://ではなくりC:\\name.htmlを開いて実行していたんでしょw

自鯖でR15秒更新のチャートをGDで作っているんだけどたまに重いときがあるんだ。
理由がさっぱりわからない。だれか理由はわかりませんか?
0666nobodyさん2010/12/13(月) 22:28:55ID:???
>>665
>>1
0667nobodyさん2010/12/13(月) 22:45:49ID:???
IEを相手にContent-Dispositionのfilename=で日本語ファイルを設定するにあたり、

1 SJISでファイル名を返す
2 URL EncodeしたUTF8文字列を返す

双方試したのですが、ファイル名に半角スペースを含む場合

1はアンダーバーに変更される
2は+のままになる

という症状になってしまいます。
スペースのままファイル名を付けるいい方法はないでしょうか?
0668nobodyさん2010/12/13(月) 22:53:46ID:???
>>667
>>1
0669nobodyさん2010/12/13(月) 23:04:39ID:???
ごめんなさい、PHP使ってるけどPHP関係ありませんでした、移動します。
0670nobodyさん2010/12/14(火) 04:13:11ID:???
最近「>>1」厨がウザいのですが、
何か良い解決法はありませんでしょうか?
0671nobodyさん2010/12/14(火) 05:19:17ID:???
>>1厨厨
0672nobodyさん2010/12/14(火) 06:41:40ID:l3lG4ooA
入力したデータを送信してPHPで処理するのを作ってるんですが(主に文書)
その際のエラーチェックやセキュリティはPHPで行うのと、JavaScriptで行うのどっちがいいのでしょうか?

自分的にはクライアント側でやったほうがサーバーの負荷が少なくて済むと思うのですが
サーバー側でやった方がセキュリティ方面で良かったりします?
0673nobodyさん2010/12/14(火) 06:56:20ID:???
クライアントなんてJavaScriptきってれば抜けられるわけだが
JavaScriptで送信するようにしてもクライアントのみのチェックはやってはいけない
最終的に判断するのはサーバであるべき
クライアント側はあくまでも補佐であることを忘れてはならない
(送信→失敗→再送信→失敗→再送信・・・といったことを少なくするための)
0674nobodyさん2010/12/14(火) 07:08:01ID:P37GDDtJ
>>672

> エラーチェックやセキュリティ

何を基準にエラーやセキュリティと述べているかが判然としません。
0675nobodyさん2010/12/14(火) 07:19:58ID:l3lG4ooA
>>673
なるほど!ありがとうございます!
0676nobodyさん2010/12/14(火) 07:23:12ID:???
俺としてはJavaScriptで確認、PHPで再確認するのがいいかな
Javascriptだけのチェックじゃ>>673の言うとおり切ってりゃすぐ抜けられる
だけどJavaScriptでもチェックできるようにしたらサーバーへの負担も少なくなるしクライアントも楽
サーバーの補佐としてJavaScriptを入れておくことを薦める
■ このスレッドは過去ログ倉庫に格納されています