【PHP】下らねぇ質問はここに書き込みやがれ 47
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/26(土) 21:03:53ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0124nobodyさん
2007/06/10(日) 23:25:50ID:hfm7nUZIsqlite_escape_stringの間違いです、すみません。
SQLiteモジュール版で2系、PHPは4.4.6です。
0126nobodyさん
2007/06/10(日) 23:53:56ID:???専用鯖か自宅鯖じゃないとすぐ止められる。
0127nobodyさん
2007/06/11(月) 00:47:06ID:???自分でテンポラリファイルのシステムを作るとか
確認の時点ではtmpファイルにしておいて、決定したなら移動させる
tmpのまま残ってるのは次の投稿でチェックして消すと
0130nobodyさん
2007/06/11(月) 04:04:52ID:???0131nobodyさん
2007/06/11(月) 04:34:13ID:ZcbFgCnoあと厳密に比較したいなら===つかとけ
0132nobodyさん
2007/06/11(月) 04:43:37ID:???もしかしたらmove_upload_file()する前のtmpファイルが一定期間は残ってるのかもよ
確認して汁
0133nobodyさん
2007/06/11(月) 04:48:29ID:???>移動または名前の変更が行われていない場合、リクエストの終了時に
>そのファイルはテンポラリディレクトリから削除されます。
らしいから一旦は保存しなきゃダメかな
0134nobodyさん
2007/06/11(月) 08:14:21ID:eDI3UWsOnが素数かどうかを判別する関数書いて、借りてる鯖でとりあえず1億まで
forで回してみたらたらちゃんと動いたぜ!
0136nobodyさん
2007/06/11(月) 09:42:40ID:???つまりRSAでよく使う1024ビットの素数の桁は...
0137nobodyさん
2007/06/11(月) 11:40:46ID:eaoXxzlR本番サーバには4.4.7が入っているんですが、
0.0.1でもバージョンが違えば、変えたほうがいいですかね?
あと、ローカルのWindowsをバージョンアップする場合、
C:\WINDOWSにあるiniとかも新しいファイルに変えなければいけないんでしょうか?
よろしくお願いいたします。
0138nobodyさん
2007/06/11(月) 11:49:06ID:???0139nobodyさん
2007/06/11(月) 11:51:54ID:???バージョンは change log で確認して適当に判断しる
0140nobodyさん
2007/06/11(月) 15:01:59ID:RNtXLFSdない場合、皆さんはどんな方法でやりますか?
以下のようにやっているんですが、かなり無駄な処理をしている気がします…
$date = YYYYMMDD;
function date_check(&$date) {
$year = substr($date, 0,4);
$month = substr($date, 4,6);
$day = substr($date, 6);
// 分解後、生成
$new_date = date('Y-m-d', mktime(0,0,0,$month, $day, $year));
list($y,$m,$d) = split('-', $new_date);
if($year == $y && $month == $m && $day ==$d) return TRUE;
}
0141nobodyさん
2007/06/11(月) 15:04:31ID:irDGLGstmysql_query($sql);
これがローカル環境だとうまくいくのにレンサバに移行したらうまくいきません。
エラーをみると、どうやらMARIOCHARACTERSが大文字であることがいけないようでした。
DBには小文字でテーブル名を登録したからです。
ローカルだと同じ条件下でうまくいったのに・・・
と思ってstrtolower($sql)を施すと、
日本語の部分が文字化けします。
sqlはコードに腐るほど書いているのですべて小文字にするには
膨大な作業時間を要します。
「テーブル名を大文字にする」以外の解決策をどなたか教えていただけませんか?
0142141
2007/06/11(月) 15:05:37ID:irDGLGst$sql="INSERT INTO MARIOCHARACTERS VALUES(0,'ピーチ姫');";
です。
0143141
2007/06/11(月) 15:08:56ID:irDGLGstcheckdate($month,$day,$year)
0144nobodyさん
2007/06/11(月) 15:14:43ID:eaoXxzlR>windowsディレクトリにini入れることが間違ってる
え?そうだったっけ?
俺の環境ではうまくいってますけど・・・
0146nobodyさん
2007/06/11(月) 15:30:13ID:RNtXLFSdありがとうございます
できました
0147nobodyさん
2007/06/11(月) 15:47:03ID:???1)[my.cnf]にlower_case_table_names=1 で起動してみる。 ただレンサバだと無理か?
2)mysql_query($sql) のラッパーを作って、そこで テーブル名を小文字に置換する処理を書く
3)dbのダンプファイルをmysqldumpで吐き出して、テーブル名を大文字に書き換える 。なんだかんだ言って一番楽か
4)一括で、ソース内を置換する。sed awkとかわからんなら、GrepReplaceとかのwindows用置換ソフト使ってみる。
のどれかか
0148nobodyさん
2007/06/11(月) 16:15:17ID:22t8rr67JpGraphじゃこんな細密なグラフは無理じゃまいか?
JpGraphってexcelのグラフみたいな大味なのしかできまい?
0149nobodyさん
2007/06/11(月) 16:16:39ID:???0150リガルド
2007/06/11(月) 17:06:50ID:Aub30YN1もしよければ教えてください。
0151nobodyさん
2007/06/11(月) 17:10:36ID:uKFByx/1aaa.htmlみたいにhtmlファイルじゃないとSEOには向かないのでしょうか?
2.PHPスクリプトでhttp://hogehoge.com/hoge.php/aaa.htmlでアクセスしてきたら
hoge.phpでaaa.htmlを出力するのもSEOには向いてますかね?
いま会社のホームページを個人でSEOやるんですが、PHPで構築するべきか悩んでおります。
どなたかご指摘ください。よろしくお願いいたします
0152nobodyさん
2007/06/11(月) 17:16:20ID:???好きなの探せば
ttp://www.google.co.jp/search?num=30&hl=ja&lr=lang_ja&safe=off&rlz=1B3GGGL_jaJP210JP210&pwst=1&q=php+%E6%8E%B2%E7%A4%BA%E6%9D%BF+%E4%BD%9C%E6%88%90&suggest=0&sa=X&oi=cjkrefinements&ct=result&cd=1
0153nobodyさん
2007/06/11(月) 17:17:11ID:HEK1r48rforeach ($a as $b => $c) {
print "$b と $c\n";
}
$abc = <<<ABC
ABC;
print部分を$abcdの中でループさせたいんですが、調べてみても方法がわかりませんでした。
下らない質問で恐縮ですが、どなたか宜しくお願いします・・・
0155nobodyさん
2007/06/11(月) 17:21:03ID:???ワシのJpGraphは百八式まであるぞ
http://www.asial.co.jp/jpgraph/examples.php
0158nobodyさん
2007/06/11(月) 17:28:57ID:???.phpをはじく検索エンジンはない。だからPHPで問題ない。
特定アドレスで何を表示させるかだけ気にすればいい。
リダイレクトだとかは、物によっては減点される。
っていうか、そういうのがわからない人はSEOしようとするだけ逆効果。
0159153
2007/06/11(月) 17:39:56ID:HEK1r48rすみません、$abcdじゃなくて$abcでした。
<?php
$kore = array('1' => 'abc', '2' => 'def', '3' => 'ghi');
foreach ($kore as $sore => $are) {
print "$sore と $are \n";
}
print = <<<ABC
<body>
なんか文字
<div>
ここに表示させたい
</div>
なんか文字
</body>
ABC;
?>
foreachのカッコ外に書くとループされなくて困ってます
日本語不自由で本当にすみません・・
0160リガルド
2007/06/11(月) 17:42:00ID:Aub30YN10161nobodyさん
2007/06/11(月) 17:43:21ID:???$sth = $pdo->query($sql);
とやると$sthにはPDOStatementオブジェクトが返されるのですが
例えば結果セットが0だったとしても同じオブジェクトが返されます。
その場合、foreach内とかで結果があるかどうか判断するしかないのでしょうか?
例を以下に書くと
foreach($pdo->query($sql) as $value){
$result = true;
}
if(!$true) exit;
と、書くのはあまりスマートじゃない気がするのですが…
0162161
2007/06/11(月) 17:43:47ID:Qju5bIjI0163nobodyさん
2007/06/11(月) 17:44:07ID:???print = <<<ABC
<body>
なんか文字
<div>
ABC;
foreach ($kore as $sore => $are) {
print "$sore と $are \n";
}
print = <<<ABC
</div>
なんか文字
</body>
ABC;
0165nobodyさん
2007/06/11(月) 17:47:43ID:Qju5bIjIそうしようと思ったのですが、var_dumpで見ても全く同じなので困っているのです。
0166nobodyさん
2007/06/11(月) 17:49:24ID:???下記の例1745をどうぞ。
http://jp.php.net/manual/ja/function.PDOStatement-rowCount.php
0167nobodyさん
2007/06/11(月) 17:51:03ID:Qju5bIjIなるほど、大変参考になりました。
ありがとうございます。
0168nobodyさん
2007/06/11(月) 18:18:51ID:???<?php
$kore = array('1' => 'abc', '2' => 'def', '3' => 'ghi');
function hoge($kore){
foreach ($kore as $sore => $are) {
print "$sore と $are \n";
}
}
?>
<body>
なんか文字
<div>
<?php
hoge($kore);
?>
ここに表示させたい
</div>
なんか文字
</body>
0169nobodyさん
2007/06/11(月) 18:27:32ID:NlNPG8R0if($fp >= 1) {$on1="1";}else {$of1="1";}
include("ks2\sm.php");
if($fp >= 1) {$on2="2";}else {$of2="2";}
でループを作るため変数で数字を変えようとしたのですが
include("ks○\sm.php");
if($fp >= 1) {$on●="○";}else {$of●="○";}
○の部分は変数で指定する事が出来たのですが●の部分を
変数で指定する事ができません、つまり
$a=1; としたときに
include("ks$a\sm.php");
if($fp >= 1) {$on$a(ここと)="$a";}else {$of$a(ここが指定できない)="$a";}
$on1と$of1の中身に値を入れることができない
どうすればうまく行くのでしょうか・・・
こんな質問で恐縮ですが、どなたか宜しくお願いします
0170nobodyさん
2007/06/11(月) 18:30:25ID:???2.可変変数を使う
オススメは1
0172nobodyさん
2007/06/12(火) 02:33:14ID:UZQhzfQfpreg_match('/<textarea(.*)name="after"(.*)>(.*)<\/textarea>/s',$str,$match);
としたのですが、何もマッチしませんでした。
HTMLに色々あって、name="after"のテキストエリアがあるのですが、
どのようにマッチさせれば良いのでしょうか?
0173172
2007/06/12(火) 02:48:13ID:UZQhzfQfで事故解決しました
0175nobodyさん
2007/06/12(火) 07:08:37ID:???<?php
$hyouji = "";
$kore = array('1' => 'abc', '2' => 'def', '3' => 'ghi');
foreach ($kore as $sore => $are) {
$hyouji .= "$sore と $are \n";
}
print <<<ABC
<body>
なんか文字
<div>
$hyouji
</div>
なんか文字
</body>
ABC;
?>
0176nobodyさん
2007/06/12(火) 11:45:43ID:PUVkyguwstaticで宣言されたメソッド、プロパティなどは、オブジェクトではなくクラスの持ち物と書いてあります。
Circleクラスを定義します。その中に public static $color; というプロパティ宣言と
public static functions setColor($color); public function getColor(); public __get($prop)というメソッドを定義します
そして オブジェクト生成で$redCircle = new Circle();とします。
そうすると$redCircle->getColor()とするとプロパティは存在しない(static宣言されているのでオブジェクトの持ち物ではないから)
とちゃんとなるんですが、static宣言したメソッドsetColorは使用できてしまいます。
$redCircle->setColor($color);とすると$colorプロパティに値が設定されてしまいます。
ちなみに __call($func, $param)メソッドを定義してみてもエラーメッセージは表示されませんでした。
なぜ、static宣言された、プロパティの場合だとオブジェクトの持ち物ではないことになり(プロパティを使用できない)、
メソッドの場合だとオブジェクトの持ち物になってしまう(メソッドをしようできる)ことになってしまうのでしょうか?
冒頭にも書きましたが、static宣言されたプロパティ・メソッドはクラスの持ち物だと書かれています。
static 宣言されたメソッドがオブジェクトから使用できるのが納得できませんし、ましてや$colorプロパティをその中で
使っています。全然、理解できません。。お願いします。
0177176
2007/06/12(火) 11:48:18ID:PUVkyguwもう、ワケワカメです。(-人-)分かる人、お願いします。
0178nobodyさん
2007/06/12(火) 11:51:48ID:???そいういうものだとしかいいようがないな。なんか一貫性がなかったり
間違ってるように思えるのはPHPを作った奴が(ry
0180nobodyさん
2007/06/12(火) 11:59:49ID:tW89iOYPメールのあて先などと同じ書き方
ホゲホゲ<hoge@>などの記載がある場合に
メールアドレスの部分もきっちり削除されてしまって
困っています
strip_tagsの機能はそのままに上記のような書き方の場合のみ
strip_tagsを適用しないようにするにはどのようにしたらいいのでしょうか?
0181176
2007/06/12(火) 12:07:56ID:PUVkyguwどうもありがとうございます。そういうものと割り切ります。
>>179
すみません。長文で。。コードを次に載せます。
0182176
2007/06/12(火) 12:09:15ID:PUVkyguw// クラスプロパティ、クラスメソッドを持つクラス
class SameColorCircle {
// クラスプロパティ
public static $color;
public function __call($func, $param) {
echo "$func は存在しないメソッドです\n";
}
// クラスメソッド
public static function setColor($color) {
self::$color = $color;
}
// オブジェクトのプロパティチェック
public function __get($prop) {
return "$prop というプロパティは存在しません";
}
// クラスプロパティの色を返す
public function getColor() {
return self::$color;
}
}
0183176
2007/06/12(火) 12:10:55ID:PUVkyguw$redCircle = new SameColorCircle();
$redCircle -> setColor("red");
// 赤い円の色を調べる
print("オブジェクトのプロパティ = {$redCircle->color}\n");
print("色は = {$redCircle->getColor()}\n");
$blueCircle = new SameColorCircle();
$blueCircle -> setColor("blue");
print("redCircleの色は = {$redCircle->getColor()}\n");
print("blueCircleの色は = {$blueCircle->getColor()}\n");
var_dump($redCircle);
var_dump($blueCircle);
?>
0184nobodyさん
2007/06/12(火) 12:12:57ID:???<hoge@example.com> なんつー記述があるファイルはそもそも正しいHTMLとは言えなくない?
正しくない入力だから正しくない出力がでるのはこれは当り前。
<>を実体参照にするか、strip_tagsの第二引数を使うかどっちかじゃないかな。
0185nobodyさん
2007/06/12(火) 12:20:56ID:tW89iOYPすみません自己解決できました
メール云々以前にタグがありそれで消えていました
ありがとうございます
0187nobodyさん
2007/06/12(火) 13:03:57ID:???0188nobodyさん
2007/06/12(火) 13:19:56ID:???待て待て普通は使えんぞ。
クラスメソッドはインスタンスメンバを操作出来ないんだから
インスタンスからアクセスする必要性もない。
0189nobodyさん
2007/06/12(火) 13:50:16ID:T005GIRYすべてのデータは直リンク防止のため、ファイルをpublic_html以上のディレクトリに置き、
DBにてナンバーと画像形式を保管して管理して出力はPHPファイルからの出力としているのですが、以下の点で悩んでおります。
ユーザーが画像庫のファイルを削除する際、削除ボタンを押したらその処理として該当のDBのデータ・画像ファイルを消去するのと
削除フラグをオン(表示できないように)にしておいて画像ファイルは定期的にCRONで削除するのではどちらが一般的(ユーザビリティの面でも)で良いでしょうか?
0190176
2007/06/12(火) 13:55:42ID:PUVkyguwこういうものだと思って、進めていきます。ちょっと違和感がありますね。
0192nobodyさん
2007/06/12(火) 14:21:51ID:T005GIRYレスありがとうございます。
私の考えになるのですがメリット・デメリットはこんな感じになるかと思います。
その場で削除する場合
デメリットはユーザーに多少の時間ロスを強いることになる(一気にたくさん消す場合は特に)
メリットは私が不得意なCRONを使う必要がないw
また、全体的には負荷の均一化ができるかも…
CRONで消す場合
メリットはユーザーに最小限の時間ロス
また、「間違えて消した」等のトラブルに対応できる
デメリットは
いっぺんに消す時間帯は負荷によりユーザーに負担
CRONをしっかり勉強する必要がある(楽しみでもあり、鬱でもあり)
0193nobodyさん
2007/06/12(火) 14:30:23ID:???「誤って削除してしまったのだが、復活しろ」 とか言うユーザがどの程度居るかによる と思う。
削除する時に、復活出来ない旨を同意させておいて、速攻unlinkでもいいような気がするが。
0194nobodyさん
2007/06/12(火) 14:31:04ID:LvjJxiWSでもformから予を送信してechoで$_POSTの中の予を表示させたらちゃんと画面で出力されるんです。
この違いがわかりません
0195nobodyさん
2007/06/12(火) 14:37:56ID:???0196nobodyさん
2007/06/12(火) 15:01:14ID:wlBONLAGosCommerceというショッピングカートを利用しようとしています。
商品内容の登録項目数が少ないので、追加したいのですが、こういう質問はどこでしたら良いでしょうか?
または、「このサイトを見ろ!」的な回答があればお願いします。
https://sourceforge.jp/projects/tep-j/forums/
こちらのサイトは見ましたが、うまく発見できず、同じような質問が過去にあったのですが、レスが付いていませんでした。
以上、誘導その他お願いします。
0197nobodyさん
2007/06/12(火) 15:10:23ID:???0198nobodyさん
2007/06/12(火) 15:23:41ID:???0199nobodyさん
2007/06/12(火) 15:30:49ID:???スレ違い。あと、自分で検索で見つけられない位なら、
osCommerceのソースを解析して改造するのは厳しいと思った方がいい。金払って外注した方がいいかと。
0200nobodyさん
2007/06/12(火) 15:34:26ID:r99QbufCif (!@opendir(./datadir/)) {
mkdir ("./datadir/", 0700);
}
とやればいいらしい所までたどり着いたのですがopendir関数は、
closedir関数とセットで使わないといけない気がしているんです(fopenとfcloseのノリ)
↑が質問の内容
ひょっとするとこのコードはディレクトリの存在を確認(なければ作成)するためだけにあるのでしょうか?
ここを参考にしました
ttp://www.google.com/codesearch?hl=en
ttp://wspri.dip.jp/index.html?mainframe/main/php/howto/file.html
0202nobodyさん
2007/06/12(火) 15:47:10ID:r99QbufCディレクトリがないときは作りたいのですが
作るとclosedirを使わないといけないのか? というのが質問の趣旨なんですけど
0203nobodyさん
2007/06/12(火) 15:52:04ID:???is_dir()を使うべき所でopendir()を使う必要がない。
mkdir()でディレクトリハンドルは開かない。
0204nobodyさん
2007/06/12(火) 16:01:40ID:r99QbufC<?php
$dir = "/etc/php5/";
// 既知のディレクトリをオープンし、その内容を読み込みます。
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
?>
知りたいのはディレクトリが存在しないとき作成する方法
>>203
ディレクトリハンドルはopendirで開いてないか? という質問なんですが
0205nobodyさん
2007/06/12(火) 16:05:31ID:???0206nobodyさん
2007/06/12(火) 16:09:02ID:???開かない、falseが戻ってくる。つうかそこまでわかっているなら
ttp://jp.php.net/manual/ja/function.opendir.php
の戻り値をまず見てみろよ
0207nobodyさん
2007/06/12(火) 16:12:06ID:r99QbufCでもみんなサンクス
0208nobodyさん
2007/06/12(火) 16:14:20ID:???だから存在しなければ作るには
if(is_dir($dirpath)) mkdir($dirpath);
とするべきで、そのopendir()の使い方は規格外だから、
ディレクトリを閉じる閉じないで悩む必要はないと言ってるんだが。
存在するディレクトリにopendir()を使って閉じない場合は(変数に保持しなくても)
スクリプトの終了まで開きっぱなしになるがな。
0209208
2007/06/12(火) 16:19:17ID:???if(is_dir($dirpath)) mkdir($dirpath);
↓
if(!is_dir($dirpath)) mkdir($dirpath);
な。
0210nobodyさん
2007/06/12(火) 16:19:44ID:r99QbufC把握
0211nobodyさん
2007/06/12(火) 16:27:36ID:???mkdir($dirpath, 0777, true);
ってやっても同じことができるけどね
0212nobodyさん
2007/06/12(火) 16:43:05ID:???それはパス中のディレクトリが存在していなくても全てのディレクトリを作るためのオプションで
ディレクトリが存在しないときだけ作るオプションではないが。
0213nobodyさん
2007/06/12(火) 16:44:29ID:???0214nobodyさん
2007/06/12(火) 16:57:59ID:???全然同じことじゃない。
第3引数trueで行うのは作成先の上位ディレクトリが存在しない場合でもその上位ディレクトリを全て作ること。
作成するディレクトリ(第3引数trueでは最下層ディレクトリ)が存在する場合はどのみちエラーになる。
0215nobodyさん
2007/06/12(火) 17:29:36ID:???0216nobodyさん
2007/06/12(火) 17:38:57ID:???あースマソ
mkdir -p と同じ意味かと勘違いしてた
上位ディレクトリを作るかどうかは、ここではどっちでもいいと思うけど
2段階以上存在しないディレクトリ作るなら、is_dirでfalse返った後のmkdirも失敗するし
0217nobodyさん
2007/06/12(火) 17:49:09ID:1K2o2XiZaddRuleで以下の条件はどうやって記述すればいいですか
項目usernameはDB内に重複してはいけない
項目usernameはドット(.)を使用してはいけない
お願いします
0218nobodyさん
2007/06/12(火) 19:17:34ID:???if(!is_dir($path)) mkdir($path,0755,TRUE);
が最強ということだね。
0219nobodyさん
2007/06/12(火) 21:24:26ID:???>項目usernameはDB内に重複してはいけない
独自ruleをつくれ
>項目usernameはドット(.)を使用してはいけない
regex使え
0221nobodyさん
2007/06/12(火) 22:00:52ID:???考えてみたが必要なくね?
dirってディレクトリが存在しなく、dirというファイルが存在する場合に
mkdirでdirというディレクトリ生成してもファイルには何も影響ないと思うんだが
0222nobodyさん
2007/06/12(火) 22:11:40ID:???厳密にいうと、そうかもしれんが、そもそもそういう状態になってしまっている段階で、
ソースの設置ミス or 予約領域の名前と同名のファイルがユーザ側で作成できてしまう
というバグにあたるから、この部分では不要に思えるけどね。
■ このスレッドは過去ログ倉庫に格納されています