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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/01(日) 04:21:50ID:VGqlLhlD
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

◆質問する時の注意
・ 自分の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
0790nobodyさん2007/04/10(火) 01:51:40ID:???
>>760さんのアドバイスが的中しました。
foreachでまわしてたので自動的にカンマがついてたのに気づきませんでした。
現在は問題なく動きます。ありがとうございます。
0791nobodyさん2007/04/10(火) 02:03:31ID:???
>>790
じゃ上で書いてた問題のあるコードってのは嘘だったわけ?
0792nobodyさん2007/04/10(火) 02:18:52ID:???
>>785
重複登録を防ぎたいなら、INSERTで失敗させるようにするとか、トランザクション使うとかすればいい。
setcookieでクッキーを削除したつもりでも、ブラウザがそのレスポンスを受け取るまでは何度でもクッキー送ってくるよ。
クッキーは排他処理とかに使える道具じゃない。
0793nobodyさん2007/04/10(火) 02:26:58ID:4NI9RXKe
>>791
0794nobodyさん2007/04/10(火) 03:45:07ID:???
>>793
何だ?しゃべれないのか?
0795nobodyさん2007/04/10(火) 04:07:44ID:???
朝っぱらからケンカうってるやつは暇なのか?
0796nobodyさん2007/04/10(火) 04:31:31ID:???
>>795
なんだ?ニートなのか?
0797nobodyさん2007/04/10(火) 08:40:15ID:???
>>787
>>789
mb_strimwidth だね。(誰かこの関数名の単語の区切りを教えて)
でもメールアドレスの途中で切らないとかそういった機能はないから
たとえば「split系関数で切りたい文字列と切りたくない文字列が交互に並ぶ配列にして
ループで順に連結して規定バイト数を超えたかどうか見つつ
添え字 % 2 の戻り値でmb_strimwidth をかけるかどうか判断する」といったロジックが必要。
0798nobodyさん2007/04/10(火) 08:46:43ID:???
>>785
こういう場合は、
if(処理終了) {header("Location:....");}でOK。
強制的に飛ばす(リダイレクトする)のがいい。

0799nobodyさん2007/04/10(火) 08:56:56ID:???
>>797
>mb_strimwidth だね。(誰かこの関数名の単語の区切りを教えて)
エス トリム ウィドゥス かな?

で本題
mb_strimwidth(接続文字空)でいったん切ってから、正規表現で末尾の連続する半角英数記号を削除
で どう?
0800nobodyさん2007/04/10(火) 08:58:02ID:???
>>787
そんなに厳密じゃなくてもいいわけでしょ?
「ひらがながあれば、ある範囲で切る」だけを唯一の区切り条件にすればいいじゃん。
漢文サイトじゃないだろうから。
0801nobodyさん2007/04/10(火) 09:02:18ID:???
>>799
英文の書き込みは全て消えるね
0802nobodyさん2007/04/10(火) 09:04:43ID:???
>>801
「連続する」英数だから全部は消えないだろ
URLのみの書き込みなら消えるけど
0803nobodyさん2007/04/10(火) 10:00:04ID:???
>>783
--with-imapにソースを解凍してmakeしたディレクトリ指定したらコンパイルまで通りました
パスが違うのかコピーするファイルが足りないのか?
0804nobodyさん2007/04/10(火) 10:33:14ID:Y95uap3I
オブジェクト指向を勉強しています。
PearDBクラスを、自分が作ったクラスの中で使うとき、
extendsするのか、ただ単に使う場所でinclude_once('DB.php')すればいいのか
わかりません。
どちらにすればいいのでしょうか?
0805nobodyさん2007/04/10(火) 10:58:06ID:???
PHPでオブジェクト指向を勉強するなカス
0806nobodyさん2007/04/10(火) 11:06:49ID:Y95uap3I
いいんです。PHP以外はやる予定はないので。趣味ですし。
0807nobodyさん2007/04/10(火) 11:34:59ID:???
ストレスたまってる奴が昨日から沸いてるな
0808虚弱PHP2007/04/10(火) 11:35:34ID:???
>>804
用途によるとしか…。

>>805は言葉は悪いけど正論だと思うなぁ。
オブジェクト指向はJavaでやるのが一番だと思う。
いや、SmalltalkとかRubyの方がいいのかもしれんけど、
俺はまともにやったことないからわからん。
0809nobodyさん2007/04/10(火) 11:35:59ID:???
カスは愛想だよ、うん。
0810虚弱PHP2007/04/10(火) 11:40:23ID:???
>>785
なんか根本的に間違っている気がする。
synchronizedってスレッドの処理だから今回のような件だと関係ないし。

俺だったら、CookieのかわりにSession変数使う。
0811虚弱PHP2007/04/10(火) 11:45:46ID:???
>>777
DBによってエスケープ方法が違うけど、
mysqlのネイティブ関数としてはmysql_real_escape_stringとかがある。
PDOならプリペアドステートメント使えば解決。
0812nobodyさん2007/04/10(火) 12:05:49ID:???
DBって決められたUPDATE文を実行するときでも、
エスケープしとくべきですか?
0813nobodyさん2007/04/10(火) 12:22:30ID:FUjP3ASn
var メンバ変数の宣言かかなくても、動くんですが、そんなもんですか?
0814nobodyさん2007/04/10(火) 12:27:36ID:FUjP3ASn
var メンバ変数名が違ってたら、エラーがでる設定ってありますか?
0815虚弱PHP2007/04/10(火) 12:59:06ID:???
>>812
"決められたUPDATE文"にDBから引っ張ってきた値が入っている場合は、
セカンドオーダーSQLインジェクションが発生する恐れがあるので必ずエスケープ。

平文でコードに直書きしている場合は問題ない…
けれども、人間は間違いをおかすものなので変数は全部エスケープが正解。
0816虚弱PHP2007/04/10(火) 13:01:39ID:???
>>813
そんなものです。
>>814
error_reporting(E_ALL);
でどんなもんでしょ
0817nobodyさん2007/04/10(火) 13:04:00ID:???
>>813
そんなものです
>>814
ないと思う
ただし、右辺値で使う場合は警告がでる
$foo = $this->bar;
とかね
0818nobodyさん2007/04/10(火) 14:07:55ID:???
オブジェクトについて質問です。
ttp://labs.cybozu.co.jp/cbl_activerecord/
このO/Rマッピングライブラリを使って、DBから取得してオブジェクトに入れるところまではできたのですが、
取得した値を使いたい場合にいちいち

$var['name'] = $todo->name;
$var['title'] = $todo->title;

と指定するのではなく、まとめて$varの配列に置き換えたいのですが
どうすれば良いのでしょうか?
0819nobodyさん2007/04/10(火) 14:15:35ID:???
多分PDOのfetchmode変えるなりすればできると思うが、
何のためのO/Rマッパだよ、、、そのまま使えばといいんじゃないかと
0820nobodyさん2007/04/10(火) 14:16:20ID:???
関数を実行した時に失敗したらエラーを返したいのですが、
hogeFunction() or die ('hogeFunction失敗');
という感じでいいのでしょうか?
それとも
if (hogeFunction()) {
} else {
die('失敗');
}
とかくのがベターなんでしょうか?
0821nobodyさん2007/04/10(火) 14:19:38ID:???
session.use_trans_sid を"1" ブラウザをCOOKIE不可にしておいて
<?php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
echo '<br /><a href="page2.php">page 2</a>';
?>
を実行すると

hrefに?PHPSESSID=xxxx...が追加されるのはなぜ?
クッキーの読み込みをしていないのになぜブラウザの設定が分かるの?
(ブラウザをCOOKIE OKにしておくと?PHPSESSID=xxxx...は追加されない)

つか 初めての接続でブラウザのCOOKIE設定を知る方法があるの?
0822nobodyさん2007/04/10(火) 14:20:59ID:???
>>820
そういう用途なら例外使えばいいんじゃない
0823nobodyさん2007/04/10(火) 14:28:49ID:mS0KEdcp
>>820
!
0824虚弱PHP2007/04/10(火) 14:39:17ID:???
>>818
O/Rマッパを使わない。

>>821
ヘッダは見てみた?
08258182007/04/10(火) 14:49:13ID:???
てst
08268202007/04/10(火) 15:20:17ID:???
>>822
例外ってcatchとかtryっていうやつですよね?
使ったことないのでよくわからないですが、
頑張って使ってみます。
0827nobodyさん2007/04/10(火) 15:30:11ID:???
>>816 >>817 ありがとうございました。
http://pc11.2ch.net/test/read.cgi/php/1017456911/974
0828nobodyさん2007/04/10(火) 15:54:27ID:???
$num=3の意味が気になる
0829nobodyさん2007/04/10(火) 16:07:31ID:qz4cFwH4
内部コードをEUCJP、表示コードがSJISの時、
リクエストパラメータはSJISで渡ってきますよね?
1)一括してEUC-JP変換
2)処理
3)一括してSJISに変換
4)表示
とやるか、
処理する段階で逐次変換処理を入れるか、
どちらが適当でしょうか?
0830nobodyさん2007/04/10(火) 16:08:40ID:S/LWkosg
stream_context_createでhttpsのストリームを作るのはどうすればいいですか
08318302007/04/10(火) 16:13:03ID:???
ごめん、ふつうにhttpsのurl指定したら出来た。
0832nobodyさん2007/04/10(火) 16:57:32ID:???
>>829
文字コードに依存するような処理がない限りは
その例で良いと思う
0833nobodyさん2007/04/10(火) 17:00:28ID:???
>>821
session.use_trans_sid
session.use_only_cookies

あたり
0834nobodyさん2007/04/10(火) 17:48:44ID:???
現在、PHPでどこまでのスキルがあれば金がとれますか?
0835nobodyさん2007/04/10(火) 18:08:15ID:???
会社なり顧客なりが金を払いたくなるようなコミュニケーション能力と人柄。
0836nobodyさん2007/04/10(火) 18:26:31ID:GbKKaQIE
無料のantispamで設置が容易なものを教えてください
0837nobodyさん2007/04/10(火) 18:28:26ID:???
PEAR::Text_CAPTCHA
0838nobodyさん2007/04/10(火) 18:52:01ID:???
cronが使えないサーバで、5分おきにあるスクリプトを実行させたいのですが、
(スクリプトが全て終了するのに最長3分ほどかかります)
別ファイルで時間を記録したテキストを作成して、
そこから現在時刻とひいて5分以上だったら、
アクセスしてきた人に更新してもらおうと思ったのですが、
上記の通り最長3分間ブラウザが無応答状態になるので、迷惑ですよね。
ポップアップで裏でやるなんてのも迷惑ですし、
もっと他にいい方法ありませんでしょうか?
0839nobodyさん2007/04/10(火) 19:00:09ID:???
>>838
自分でアクセスすりゃいいじゃん。
0840nobodyさん2007/04/10(火) 19:02:21ID:???
>>839
寝てる間なんてムリです・・・
0841nobodyさん2007/04/10(火) 19:04:30ID:???
webcronっていうURL叩いてくれるサービスがあるぜ
0842nobodyさん2007/04/10(火) 19:10:11ID:???
>>841
おーこんな素晴らしいサービスがあったのですね。
知りませんでした。
これで解決しそうです。
本当にどうもありがとうございました。
0843nobodyさん2007/04/10(火) 19:19:17ID:???
【PHP】
4丁目に引っ越してきたPHP君。
大いなる進化をとげるたびにのファンを大切にしないところが玉に傷。

【Perl】
CGI全盛期にもっとも活躍した三丁目のPerlさん。
時代とともに年をとるのか、PHPにも活躍の場を与えるえらいひと。

【Java】
いざというとき頼れるJava兄さん。
大きな事件は「いいから俺にまかせてみろ!」と豪腕な構えだ。

【HTML】
すべてはここからはじまった伝説の男HTML。
戦いの場によっては、スーパーサイヤ人の限界を超えたXHTMLに変身して活躍していると噂される。
0844nobodyさん2007/04/10(火) 19:25:57ID:???
            _,,‐─-v‐、,,、
         ,,-‐'": : : : : : : : : : `ヽ
        /: : : : : : : ,,__ : : : : : : \
      r': ,、,,.-─''"゛   ミ : : : : : : : 'i、
       `/ /        ミ_ : : : : : : :,、}
      i l    _,,..-‐^‐-、 `゙i: : : /l.l|
      i、}‐-、 ヽ;;/,rェッ;;'"  ゙ー' 9iリ!
      |  ',tテi  ヽ='"     ゞ t'
       |  'i"´| , -、         ヽ-、,,___
       |  '}、 !,,tu'"  ヽ、  ,l: ‐-‐" }: : : : :
       }   lヽ、__,,,.-‐ヽ  /: : : : : : /|: : : : :
     ,r/  /: : :ヽー‐'  ノ: : : : : : : / .|: : : : :
     /: \ /: : : : : 丶,, -''_: : : : : : /  |: : : : :
    /: : : : :ヽ/: : : : : : : ヾ''‐--‐ヽ   |: : : : :
   /: : : : : : : : : : : : : : : : : : ヽ\: : /   |: : : : :

     ビップ=デ=ヤレー[Vuip De Yale]
         (1955〜 フランス)
0845nobodyさん2007/04/10(火) 19:57:30ID:daN1ASwg
PDOでMySQLに接続したいんだけど、どういうわけか接続できていない。
MySQLのバージョンは5.0.22なんだけど、PHP5.1.6のPDOはサポートしてる?
教えてくれ。
0846nobodyさん2007/04/10(火) 19:58:46ID:???
複数モジュール間での値の受け渡しで行き詰まってます。

  |(a)別のHTMLのフォームからのPOST
  ↓
+----------------+ 実行  +----------------+
| 親モジュール.php |------->| 子モジュール.php |
+----------------+      +----------------+
    ↑                 |
    └−−−−−−−−−−−┘
     (b) 親モジュールが生成するHTMLに結果を渡したい

(a)のPOSTで渡ってきたフォームのデータを、親モジュールでたとえば

  $user_id = $_POST['USER_ID']

として取って、$user_idをrequire_onceで子モジュールに渡し、子モジュールではDBからuser情報をselectします。
子モジュール内には、HTMLを出力するような処理はなく、単純にDBからのselectのみです。

次に、select結果を変数に入れ、(b)のように親モジュールが生成する
HTML上のフォームに返したいのですが、そもそものフォームへの返し方がわかりません。

希望する処理の流れを整理すると。

 (1) 静的なHTMLファイルのフォームから親モジュールにPOST
 (2) 親モジュールはPOSTされた情報を使って子モジュールを実行し子モジュール内の変数に結果を代入
 (3) 子モジュール内の変数にセットされた結果を親モジュールが生成するHTML内フォーム(HIDDEN属性など)にセット
 (4) このタイミングで、親モジュールのHTMLが出力される

という処理をやりたいと思っていますが、
どのような方法を使えばよいか、ヒントだけでもご教示いただきたく。
現状、(2)までは出来ていて、(3)の部分で行き詰まっているところです。
08478462007/04/10(火) 19:59:55ID:???
一部訂正します。
>$user_idをrequire_onceで子モジュールに渡し、

は、

$user_idをrequire_onceで実行した子モジュールに渡し、

という意味です。
0848nobodyさん2007/04/10(火) 20:17:38ID:???
>$user_idをrequire_onceで子モジュールに渡し、
ここが意味わかんないです><
0849nobodyさん2007/04/10(火) 20:20:17ID:???
IDがでてないよ
0850虚弱PHP2007/04/10(火) 20:20:37ID:???
>>846
なにに躓いているのか分からない…。

俺だったら親がResultオブジェクトを用意して子に渡し、
子はResultオブジェクトに値を設定してリターン。
0851nobodyさん2007/04/10(火) 20:21:48ID:???
何が分からないのか分からないのですが
普通にDBから取得した値を変数に代入するなりすればいいだけじゃないかと
08528462007/04/10(火) 20:22:04ID:???
>>848
わかりにくくてすみません。
まだPHPを初めて数日なものでして。。。(´・ω・`)

HTMLを生成しないPHPモジュール内の変数の内容を、
別のPHPモジュールが生成するHTMLのフォームに
渡す方法を知りたい、という感じです。
0853nobodyさん2007/04/10(火) 20:22:43ID:???
>>852
http://pc11.2ch.net/test/read.cgi/hp/1175593499/319
0854nobodyさん2007/04/10(火) 20:25:43ID:???
>>852
いやだから現在$user_idをrequire_onceを渡してるの?
できてるとこまでソース見せてくれ
0855nobodyさん2007/04/10(火) 20:26:22ID:???
>>852
requie_onceしているだけならそのままそれが使えます
>>850の言ってるみたいにその小モジュールというのが
オブジェクト群とかでそれに渡しているのならそれを返せば良いだけ
08568462007/04/10(火) 20:32:26ID:???
>>850>>851>>853-855

アドバイスありがとうございます。
ソースが会社なもので、今手元にありません。
戴いたアドバイスを元に、明日頑張ってみます。
あと、ソースを支障ない範囲に加工して明日はらせていただきます。
0857nobodyさん2007/04/10(火) 21:38:43ID:???
だめだこりゃ
0858nobodyさん2007/04/10(火) 21:40:29ID:???
そんな程度のスキルで書かれたソースなんて誰だれがパクるんだwww
無駄な心配しなくていいよ846君
0859nobodyさん2007/04/10(火) 21:42:08ID:???
プロだとは思えない
08608462007/04/10(火) 21:46:19ID:???
いえいえ、仕事はできますよ
0861nobodyさん2007/04/10(火) 21:47:05ID:???
給料もらえてるのが、幸せだと思う
0862nobodyさん2007/04/10(火) 21:49:02ID:???
まあそれはそれで幸せだからがんばってくれ
0863nobodyさん2007/04/10(火) 21:56:44ID:???
session_start()もheaderと同じく何も出力される前でいいんだっけ?
0864nobodyさん2007/04/10(火) 22:06:22ID:???
うん
08658462007/04/10(火) 22:10:47ID:???
>>858
すみません。
いえ、パクられるなんてこれっぽっちも思ってません。
ただ、作ってるソースをそのまま貼ったのが会社にバレると、
こんなものでも面倒になるので、ということで。。。

>>860
別に私をカタるのは構いませんが、初心者おちょくるのは楽しいですか?
0866nobodyさん2007/04/10(火) 22:12:12ID:???
ID出さないで質問、レス記述してるのも問題じゃないの
0867nobodyさん2007/04/10(火) 22:16:03ID:???
一応言っとくとメール欄に何も書かないとID出るから
08688462007/04/10(火) 22:23:24ID:???
>>866
トリップってやつを付ければいいんでしょう?
sage進行かと思って、ずっとsageをメル欄に入れてました。

トリップの付け方、勉強してきます。。。。
0869nobodyさん2007/04/10(火) 22:28:51ID:???
もうこりゃワザとだな
0870nobodyさん2007/04/10(火) 22:33:46ID:???
>>846

>>1をよくよみましたか?
0871nobodyさん2007/04/10(火) 22:36:53ID:???
sage信仰なんてものは都市伝説です
sageは自演隠しのための機能ですw
0872nobodyさん2007/04/10(火) 22:39:08ID:???
ワザとですね
0873nobodyさん2007/04/10(火) 22:41:28ID:NUin5iQl
class Test {
  private $var;
  function __construct($arg) {
    $arg = $this->var;
  }
  function test() {
    return $this->var;
  }
}

$obj = new Test('hogehoge');
echo $obj->test();

例だとhogehogeを出力したいのですが、出力できません。
どこがおかしいのでしょうか?
08748732007/04/10(火) 22:46:54ID:NUin5iQl
すみません、自己解決しました。
$arg = $this->var;
ではなくて、
$this->var = $arg;の順ですね。
スレ汚し失礼しました。
0875nobodyさん2007/04/10(火) 22:47:11ID:???
$arg = $this->var; 

この辺
0876nobodyさん2007/04/10(火) 23:21:59ID:6hVZtA40
空メールシステムの簡単な説明サイトなどはありませんか?
0877nobodyさん2007/04/10(火) 23:22:32ID:ywkUcui/
スイマセン 教えて頂きたいのですが PHP.iniの設定は3ファイル全部設定するのでしょうか?
0878nobodyさん2007/04/10(火) 23:28:48ID:???
>>877
意味がわからない
3ファイルって何のこと
0879nobodyさん2007/04/10(火) 23:29:09ID:???
>>876
PHPとなんの関係もないぞ
0880nobodyさん2007/04/10(火) 23:32:52ID:???
>>877
php.ini-distとか-recommendedとかのこと?
0881nobodyさん2007/04/10(火) 23:38:14ID:6hVZtA40
>>879
ごめ、普通にスレ間違えた
0882nobodyさん2007/04/10(火) 23:44:19ID:+1UvK/Fa
テキストフォームに入力されたデータが自然数かどうか判定するために
とりあえず整数かどうかの判定をしようと思って

if( is_int($_GET["data"]) == FALSE )
 echo"エラー:入力されたデータは整数値ではありません。";

としてみたのですが、何を入力してもエラーが表示されてしまいます
なぜでしょうか?
0883nobodyさん2007/04/10(火) 23:46:47ID:???
エラーに書いてあるとおりですw
0884nobodyさん2007/04/10(火) 23:47:39ID:???
>>882-883
糞ワロタwwwwwwww
0885nobodyさん2007/04/10(火) 23:48:46ID:+1UvK/Fa
???
例えば3を入力した場合
is_int($_GET["data"])の返す値はTRUEにならないのでしょうか?
0886nobodyさん2007/04/10(火) 23:52:21ID:???
is_int()の仕様読まずにカキコ
引数が整数値じゃないとfalseじゃないの?
$_POSTの値は数値でも文字列だよ
やるならctype_digit()で
0887nobodyさん2007/04/10(火) 23:59:59ID:???
入ってる値をint型にするのなかったっけ
0888nobodyさん2007/04/11(水) 00:01:03ID:???
if(preg_match("/[^0-9]+/",$_GET["data"])){
echo"エラー:入力されたデータは整数値ではありません。";
}

とかは?
0889nobodyさん2007/04/11(水) 00:03:29ID:???
なにそのゴージャスな正規表現オーバーヘッドを気にしない使い方
■ このスレッドは過去ログ倉庫に格納されています