【PHP】下らねぇ質問はID出して書き込みやがれ 100
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/10/27(水) 17:41:33ID:2BwSQxVQ過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 99
http://hibari.2ch.net/test/read.cgi/php/1286938893/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0356nobodyさん
2010/11/03(水) 17:51:08ID:rDLrrCQeqdmail使ったら送信出来ました。
ヘッダ関連かなーと思った次第ですが、どうなんでしょうねぇ。
>>354
サーセン
>>355
大丈夫です。
0357nobodyさん
2010/11/03(水) 18:06:20ID:bRpTkRq5変換じゃなくて、削除してくれる関数はないでしょうか?
0358nobodyさん
2010/11/03(水) 18:08:48ID:???0359nobodyさん
2010/11/03(水) 19:27:31ID:T4aX8FO7ミクシィチェックのモバイル版が、ページのタイトルを求めてきて困ってます…。
http://developer.mixi.co.jp/connect/mixi_plugin/mixi_check/spec_mixi_check
<form action="http://m.mixi.jp/share.pl?guid=ON" method="POST" >
<input type="hidden" name="check_key" value="xxxxxxxx" />
<input type="hidden" name="title" value="★ここを<!--#include virtual="title.php"-->みたいなので取得したい★" />
<input type="hidden" name="primary_url" value="★現在のURLhttp://example.com/" />
<input type="hidden" name="mobile_url" value="★現在のURLhttp://example.com/" />
<input type="submit" value="mixiチェック" />
</form>
現在開いているURLは$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']で表示するだけなんですが、
htmlの<title></title>に挟まれた文字を持ってきて表示するというのが出来ないです。
↓このperlスクリプトをphpに書き直したり改造したりして、何とかならないものでしょうか?
sub PageTitle {
local($fname) = @_;
local($result);
if (!open(FILE, $fname)) { &ShowError; }
while (<FILE>) {
if (m{((?i)<title>(.+)</title>)}) {
$result = $2;
last;
}
}
close(FILE);
($result eq '') ? 'unknown' : $result;
}
0361nobodyさん
2010/11/03(水) 19:37:48ID:???どっかのページのタイトル知りたければ そのperlみたいなことすればいい。
そもそも、そこに入れる文字と htmlのページのタイトルって関係あるのかね。 すきな文字いれればいいやん。
0362nobodyさん
2010/11/03(水) 21:12:41ID:T4aX8FO7あとは、<!--#include virtual="/title.php"-->を使って
phpを呼び出したページのタイトルを取得するだけなのですが、
つまずいてしまいました。どなたか助けてください。
title.php
<?php
function getPageTitle( $url ) {
$html = file_get_contents($url);
if ( preg_match( "/<title>(.*?)<\/title>/i", $html, $matches) ) {
return $matches[1];
} else {
return false;
}
}
//echo getPageTitle( $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] );//←★現在のURLにしたい。この部分を教えてください。
echo getPageTitle( "http://example.com/" );//←これは呼び出せた。
?>
>>360
うちのケータイはJavaScript使えないです…。
>>361
全てのページが同じタイトルというのはちょっと…。
wordpressとかのブログならタイトルタグで呼び出せばいいだけなんですけど、
shtmlでサイトを構築してしまっているので、そうもいかないです。
0363nobodyさん
2010/11/03(水) 21:13:58ID:???ブラウザで「表示」→「ソース」
<title>〜</title>の間をマウスで選択し、右クリック→「コピー」
メモ帳などに貼り付ける
0364nobodyさん
2010/11/03(水) 21:25:30ID:???環境変数のDOCUMENT_NAMEでphpにファイル名渡してやって、それ使って読み込めばいいんじゃね?
0367nobodyさん
2010/11/03(水) 22:11:05ID:???0368nobodyさん
2010/11/03(水) 22:16:02ID:???そっちの線も考えてみます。
>>365
一つ勉強になりました。
SERVER["DOCUMENT_URI"]
SERVER["HTTP_HOST"]
この辺りに目星を付けて、↓こんな感じにしてみましたけど、ダメでした。いったんメシを食います。
$http = 'http://';
echo getPageTitle( $http.SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'] );
0369nobodyさん
2010/11/03(水) 22:45:59ID:???の文字列が希望するURLにちゃんとなってるか確認した?
echoして確認してみそ
0370nobodyさん
2010/11/03(水) 23:39:22ID:f+TY6XzX0371nobodyさん
2010/11/03(水) 23:40:37ID:???0372nobodyさん
2010/11/03(水) 23:58:40ID:???0373nobodyさん
2010/11/04(木) 00:01:23ID:???0374nobodyさん
2010/11/04(木) 00:01:52ID:???> echo getPageTitle( "http://example.com/" );//←これは呼び出せた。
らしいので、変数の問題かと。
$http.SERVER["HTTP_HOST"] がおかしいと思うけどね。
0375nobodyさん
2010/11/04(木) 00:07:48ID:???そのページが自分のページのタイトルを取得しにいってとなるような気がするのですが・・・
まあ、パラメータつけといて、タイトル取得時はタイトル取得部を動作させないようにすればいいですけど。
だから、面倒でも、自分のページのURL取得したら、url->titleのデータを元に書き出すようにするしかないかと。
0376nobodyさん
2010/11/04(木) 00:38:01ID:???>>374
>$http.SERVER["HTTP_HOST"] がおかしいと思うけどね。
はい。この行でエラーが出たのでメシを食いに行きました。
>>375
その線が臭いです。
「やけにテストサーバの動作が鈍い時があったな」とか、飯喰いながら思ってました。
また一からやり直します。
>>369以下、phpinfo();です。
PHP Variables
_SERVER["DOCUMENT_URI"] /cgi-bin/index.html
_SERVER["HTTP_HOST"] example.com
_SERVER["REQUEST_URI"] /cgi-bin/
_SERVER["SCRIPT_FILENAME"] /home/ex/public_html/cgi-bin/genzai-title.php
_SERVER["SCRIPT_NAME"] /cgi-bin/genzai-title.php
_SERVER["SERVER_NAME"] example.com
_SERVER["PATH_TRANSLATED"] /home/ex/public_html/cgi-bin/genzai-title.php
_SERVER["PHP_SELF"] /cgi-bin/genzai-title.php
0377375
2010/11/04(木) 00:44:50ID:???PHPで取得すべきなのは ページのデータ (http://〜で始まるやつで取得するやつ)じゃなくて
サーバー内のファイルそのもの。
_SERVER["SCRIPT_FILENAME"] を取得してタイトル取得 PHPの連鎖は起きない。
shtmlの処理で書かれてんなら、おんなじもの フォームに入れるだけ。
0379nobodyさん
2010/11/04(木) 03:35:42ID:QBk0rcZEこれsqliteに置き換えて使いたいんですけど
Connection failed: SQLSTATE[HY000]: General error: 1 SQL logic error or missing database
って出るんだけどなんでですかね?
0380nobodyさん
2010/11/04(木) 03:39:59ID:???0381nobodyさん
2010/11/04(木) 04:02:05ID:QBk0rcZE0382nobodyさん
2010/11/04(木) 04:21:25ID:???>>369に書いたけど、getPageTitle()の中身の文字列をechoして確認してみた?
それと、>>374に書いたように $http.SERVER["HTTP_HOST"] は文法的におかしいでしょ。
SERVERじゃなくて$_SERVERにしないと。
あと、SERVER["DOCUMENT_URI"] に目星を付けて、と書いてる割に REQUEST_URI になってるけど大丈夫?
0385nobodyさん
2010/11/04(木) 07:25:23ID:H5un7pkx取得するやり方教えてください
0386nobodyさん
2010/11/04(木) 07:30:46ID:???$dc = $item->children('http://purl.org/dc/elements/1.1/');
0387nobodyさん
2010/11/04(木) 07:44:29ID:H5un7pkxありがとうございます
Node no longer existsって出ました
simplexmlオブジェクトをserializeしたらおこるみたいですね
うちのプロバイダ規制に巻き込まれてて携帯からだからお礼遅くなってすみません
0388nobodyさん
2010/11/04(木) 11:53:38ID:1iy2rlVw$_GETのパラメータで渡された ?day=2010-10-01 を検証したいとき
「これは日付を表す型だ」と一発で判別する方法(関数)ないでしょうか?
うまい表現出来ないので変な言い方になってますが
2010-11-01/2010-11/2010-01/2010-1
この4パターンを対象にしたいと思います。
ムリなんでしょうか?
カレンダーを生成するときに利用したいのですが…
お願いします
0389nobodyさん
2010/11/04(木) 11:55:56ID:???どれも日付にしたいんだよね?
0390nobodyさん
2010/11/04(木) 12:08:51ID:???strtotimeで 2010-1は無理だね。
ハイフンで切って2個なら1日とかにして checkdateではどうでしょう。
0391nobodyさん
2010/11/04(木) 12:11:55ID:1iy2rlVwこんなものがあったんですね! ありがとうございました
0392nobodyさん
2010/11/04(木) 12:22:08ID:QBk0rcZEtry {
$dbh = new PDO('sqlite:test.db');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'update tab1 set tag1 = $tag1 where dirpass = $returnpass';
$stmt = $dbh->prepare($sql);
$stmt->execute();
}
catch( PDOException $e ) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
DB定義ってどこまで書けばいいのですか?
普段sqlitemanagerってのを使ってますが
0393nobodyさん
2010/11/04(木) 12:28:52ID:???<?php
$mode='';
if($mode=''){
echo "空";
}else{
echo "空ではない";
}
?>
これを実行すると「空ではない」と表示されます。
どういうことですか。
また、どうすれば空を検出できますか?
0394nobodyさん
2010/11/04(木) 12:33:49ID:???だから
比較ではなく代入になってます
0396nobodyさん
2010/11/04(木) 13:02:29ID:zPbOOHCy環境は
PHP5.16
CentOS5
です。
0398nobodyさん
2010/11/04(木) 13:16:46ID:???$tag1とか$returnpassってPHPの変数なんだろうけど、それだと展開されないんじゃない?
というかprepare使ってるのにプレースホルダ使わないの?
0399nobodyさん
2010/11/04(木) 13:19:55ID:zPbOOHCy調べられる範囲で経由してきたプロキシが分かればよいです。最悪、2つ前のIPを調べられる方法でもよいです。
やりたいことは、PHPにIPでのアクセスを設けたいのですが、
プロキシ経由でWEBサーバにアクセスしてるので、プロキシのIPが制限の対象になってしまいます。
0400nobodyさん
2010/11/04(木) 13:24:48ID:???制限しなければいいじゃん。
0401nobodyさん
2010/11/04(木) 13:35:48ID:???っていう事かなと思って話しをするけど
公開プロキシなんてどこかのリストから
使えるものを使うって感じなんだろうから
それを拒否リストかなんかに登録すればいいんじゃねーの?
0402nobodyさん
2010/11/04(木) 13:36:50ID:R2ciutWbこのへん見て調べては?
0403nobodyさん
2010/11/04(木) 13:42:14ID:???誰が?あなたが?
>プロキシのIPが制限の対象になってしまいます
プロキシを拒否りたいというわけではないということか
0404nobodyさん
2010/11/04(木) 13:45:05ID:???0405nobodyさん
2010/11/04(木) 13:49:46ID:???大元のIPを見て拒否りたいということだろう
匿名プロキシじゃなくて、わざと環境変数に元のIPを漏らしてるプロキシ使ってる場合は分かるけどそれ以外は無理
刑事事件になるようなものならプロキシ運営側に情報開示させてプロキシを逆に辿るようなこともできるだろうけど
0406nobodyさん
2010/11/04(木) 13:53:37ID:nDeItJ+nini_set()でも.htaccessでもshort_open_tagだけがOffにできません
ほかの設定は反映されるのですが・・
これは何が原因だと考えられるでしょうか?
0407406
2010/11/04(木) 14:44:39ID:nDeItJ+nもう一度.htaccessをアップロードしなおしたら反映されました
(さっき反映されなかったのはなぜだろう..ブラウザ側でキャッシュ見てたのかな)
あと、もともとini_set()ではshort_open_tagは設定できないようですね
0408nobodyさん
2010/11/04(木) 18:07:14ID:En7f4Y+6【PHPのバージョン】5.1.6
【連携ソフトウェア】特になし
【質問内容】
社内の既存のシステムでmail関数を使用してメールを送信してます。
内容はログやエラー内容なんですが、ネットワークの変更に伴い社内のSMTPを使用することになりました。
そこで現状のソースを崩さすにmail関数でSMTPを指定出来ればと考えてますが可能でしょうか?
0409nobodyさん
2010/11/04(木) 18:12:52ID:R2ciutWb0410408
2010/11/04(木) 18:28:52ID:En7f4Y+6そちらのアドレスについては確認しているのですが、やはりSMTPの指定は無理ということでしょうか?
0411nobodyさん
2010/11/04(木) 18:31:18ID:???デフォルトがlocalhostのになってるとは思うけど
0412nobodyさん
2010/11/04(木) 18:38:50ID:???会社のSMTP次第だとは思うけど
リレーでなんとかならないかな?
MTU何使ってるか知らないけどそっちのスレで聞いたほうが良いと思う
0413nobodyさん
2010/11/04(木) 18:40:25ID:???なんかぐだぐだで死にたい
0414nobodyさん
2010/11/04(木) 18:51:06ID:???0415408
2010/11/04(木) 18:53:48ID:En7f4Y+6MTAに何を使っているかは不明だったのですが、社内から使用するには制限は特にないといわれました。
mail()でリレーとか出来るということでしょうか?
0416nobodyさん
2010/11/04(木) 19:04:24ID:???いや、そのphpが動作するサーバのMTAの設定で
社内のSMTPサーバへリレーさせるって意味だよ
MTAの設定変更が無理なら、mail()では無理なので
SMTP指定ができる、PEAR:mailとかQdmailとかを使う事になる
0417nobodyさん
2010/11/04(木) 19:08:17ID:QBk0rcZEselectやwhereはできました
プレースホルダ使っても駄目でした
0421nobodyさん
2010/11/04(木) 20:34:35ID:???0422415
2010/11/04(木) 20:52:00ID:beLXGvetすいません。
サーバーで使ってるのはsendmailです。
0423nobodyさん
2010/11/04(木) 21:10:02ID:???これ以上は板違いになるが
単純な転送ならSMART_HOSTに設定すればいける
サーバの管理者に相談してみて
0424nobodyさん
2010/11/04(木) 23:14:59ID:cN2tw34cPHPはこういう書き方させてくれないのがムカつく!
0425nobodyさん
2010/11/04(木) 23:18:23ID:???0426nobodyさん
2010/11/04(木) 23:19:31ID:???0428nobodyさん
2010/11/04(木) 23:21:49ID:???0430nobodyさん
2010/11/04(木) 23:31:59ID:???0431nobodyさん
2010/11/04(木) 23:35:28ID:???0432nobodyさん
2010/11/04(木) 23:36:30ID:tQnLbdgiああいった感じの機能のPHPライブラリとかってありませんか?
0433nobodyさん
2010/11/04(木) 23:37:50ID:???0434nobodyさん
2010/11/04(木) 23:46:14ID:???何となくそれが返ってくるような気がしてたw
複数ページ丸ごと落としてくるフリーライブラリは意外とないものなのかな
0435nobodyさん
2010/11/04(木) 23:56:50ID:???function r($o) { return $o; }
r(new Klass())->foo();
autoboxing パッチが受け入れられるまでこれで我慢
0436nobodyさん
2010/11/05(金) 00:23:08ID:???foreach ($urls as $url) {
$results[] = file_get_contents($url);
}
0437nobodyさん
2010/11/05(金) 00:25:20ID:FUZYrjbX0439nobodyさん
2010/11/05(金) 01:15:09ID:FUZYrjbX0440nobodyさん
2010/11/05(金) 01:19:22ID:???0441nobodyさん
2010/11/05(金) 01:21:38ID:FUZYrjbX0442nobodyさん
2010/11/05(金) 01:26:38ID:???俺々PHPとかでPHP本体自体を改造してるなら別だけどね
実際発行されてるクエリは
update tab1 set tag1 = $tag1 where dirpass = $returnpass
のままっていう可能性しかない
0443nobodyさん
2010/11/05(金) 01:55:08ID:XnKoTrfJあるいは、言語構造でもいいです。
お願いします m(__)m
0444nobodyさん
2010/11/05(金) 01:57:44ID:FUZYrjbX0446nobodyさん
2010/11/05(金) 01:59:15ID:???すいません
0449nobodyさん
2010/11/05(金) 02:25:42ID:???"update tab1 set `tag1` = '$tag1' where `dirpass` = '$returnpass'"
こんな感じに書き換えてみると良い
まぁ本当はPDOなんだからプレースホルダ使えってのが本音
$sql = 'update tab1 set tag1 = :tag where dirpass = :returnpass ';
$stmt = $dbh->prepare($sql);
$stmt->execute(array(':tag'=>$tag1,':returnpass'=>$returnpass));
0450nobodyさん
2010/11/05(金) 02:28:47ID:xucJQOJ50-9a-zA-Zのuniqueなkeyってどうやってつくるのん?
ライブラリがあると思うんだけどキーワードが思いつかない…
0451nobodyさん
2010/11/05(金) 02:30:57ID:FUZYrjbX書き換えさせていただきました
Connection failed: SQLSTATE[HY000]: General error: 1 SQL logic error or missing database
を吐いたんですけど
0452nobodyさん
2010/11/05(金) 09:14:48ID:???多分。
やったことないけど。
0453nobodyさん
2010/11/05(金) 09:48:11ID:???パーミッションでしょ。ファイルとフォルダの権限チェック
0455nobodyさん
2010/11/05(金) 14:34:50ID:???短縮URLは短さが命でしょ
uniqidはちと長いね
0-9a-zA-Zをただ単にランダムにして重複チェックするだけでしょ
長さがどうでもいいとか、0-9a-fまででいいなら>>454の言うようにuniqidでいい
■ このスレッドは過去ログ倉庫に格納されています