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

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

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

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 93
http://pc11.2ch.net/test/read.cgi/php/1266229386/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0581nobodyさん2010/04/03(土) 13:50:07ID:???
>>580
なんでtrueになるんですか?
0582nobodyさん2010/04/03(土) 16:17:13ID:???
真実を述べてるから
0583nobodyさん2010/04/03(土) 18:45:24ID:???
>>581
"hoge" は数字にすると0(数値に相当するものが入ってない)だから。
$hogeに数字が入ってると、自動的に数値で比較してくれる便利機能がついてる。

警告の一つも出してくれりゃいいのになぁ。
0584nobodyさん2010/04/03(土) 22:10:28ID:???
<img src="(画像ファイルへのパス)">

のように画像を開くときは画像ファイルへのパスを指定する必要があるわけですが
絶対パス(realpath()で得られるパス)は受け付けてくれません。

代わりにドキュメントルートからのパス(多くの場合はpublic_htmlから)を指定する必要があるわけですが

 /zettai/path/public_html/pic/1.gif

のように絶対パスで与えられているファイル名をドキュメントルートからのファイル名

 /pic/1.gif

に変えるにはどういう方法を使えばいいでしょうか?
0585nobodyさん2010/04/03(土) 23:17:14ID:???
文字列からドキュメントルートからのパスを切り取るというのはどうか
0586nobodyさん2010/04/04(日) 01:01:02ID:???
相対パス求めるアルゴリズム作ってたらなぜか絶対パス求めるアルゴリズム考えてたわw
しかも>>55でもうやってるしwせっかく作ったんだし公開しておこう
http://ideone.com/QMVoQhKL
0587nobodyさん2010/04/04(日) 11:32:33ID:VKZUtm2V
【OS名】FreeBSD 7.1-RELEASE-p10 i386
【PHPのバージョン】PHP 5.2.12
【連携ソフトウェア】
【質問内容】
(sakuraレン鯖使用です)

ttp://www.abe-tatsuya.com/web_prog/php/mail2php.phpのサイトを参考にして
メールを受信してtwitterに投稿するPHPを作っています。

受信したものをそのまま投稿するのは上手くいくのですが、
アドレスに応じて名前を追加しようとするとうまくいきません。
(というより別関数で本文に内容を付加するのがうまくいかないです。)

原因は何でしょうか?
(使用しているファイルを次に投稿します)
0588nobodyさん2010/04/04(日) 11:40:00ID:VKZUtm2V
>>587の続きです
[.mailfilter]
to "| /usr/local/bin/php -q /home/user/www/tweet/mail.php"

[mail.php]
<?php
#-- PEAR の Mail/mimeDecode.php を読み込む
require_once '../../pear/php/Mail/mimeDecode.php';
require_once("post.php");
require_once("xml.php");

#-- メールデータ取得
省略:参考サイト通りstdinで取得
#-- From フィールドの取得
$from = $mail_data->headers['from'];
#-- To フィールドの取得
$ToAddress = $mail_data->headers['to'];
#-- Subject フィールドの取得
$Subject = $mail_data->headers['subject'];
$Subject = mb_convert_encoding($Subject,"UTF-8","JIS");
#-- 本文の取得
$MailBody = $mail_data->body;
$MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS");
//アドレス処理はあとでやる
$fff = "mail";
$aaa = add_name($fff,$MailBody);

$MailBody = $MailBody.$aaa;
//twitter投稿
Post($MailBody);

?>
0589nobodyさん2010/04/04(日) 11:44:58ID:VKZUtm2V
さらに>>588の続きです。
連投スミマセン;;
改行が多すぎるって怒られました><

[xml.php]
<?php
function add_name($from,$body){
$xml = simplexml_load_file('document.xml');
foreach($xml->person as $person){
if($person->mail == $from ){
$body = $person->name . $body;
return $body;
}
}
}
?>

[document.xml]
<?xml version='1.0'?>
<data>
<person>
<mail>mail</mail>
<name>たろう</name>
</person>
</data>
0590nobodyさん2010/04/04(日) 18:50:22ID:z61eZwKM
add_name()の返り値は確認したのか?
0591nobodyさん2010/04/04(日) 19:51:07ID:???
戻り値?返り血?
0592nobodyさん2010/04/04(日) 20:06:00ID:???
いきなりmb_convert_encodingしてるが、
本当に JIS なのか?
mb_language('uni'); // unicode
とかになってないかい?
ちなみに、mb_detect_encoding では正しく JIS が判断できないよ。
バグじゃないけどね。
05935872010/04/04(日) 21:40:37ID:VKZUtm2V
お返事ありがとうございます

>>590
質問内容が悪かったですね(汗
メール送信したときに、add_name()など関数を使うと値が返ってきません。
mail.phpをブラウザで叩いたときは値が返ってきます(echoで確認しました)

>>592
文字コードはとりあえず文字化けしなかったのであんまり気にしていませんでした><
コンバートしなくても良いといいことですか??


0594nobodyさん2010/04/05(月) 06:07:53ID:uTolPHHQ
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

a.htmlからa.phpを呼び出しています。
a.htmlには、
<input type="checkbox" name="cb_op3" value="1">
とデフォルトでチェックがされていません。
a.phpでは、
$cb_op3 = $_POST['cb_op3'];
の様に参照しています。

チェックボックスがチェックされていない場合、
PHP Notice: Undefined index: cb_op3 in D:\htdocs\a.php on line XX
のようにPHP Noticeが出力されます。

これが出ないようにするには、どうすれば良いですか?
よろしくお願い致します。
0595nobodyさん2010/04/05(月) 06:53:11ID:???
>>594

$cb_op3 = (isset($_POST['cb_op3'])) ? $_POST['cb_op3'] : "";
0596nobodyさん2010/04/05(月) 06:58:11ID:uTolPHHQ
>>595
ご回答、ありがとうございます。
$cb_op3 = htmlspecialchars(@$_POST['cb_op3']);
とすることで、自己解決しました。
0597nobodyさん2010/04/05(月) 07:06:44ID:uTolPHHQ
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

phpのエラーをapacheのエラーログに出力したいのですが、
出来ません。
php.iniのerror_logには何も指定していません。
phpinfo()で確認すると、C:\WINDOWS\temp\php-errors.logとなっています。
試しに、
error_log = "L:\logs\php.log"
error_log = "L:\\logs\\php.log"
等を指定しても、
phpinfo()で確認すると、C:\WINDOWS\temp\php-errors.logと変わりません。

知っている方、よろしくお願い致します。
0598nobodyさん2010/04/05(月) 07:37:57ID:???
>>597
phpinfo() の Loaded Configuration File と別の php.ini を書き換えたりしてない?
0599nobodyさん2010/04/05(月) 07:51:41ID:uTolPHHQ
php.iniをよく見たら、

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
の項に
error_log="C:\WINDOWS\temp\php-errors.log"
の記述が。。。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
の項の
error_log = filename
ばかり変更していました。


でも、紛らわしいよ。。。



ありがとうございました。
0600nobodyさん2010/04/05(月) 22:18:52ID:afFcX18l
【OS名】FreeBSD
【PHPのバージョン】php5.10
【連携ソフトウェア】なし
【質問内容】
csvでやっていた処理を、拡張性を見据えてxmlにしようと思って実験中ですが、疑問ができたので質問させて頂きます。
SimpleXMLElementを使っているのですが、
これは読み出し及び項目追加には便利だとは思います。
しかし、<data></data><data></data>などの配列化した項目を消したりしようとすると途端に不便になりました。
こういうものなのでしょうか?
popやshiftに相当するものを使用し、最後にasXMLで書き出せるというのが理想なのですが、
一度全部読み出し、もう一つオブジェクトを生成し、そちらにプロパティを移して新しいオブジェクトから書き出す
というのはどうも違和感があります。
0601nobodyさん2010/04/05(月) 22:23:23ID:???
$xml = simplexml_load_file($filepath);
foreach($xml->hoge as $foo){
 if ($foo->updatedate+(24*60*60) < time()){
  $foo = null;
 }
}
$xml->asXML($filepath);
例えばこういった組み方をすると、空のゴミタグが残ってしまいますが、ゴミタグも消したいのです。
何か代換手段は無いものでしょうか
0602nobodyさん2010/04/05(月) 22:29:17ID:afFcX18l
すいません。>601age忘れました

現在はこうやっていますが、最初のnewxmlの定義が面倒です

$xml = simplexml_load_file($filepath);
$newxml = new SimpleXMLElement("<?xml version='1.0' ?>\n<root></root>");
$newxml->addChild("bar1",$xml->bar1);
$newxml->addChild("bar2",$xml->bar2);
$newxml->addChild("bar3",$xml->bar3);

foreach($xml->hoge as $foo){
 if ($foo->updatedate+(24*60*60) >= time()){
  $newxml->addChild("hoge",$foo);
 }
}
$newxml->asXML($filepath);
0603nobodyさん2010/04/05(月) 22:30:47ID:afFcX18l
実際にはhogeの部分も階層化させるため、もっと複雑な処理になります。
0604nobodyさん2010/04/05(月) 22:36:54ID:???
【OS名】何でも
【PHPのバージョン】php5.3
【連携ソフトウェア】sqlite3
PHP5に標準搭載されているSQLite3 拡張モジュールで質問です。
close()は必須なのでしょうか? たとえば
$db = new SQLite3("hoge.sqlite");
try {
 $result = $db->query("select ...");
 $row = $result->fetchArray();
 return $row["hoge"];
} catch (Exception $e){
 die();
}
$db->close();
なんていうサンプルを時々見かけますが、これって僕のPHP文法の
理解が正しければclose();は通りませんよね?また
$db = new SQLite3("hoge.sqlite");
try {
 $result = $db->query("select ...");
 $row = $result->fetchArray();
 $hoge = $row["hoge"];
 $db->close();
 return $hoge;
} catch (Exception $e){
 die();
}
だったとしても例外時にはclose()されませんよね? これは
} catch (Exception $e){
 $db->close();
 die();
}
とかいちいちやるものなんでしょうか?
0605nobodyさん2010/04/05(月) 22:58:06ID:???
デストラクタと言うものがあってだな
不要になったときに自動で解放される
0606nobodyさん2010/04/05(月) 23:08:13ID:???
>>605
ということは明示的にcloseしたい理由がなければ放置でもOKってことですか?
上記の例では1番は論外としても2番か、それか記述せずでもOKと?
0607nobodyさん2010/04/06(火) 00:32:21ID:???
実行が終わる直前や

$db = new SQLite3("hoge.sqlite");
たとえばこの変数に
$db = null; とか
$db = array(); とか
$db = new SQLite3("hoge.sqlite"); とか
のように上書きしてしまってもう使えなくなってもデストラクタが動く
0608nobodyさん2010/04/06(火) 00:34:24ID:???
なるほど。じゃあ実質不要ですね。気にしないことにします。
サンクス。
0609nobodyさん2010/04/07(水) 02:22:36ID:DRQlFq+M
フォームからの情報を受け取りたいのですが
urldecodeは必要ですか?
$_GET[] の時点で既にurldecodeされてるのでしょうか?
0610nobodyさん2010/04/07(水) 02:59:21ID:???
<?php
echo print_r($GET);
?>
してみなよ
0611nobodyさん2010/04/07(水) 03:12:56ID:???
やってみます
0612nobodyさん2010/04/07(水) 06:13:24ID:dfs6oC5W
function checkCookie(){
if($_COOKIE['checkCookie']){return 1;}
else{
$expire = time() + 86400*14;
if(setcookie("checkCookie",time(),$expire)){return 1;}
else{return 0;}
}
}

このような関数を作ってクッキーが有効かチェックしたいのですが、オフにしても0が帰ってこないようです。
原因わかりますか?
0613nobodyさん2010/04/07(水) 06:17:39ID:???
>>612
if(setcookie("checkCookie",time(),$expire)){return 1;}
ブラウザの設定でOFFにしてもサーバから送信は可能だから
ここがとりあえず成功しちゃうんだと思われる

0614nobodyさん2010/04/07(水) 06:27:00ID:dfs6oC5W
>>613
ありがとうございます。
ということは、
セットする→セットしたクッキーが存在するか否か
という処理だと行けるってことですよね?
0615nobodyさん2010/04/07(水) 06:32:37ID:???
>>614
一度の処理中での確認はできない
一回送信して次回のリクエストで帰ってくるかどうかでのチェックが必要。

俺がたまにやるのは、ページでセットして、JSでチェックする

index.php
<?php
setcookie("checkCookie",time(),$expire);
?>
<html>
<head>
<script type="text/javascript" src="check_cookie.php"></script>
</head>
</html>

check_cookie.php
<?php
if (!isset($_COOKIE['checkCookie'])) print "alert('no cookie!')";
?>
0616nobodyさん2010/04/07(水) 06:39:12ID:dfs6oC5W
>>615
わかりました。
さんくすです
0617nobodyさん2010/04/07(水) 07:56:30ID:3KWYoUnh
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

php5.2.13に対応しているeAcceleratorのバイナリを配布しているサイトはありますか?
0618nobodyさん2010/04/07(水) 08:03:06ID:???
試してないけど
http://www.sitebuddy.com/PHP/Accelerators/eAccelerator_windows_binaries_builds
「eAccelerator 0953 for PHP 5.2.10」とかでいいんじゃないかな
0619nobodyさん2010/04/07(水) 12:05:21ID:qoBEK7gJ
指定したURLに何秒後かに飛ばすことは出来ますか?
0620nobodyさん2010/04/07(水) 12:12:46ID:???
>>619
5秒後にnext.htmlへ飛ばす
header( 'refresh: 5; url=next.html' );

ちなみにHTMLのタグでも可能
<head>
<meta http-equiv="refresh" content="5;URL=next.html">
</head>
0621nobodyさん2010/04/07(水) 12:28:57ID:???
headerはブラウザの設定により飛ばないからmetaの方が良いかも
0622nobodyさん2010/04/07(水) 12:37:23ID:qoBEK7gJ
ありがとうございます。metaでやってみます
0623nobodyさん2010/04/07(水) 13:29:34ID:3KWYoUnh
>>618
5.2.13に対応していますか?
0624nobodyさん2010/04/07(水) 13:45:29ID:???
>>623
わからないから>>618は無視してくれ、すまんな
0625nobodyさん2010/04/07(水) 14:33:07ID:W7cZb24v
掲示板の書き込み確認画面で書き込み内容を表示するときは改行文字を<br>にして表示します。
同意して書き込む際に、hiddenで送る内容ですが、仕様上<br>などのタグをhiddenに含めるとエラーに成ります。
なので、hiddenには<br>などで置換していない状態の書き込みを入れたいのですが、この場合、改行文字がhtmlソースで働いてhtmlソースが乱れてしまいます。
何かで改行文字を置換したいのですが何がいいでしょうか?2chの場合「?」で置換されているようです。
0626nobodyさん2010/04/07(水) 14:47:15ID:???
<input type="hidden" value="aaa

bbb">
みたいな感じでそのままでもいいと思うけど、どうしても変えるなら

<input type="hidden" value="aaa\n\nbbb">
とかかな
0627nobodyさん2010/04/07(水) 14:50:15ID:W7cZb24v
>>626
2chの改行文字の&#10;は全角のはてな。
全角のはてなだったら問題ないですね!
これでいきます。
0628nobodyさん2010/04/07(水) 14:52:19ID:???
全角のはてなの入った文はどうするの?
0629nobodyさん2010/04/07(水) 15:06:59ID:W7cZb24v
改行文字を&#10;で置換して、それをhiddenに入れる。
↓
&#10;を<br>に置換する。

全角のはてなを「&#10;」の実体表記で書かれる、それは&amp;#10になるはず・・・
0630nobodyさん2010/04/07(水) 15:45:55ID:OLVUqXLt
header("Location: ./test.php");
で飛ばす時に一緒にPOSTで値などを渡したりする方法はありますか?
0631nobodyさん2010/04/07(水) 15:46:59ID:???
セッション使えセッション
06326302010/04/07(水) 16:04:23ID:OLVUqXLt
>>631
ありがとうございます。
携帯でもセッション使えるかどうか試してみます。
06336302010/04/07(水) 17:11:09ID:OLVUqXLt
先ほど質問したばかりなんですがすんません。
#index.php
session_start();
$_SESSION['riremito']='ばしるーら';
header("Location: ./test.php");

#test.php
session_start();
echo $_SESSION['riremito'];
としているのに表示されないのですが、書き方間違ってますでしょうか?
0634nobodyさん2010/04/07(水) 17:16:17ID:3KWYoUnh
>>624
いいえ、ありがとうございます。
0635nobodyさん2010/04/07(水) 17:22:16ID:???
>>633
携帯ならsession.use_trans_sidで検索
0636nobodyさん2010/04/07(水) 17:33:46ID:3GsFBU25
mb_regex_encoding("UTF-8");
if(mb_ereg( "[a-z]*",$string))
てすると全部TRUE返ってくるんですが
アルファベットのみの文だけ拾いたいのです
NoEditorというエディタだと拾ってるんですが
どういう事なんでしょうか?
0637nobodyさん2010/04/07(水) 17:41:14ID:???
>>636
0文字の[a-z]にマッチする
0638nobodyさん2010/04/07(水) 18:01:53ID:???
ありがとう*
0639nobodyさん2010/04/08(木) 01:08:32ID:bQ9+sypi
みなさんこんばんは

外部サイトの画像をリサイズしてキャッシュして表示する
スクリプトかAPIのようなものを探してるんですが、
探してる途中にgoogle app engineで作ったと思われる
以下のようなもの(image-resize.appspot.com)を発見いたしました。
ttp://groups.google.co.jp/group/google-appengine/browse_thread/thread/56ba9c4e8fa23d4a

これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
ちなみに当方英語は読めません
0640sage2010/04/08(木) 09:23:03ID:???
せめて翻訳サイトで見てみるくらいしてみろよ
06416252010/04/08(木) 09:41:24ID:L4uu4ArY
昨日、掲示板の改行文字の件で質問したものですが&#10;ではうまくいきませんでした。
なにか他の考え方がある方はいますでしょうか?
0642nobodyさん2010/04/08(木) 09:51:26ID:???
>>641
改行文字を変換する理由はなに?
0643nobodyさん2010/04/08(木) 09:59:22ID:L4uu4ArY
>>641
調べてみたら「&#10;」って改行文字だったんですね。
2chに書くと全角のはてなになったので勘違いしてました。

2chのように、
フォームから入力してPOSTで送信
↓
確認画面
↓
書き込み

という仕組みなんですが、確認画面で表示するのは改行文字を<br>に置換しますが、書き込み用にhiddenに入れるのを
<br>で置換するとサーバー側の仕様(タグの受信がNGなのです)でエラーを吐いてしまいます。
0644nobodyさん2010/04/08(木) 10:06:18ID:???
>>643
だからhiddenに入れるのをなんで<br>に置き換える必要があるの?
0645nobodyさん2010/04/08(木) 10:08:00ID:???
釣りじゃないの?
0646nobodyさん2010/04/08(木) 10:09:44ID:L4uu4ArY
>>643
hiddenにいれるのが\nのままだとhtmlソースに変な改行が入ってしまうのが気になってるからです。
0647nobodyさん2010/04/08(木) 10:13:24ID:???
つ php エスケープ
0648nobodyさん2010/04/08(木) 10:59:42ID:???
>>646
試してないけど\nを\\nに置き換えればいけるかも

//変換
$text = strtr($text, array("\\" => "\\\\", "\n" => "\\n"));
print $text;

//復元
$text = strtr($text, array("\\\\" => "\\", "\\n" => "\n"));
print $text;

ただ置き換えたい理由を未だ理解できない・・
0649nobodyさん2010/04/08(木) 11:30:09ID:???
<br>にしたままでいいから、 hiddenのとこに書き出すのは  htmlspecialchar かけて。

0650nobodyさん2010/04/08(木) 12:07:50ID:???
それだと2重になるからだめじゃない?
0651nobodyさん2010/04/08(木) 12:12:27ID:bQ9+sypi
>>640
翻訳ぐらいしてるわボケ
お前はコードまで一緒に訳される機械翻訳で意味分かったのか?
0652nobodyさん2010/04/08(木) 12:22:38ID:???
>>646
htmlに余計な改行が入ってソースが気になるなら、そもそもがhiddenなんかに持たせずにphpのsessionに保存すれば?
どうせ、確認画面で表示だけだと値をpost出来ないからhiddenに持たせようとかそんな程度の話でしょう?(勝手な妄想だから、違っても気にするな)
textareaタグを使って、見た目をただの表示っぽく調整するとか、方法はいろいろあると思うけどね。

やりたい事の実現方法案を自分で決めてしまって、その案に対しての技術的な質問をしてもなかなか解決しない場合があるよ。
何のためにhiddenで値を保持しようとしているのか、まずはそこから話さないとアドバイスしにくいんじゃね?
0653nobodyさん2010/04/08(木) 12:25:35ID:???
そういうのにSIDを使いまわすのが理想的なのかは個人による。
たぶんやりたいのは投稿内容の確認画面ではないかとエスパー。
0654nobodyさん2010/04/08(木) 12:27:24ID:???
>>651
640じゃないが、機械翻訳したうえで、オリジナルサイトと両方見ながら読む努力しろよ。
コンピュータ用語なんてまともに翻訳できなくて当たり前なんだから。

そもそも、コードが翻訳された部分なんて、
>これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
こんなことを知るうえでは無関係な場所だから読む必要ないだろ。
0655nobodyさん2010/04/08(木) 12:59:45ID:bQ9+sypi
>>654
要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか?
プログラミングのプロのみなさんのコンプライアンス・ガバナンスの見地に基づいた意見を求めております
0656nobodyさん2010/04/08(木) 13:01:53ID:???
654を

>要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか?

こう解釈する奴では、何を教えて貰っても無駄だろ。
0657nobodyさん2010/04/08(木) 13:06:01ID:???
最近の開発者はコピペしまくりだものw
0658nobodyさん2010/04/08(木) 13:06:24ID:bQ9+sypi
雑魚の意見は求めてません
0659nobodyさん2010/04/08(木) 13:08:27ID:???
>>658
あ、わるい。
ずぼしだったんだねW。
0660nobodyさん2010/04/08(木) 13:09:35ID:bQ9+sypi
お前ら、聖人気取りで上から目線だけど
これは良いサイト教えてもらったわ
俺も使っちゃおうとか思ってないか?
とんでもない奴らだな・・・
0661nobodyさん2010/04/08(木) 13:17:38ID:???
>>660
他サイトキャプチャなんて過去スレで既出

本当に翻訳してるのか?
ライセンスにはGPLって書いてあるだろ
06626542010/04/08(木) 13:17:40ID:???
>>656
すげーガッカリです。
> コンプライアンス・ガバナンス
こんな言葉を使ってるくせに、ソースに使用条件が書かれてると思ってるやつの相手をした自分が馬鹿だったね。

>>657
それは開発とは言わん・・・けど
昔後輩として入ってきたやつもそんなことやってたな・・・・
で、一つの関数内で、一つの値を異なった変数名で扱って、まともな動作をしなかったり・・・・
プログラムに向いてない頭としか思わなかったけど。

0663nobodyさん2010/04/08(木) 13:23:27ID:fqmdAirf
質問です。

とあるPHPファイルをincludeして、その中で停止してあるクラスのインスタンスを取得したいとします。
(それを、2〜3回行います)

$name = 'hoge';
require_once($name . ".php");
$c = new $name; // ファイル名と、そのファイルで定義されているクラス名が同じというルールとします。

ただ、こうするとファイル名がかぶった時(別フォルダに、同じ名前のPHPファイルがある)に、クラス名が二重定義になってしまいます。
そこで次は、パスも含めるとします。

$name = 'hoge/are';
require_once($name . ".php");
$c = new str_replace('/', '_', $name); // スラッシュをアンダーバーに置換したものを、クラス名とします。

ただ、これをするとPHPファイルの配置場所が変わった時に、クラス名も変更する必要があり面倒です。
また、そもそもクラス名をいちいちルールにのっとって書かせるのも面倒くさがられるでしょう。

・無名クラスはつくれないのでしょうか?(調べた限り発見できず)
-------$name .php の中身---------
return class{
function hoge(){}
};
---こんな感じでインスタンスを返す---

・一度定義したクラスを、無効にすることはできないでしょうか?
クラス名を全て統一し、2度目、3度目のrequireの前に以前のクラス定義を無効化する

・クラス名を、ファイルパスなどから自動的に生成することはできないでしょうか?
class str_replace('/', '_', __FILE__){} のようなことはできませんでした
0664nobodyさん2010/04/08(木) 13:24:07ID:bQ9+sypi
>>661
>他サイトキャプチャなんて過去スレで既出
外部画像リサイズです。全然違います。

>ライセンスにはGPLって書いてあるだろ
それはコードのライセンスでしょ。
0665nobodyさん2010/04/08(木) 13:25:27ID:fqmdAirf
while('' != $name)
{
require($name . ".php");
$c = new $name;
$name = $c->run(); // 正常終了したら "" を返す。他のクラスに処理をおまかせしたかったら、そのクラス名を返す
}

こんな感じで使うことを想定しています。
0666nobodyさん2010/04/08(木) 13:26:04ID:???
>>660
お前の知識が乏しすぎるだけ。
そもそも、誰も上から目線じゃねーだろ。
お前が努力していないのを指摘してるだけ。

普通にそういうの理解してる連中は、読む努力、理解する努力をしてるの。
お前みたいに「英語嫁ねー」「機械翻訳よみずれー」なんて程度で「教えて」って騒ぐやつに細かく答えてたらきりがないんだよ。
0667nobodyさん2010/04/08(木) 13:28:43ID:bQ9+sypi
>>662
リソースとソースを勘違いしてないか?
俺が言ったのは「グーグルのリソース」でソースコードの事じゃないよ
0668nobodyさん2010/04/08(木) 13:29:06ID:???
ここはそういう奴もOKなスレではあるはずだけど

>・ 質問者として、態度をわきまえること。
これが読めない奴は消えろ
0669nobodyさん2010/04/08(木) 13:36:41ID:???
みんな熱くなって気づいてないけど
そもそもがPHPの質問でもない
0670nobodyさん2010/04/08(木) 13:37:48ID:bQ9+sypi
663さんが可愛そうなのでまた夜にでも来ます^^
663さんを一致団結して支えてください
それまでに俺の答えを用意しとくように
06716612010/04/08(木) 13:42:48ID:???
>>664
>>670
コード読んで無かった、すまんね。

http://image-resize.appspot.com/?url=http://image.gsfc.nasa.gov/image/image_launch_a5.jpg&width=200&height=200
このurl=の部分を変えてimage-resize.appspot.com上で動かすって意味か

そのURLはあくまでもサンプルで、それ用のAPIを公開しているわけではないから一般的にNG。
使い続けても平気かもしれないけど、そもそもそのサイトが存続する保証はないからやめとけ

他サイトの画像を取得してリサイズなんてphpで簡単にできる。
file_get_contentsで画像とってきてGDかimagemagickでリサイズかければいい
リサイズ部分は「class.image.php」とか使うとさらに楽
0672nobodyさん2010/04/08(木) 13:56:29ID:???
こんな奴に丁寧に答えること無いのに
0673nobodyさん2010/04/08(木) 16:15:03ID:???
お前ら煽りには全力で釣られるのに、真面目な質問は全スルーなのなwwww
0674nobodyさん2010/04/08(木) 16:38:25ID:???
>>663
クラスの名前とクラスのファイル名を結ぶところと
実際のクラスのインクルードしてインスタンスを返すクラスを作ったらどうですか。
あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。
0675nobodyさん2010/04/08(木) 17:18:57ID:fqmdAirf
>>674
レスありがとうございます。
ちょっとおっしゃっていることが理解できないのですが…。推測で。

ファクトリークラスを作ればよい。ということでしょうか。
それでも結局クラス名をユニークにする必要がありませんか?
どんな階層(includeした中でincludeされたファイルとか)でクラスが定義されても、結局グローバル空間で定義したのと同じ扱いになってしまうようなので。


>あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。
a/b_c.php
a_b/c.php

が同じになってしまうので、厳密には解決しませんね。
(ということですよね?)
0676nobodyさん2010/04/08(木) 17:21:47ID:???
モジュール処理などでループさせる時にそういう処理を考えるわ。
そういや、return new require class();でnew require($path);とか出来ないのだろうか、
あとで試してみよっと。
0677nobodyさん2010/04/08(木) 19:19:04ID:QzEBA4At
php+mysqlでの質問です。

mysql関数を使用し、使いやすく穴もないライブラリを作成したとします。

この状態でpdo_mysqlを使用する利点はありますでしょうか?

DBはpgsqlなどに変更せず、mysql一択とします。
0678nobodyさん2010/04/08(木) 19:34:57ID:???
>>677
PDOだとプリペアドステートメントによる2回目以降のキャッシュが期待できるくらいかな
0679nobodyさん2010/04/08(木) 21:36:49ID:i++uHGbD
exit()について質問させてください。
登録用フォームを作っていて、入力欄が空の時に入力を促すために
if文の中でexit("〜を入力して下さい。<a href=hoge.php<戻る</a>";としています。
ブラウザでは特別問題なく表示されていますが、ソースを見ると、当然exitのところで終了しているので、
ヘッダ部分</body></html>などはごっそり抜けてしまいます。
対象が携帯向けなのですが、exitを使用した場合なにか支障が起きますでしょうか?
0680nobodyさん2010/04/08(木) 23:29:39ID:Ypj7nZm8
こんばんわ、セッションの勉強をしてます
ためしに作った以下のカウントスクリプトが動きません。何ででしょうか?

<?php
session_start();
if(!isset($count)) $count=0;
session_register("count");
$count++;
?>

<html>
<body>
セッション名は<?php echo session_name() ?> です。<br>
セッションIDは<?php echo session_id() ?> です。<br>
あなたは <?php echo $count ?> 回目の訪問です。
<a href="<?php echo $PHP_SELF ."?PHPSESSID=".$PHPSESSID ?>">カウントを増やす</a>
</body>
</html>
■ このスレッドは過去ログ倉庫に格納されています