【PHP】質問スレッドpart22【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/09/16 18:17:37ID:/HV017tY・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0545nobodyさん
04/09/26 19:36:27ID:???例えばこんな関数があるとする。
function check(){
if( 送信されたフォームデータのチェック ){
$flag = true;
}
if( $flag == true ){
return true;
} else {
return false;
}
}
これを使うスクリプトに http://hoge.com/check.php?flag=true なんてのを送られてきた場合、
フォームデータのチェックが通っても通らなくても true が返ってしまう。
これじゃ危険だろ?この返り値がtrueならデータの削除処理などをする、なんて時とかは特に。
0546nobodyさん
04/09/26 19:42:30ID:???いや、例としては分かるけど
0547528=540
04/09/26 20:04:13ID:???すいません
528=540です。
>>542
> {}? 最短マッチ(? がないと最長マッチになる)
最長マッチ入れてみましたがリンクが貼られませんでした。
$text = ereg_replace("{\n}(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);
0548nobodyさん
04/09/26 20:13:53ID:???こっちこっち
0549nobodyさん
04/09/26 20:17:22ID:???改行の次は行頭だから、
^(https?|ftp)
こっちじゃ駄目なん?
0550528=540
04/09/26 20:32:42ID:???>>549
その二つを織り交ぜて変更しました。
$text = preg_replace("^(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);
ついにエラーが出て動かなくなりました。
すいません、僕は愚図でノロマな亀です…。
0551528=540
04/09/26 20:43:37ID:???ただ、$textが空っぽになった模様。
0552nobodyさん
04/09/26 20:46:18ID:???0553nobodyさん
04/09/26 20:50:23ID:???preg_replace_allしないと
0554528=540
04/09/26 20:50:40ID:???単純に、頭がhttp|ftpで始まる行があったら自動で<a>タグのリンクをくっつけたいんです。
$text = ereg_replace("(^https?|^ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);
行頭の「^」の位置を増やしてみたけどスルーされるなあ。
0555553
04/09/26 20:52:26ID:???0556nobodyさん
04/09/26 20:52:52ID:???$str="test
test
http://www.google.jp/
test
test
";
$str=explode("\n", $str);
foreach($str as $line){
$line=ereg_replace("^(https?|ftp)://([^:/]+)(:(\d+))?(/[^#\s]*)(#(\S+))?", "\\0", $line);
echo $line;
}
いきなり答えだけど、一個一個調べろ。
0557nobodyさん
04/09/26 20:54:15ID:???0558556
04/09/26 20:54:45ID:???答えになっとらんね。
そこは自分で解決してみ〜。
因みに、もっともっと他にやり方はいっぱいある。
もっとスマートな方法も。。
0559556
04/09/26 20:55:13ID:???じゃあ答えろよ。
0560nobodyさん
04/09/26 20:56:17ID:???0561nobodyさん
04/09/26 20:57:55ID:???0564nobodyさん
04/09/26 21:01:45ID:???0566nobodyさん
04/09/26 21:09:41ID:???0567528=540
04/09/26 21:11:55ID:???すいません!
やはり行頭を表す「^」が入ってるとリンクされないでスルーされます
(「^」外すとちゃんとアンカーで囲むようにはできました)
どこがおかしいんでしょうか。
$text=explode("\n", $text);
foreach($text as $line){
$line=ereg_replace("^(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\0</a>", $line);
$temp_text= $temp_text.$line;
}
$text=$temp_text;
0568nobodyさん
04/09/26 21:16:51ID:???0569なちじょあ ◆yEbBEcuFOU
04/09/26 21:17:04ID:???$text = ereg_replace("([^[:punct:]]+)(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"\\1<a href=\"\\2\\3\" target=\"_blank\">\\2\\3</a>", $text);
0570nobodyさん
04/09/26 21:18:18ID:???0571528=540
04/09/26 21:29:37ID:???できました!
というか文中の\nを<br>に変換してたのを忘れてました!
なので>>556さんのでも動くと思います。
ありがとうございます!
0572nobodyさん
04/09/26 21:34:34ID:???0573nobodyさん
04/09/26 21:37:16ID:???0574nobodyさん
04/09/26 21:37:38ID:???0575nobodyさん
04/09/26 21:39:27ID:???教えるだけ無駄。
0576528=540
04/09/26 21:40:33ID:???争いは何も生まない!
0577nobodyさん
04/09/26 21:41:41ID:???0578nobodyさん
04/09/26 22:01:59ID:???0580nobodyさん
04/09/26 22:05:57ID:???超FAQなんで放置されてただけですよ
>>545
そのスクリプトなら問題ではない
なぜならregister_globalsディレクティブがonの時に登録される変数は、
スーパーグローバル ではなく、単なるグローバル変数。
故にcheck関数内の別スコープでは$flagは現れない(=未定義)
0581nobodyさん
04/09/26 22:07:25ID:???0583nobodyさん
04/09/27 00:50:32ID:???また知ったかが
0586nobodyさん
04/09/27 12:03:59ID:???メール欄見ろ。
0587nobodyさん
04/09/27 18:19:29ID:???なるべくスマートなやり方ってありませんか?
0590nobodyさん
04/09/27 19:39:22ID:???if (session_id()) {
echo "セッションが開始されている";
} else {
echo "まだセッションが開始されていない";
}
0591nobodyさん
04/09/27 20:25:09ID:???お二人ともありがとうございました。
session_idの方が、作ってるものの条件に
合っていたので、そっちでやってみます。
0592nobodyさん
04/09/27 22:06:18ID:???URLの最後が .jpg や .gif だったときには img タグ、
それ以外は a タグに置換するようにすれば、あんな
ごちゃごちゃしたコード書かなくても済むよね。
0594nobodyさん
04/09/27 22:17:50ID:???FTPサーバ”nekosogiftpd 1.20”をローカルに立ててテストしてるんですが、
PHPのFTP関数の返り値がおかしいんです。
<?php
$ftp_con = ftp_connect('localhost');
ftp_login($ftp_con, 'hoge', 'hoge');
$result = ftp_chdir($ftp_con, 'hoge');
var_dump($result):
?>
このようなスクリプトを実行すると、ftp_chdirの成否に関わらずFALSEが返ってくるんです。
成否はFTPサーバのログやftp_pwdで確認できます。
どんな原因があるんでしょうか。
0595nobodyさん
04/09/27 22:51:59ID:???あるんですか?
0596ぼるじょあ ◆yEbBEcuFOU
04/09/27 23:01:01ID:???http://www.php.net/manual/ja/language.types.array.php
0598nobodyさん
04/09/28 00:31:24ID:???難なくできるファイルと403エラーになるファイルがあるのはなぜですか?
$result = file('http://...php?hoge=piyo);
↑こんな感じで例えば検索サイトの抽出結果などを取り出したいのですが。
0603カポコン
04/09/28 02:24:07ID:???0604nobodyさん
04/09/28 04:20:38ID:???"###$_SERVER[HTTP_HOST]###" のように文字列中にある場合は Notice も出ない。
でもやめといた方がいい。
0605nobodyさん
04/09/28 06:21:42ID:???phpで書いたソースのhtmlのみを.htmlとしてcopyすることってできますか?
0606605
04/09/28 06:57:08ID:???0607nobodyさん
04/09/28 10:32:13ID:V6CF9F0Wレンタル鯖に同じことやったが問題なかった。
nekosogiftpdが正しい値を返してないのかもな。
0608nobodyさん
04/09/28 10:51:20ID:???QUICKFTPでも問題ないがnekosogiだとfalseが返ってくる。
0609nobodyさん
04/09/28 17:56:23ID:???ここでマジレス
↓
649 :非通知さん :sage :04/09/28 17:47:16 ID:9ReSWf70
うんこはいいにおい
0610nobodyさん
04/09/28 18:23:39ID:wWo5p4+TPHPにディフォルトで入ってる関数って一方向暗号化のものしかないんで困っています。
レンタルサーバなので mcrypt 入れる訳にもいきません。
自前で暗号化/複合化関数つくってる方っていないですか?
0611nobodyさん
04/09/28 18:26:41ID:???0612nobodyさん
04/09/28 18:45:33ID:???どんなレベルで秘匿する必要があるデータかによる。
単に平文流れるのが嫌だってんなら、
base64のencode/decodeでいいし(極端すぎ)
0613nobodyさん
04/09/28 18:49:59ID:???php hoge.php
とコマンドして実行すると、自分の意図どおりに動くのに、
http://〜〜/hoge.php
のような感じで、ApacheでPHPを実行すると、SQLに接続できないです。
原因をご存知でしたら教えてください。httpdを再起動したりしましたが無理でした。
0614613
04/09/28 19:13:42ID:???0615nobodyさん
04/09/28 19:15:33ID:wWo5p4+Tありがとうございます,気持ち暗号化しておきたいだけなんで・・・
だったら base64+α くらいでいいんですかね,やっぱり.
でも結構本気の暗号化が必要で,mcrypt使えない人とかは
どうしてるんでしょう?
0616nobodyさん
04/09/28 19:37:04ID:???凡ミスの理由を書いて欲しい・・・って
思うのは私だけ?
0618nobodyさん
04/09/28 20:05:25ID:???userを指定したか、SQLサーバにnobodyで接続できるようにしたかのどちらかじゃないかな。
0619nobodyさん
04/09/28 21:20:15ID:???気持ち程度でもいいのなら、元の文字列から1バイトずつ取り出して
適当な値とxorするとか、足し算するとか、してみてはどうだろう?
それをbase64変換して流せば、例えデコードされても
元のデータの意味は分かりづらくなると思うよ。
0620nobodyさん
04/09/28 22:04:17ID:???このような処理を考えているのですが、serch=?key=\1 の \1 を urlencode したいのです。
$text = mb_eregi_replace('([ァ-ヶー]{3,})', '<a href="search.php?key=' . urlencode('\1') . '" class="keyword">\1</a>', $text);
とやってみてもダメでした。
何か良い方法はありませんか?
0621nobodyさん
04/09/28 23:52:31ID:???スクリプトの終了時に呼び出すハンドラを設定することは
できますか?
0622nobodyさん
04/09/29 01:16:23ID:???普通にhttpsだろ。http://jp.php.net/openssl
さもなくばこの仕様書から実装しなさい。
http://info.isl.ntt.co.jp/camellia/CRYPTREC/2001/01jspec.pdf
0623nobodyさん
04/09/29 01:20:41ID:???消えろカス
>>621
マニュアル読めよ
http://jp.php.net/manual/ja/ref.funchand.php
0625621
04/09/29 02:28:55ID:???register_shutdown_functionですね。
ありがとうございました。
0626nobodyさん
04/09/29 02:36:18ID:VlQlAY+Whttp://pear.php.net/manual/en/package.xml.xml-rss.php
で、RSSの「content:encoded」を取得するにはどうすればよいですか?
0627nobodyさん
04/09/29 15:52:26ID:LWHTYlg+Querry Err
SELECT COUNT(*) CNT from CM_M
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/*****/www/ad/cm_list.php on line 80
などというメッセージがたくさん出てしまいました。
これはうまくMySQLにつなげてない事を示しているのでしょうか?
0628nobodyさん
04/09/29 16:07:47ID:???ソースのコメント読めば分かるだろ。
拾いたいモジュールがあればmoduleTagsプロパティに追加してやればいい。
つーかcontent:encodedうざくね。plain textと大差ないくせに。
<?php
require_once 'XML/RSS.php';
$rss = new XML_RSS('test.rss');
$rss->moduleTags[] = 'CONTENT:ENCODED';
$rss->parse();
foreach ($rss->getItems() as $item) {
print $item['content:encoded']."\n";
}
?>
0629nobodyさん
04/09/29 16:09:44ID:???英語が読めないので訳してくれ、ってことか?
cm_list.phpの80行目でmysql_fetch_array()に渡された引数は有効なMySQL result resourceではありません。
0633nobodyさん
04/09/29 16:25:08ID:???MySQLに聞いてみればいい。
0634627
04/09/29 16:38:50ID:LWHTYlg+それならば私の設置したサーバーには合わない、という事ですね。
みなさんありがとうございました。
0635nobodyさん
04/09/29 17:01:00ID:???0640nobodyさん
04/09/29 17:26:54ID:???0641nobodyさん
04/09/29 17:27:34ID:???0643nobodyさん
04/09/29 17:50:55ID:PVuY1v0fこれを stringから読み込む方法は無いでしょうか?
0644nobodyさん
04/09/29 17:59:21ID:???http://php.s3.to/man/function.eval.html
■ このスレッドは過去ログ倉庫に格納されています