【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
0516nobodyさん
04/09/26 13:08:33ID:???∩( ´Α`)< 先生!早速やってみました!!
∩( ´Α`)< HTTPは、HyperTransferProtocolの略であります!!
∩( ´Α`)< HTTP は 1990年から存在するようになりました!
∩( ´Α`)< 現時点のHTTPはRFC2616で定義されています!http/1.1です!!
∩( ´Α`)< HTTPは、共同的ハイパーメディア情報配布システムのためのものです!
∩( ´Α`)< そして、先生!HTTPは、ポート80を標準として使用します!
∩( ´Α`)< HTTPは、WebブラウザとWebサーバの間での通信プロトコルであります!
∩( ´Α`)< ちなみに、通信プロトコルとは、ネットワーク上での通信の規約の事です!
∩( ´Α`)< 通信プロトコルは、大きく分けて7層に分かれています!
∩( ´Α`)< 物理層、データリンク層、トランスポート層や、アプリケーション層等です!
∩( ´Α`)< ちなみに、先生!HTTPの場合、第7層のアプリケーション層に含まれます!
∩( ´Α`)< 第7層には、FTPや、POP3、SMTP等もあります!
∩( ´Α`)< 先生!今回このレポートを書いて、インターネットの色々な事がわかました!
∩( ;´Α`)< 先生!先生!でも、ごめんなさい!!殆どWikiPediaで調べました!
∩( ´Α`)< 先生!先生!何か、罰をください!
∩( ;´Α`)< 先生!先生!先生!もう32行なのでかくことが出来ません!!
0517nobodyさん
04/09/26 13:14:15ID:???0519nobodyさん
04/09/26 13:52:19ID:???それは「TCP/IPにおけるhttpの位置付け」だな。
「ちなみに」が多い割にしくみについて全然触れておらんので
それじゃあ10点しかやれんよ。
0520nobodyさん
04/09/26 13:53:04ID:???イマイチ「セッション」という概念が良く分かりません。
ぐぐっても、本見ても詳しく書いてないんですが、
だれか教えてくりそ
0521なちじょあ ◆yEbBEcuFOU
04/09/26 13:54:41ID:???. 嘘つくなYO
0522nobodyさん
04/09/26 14:06:29ID:???session関数と同様の働きする関数ってある??
0524なちじょあ ◆yEbBEcuFOU
04/09/26 14:14:06ID:???session関数使えYO
0525522
04/09/26 14:26:40ID:???どうもsession関数が使われてないの見つけたんだよね。
だから聞いてみた
0527nobodyさん
04/09/26 14:52:33ID:???0528nobodyさん
04/09/26 15:01:45ID:???で、勉強して間もない自分では難しかったので検索で見つけたのが、このスクリプト
$text = ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)(\n)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);
ただ、日記スクリプトなので、一度書いた日付の日記を再編集する機会が多く、
<a href="http://hoge.com" target="_blank">http://hoge.com</a>
このようにリンク済みの状態になっている二つのURLの両方共に、
それにイメージタグの中のimg src=の後にまでリンクが貼られる始末です(;´Д`)
よく使われるスクリプトだと思われますが、
皆さんはどのような方法で対処してるんでしょうか…。
0529nobodyさん
04/09/26 15:04:24ID:???サーバにデータ保存できるなら
セッション関数を自作することは屁の河童です。
0530nobodyさん
04/09/26 15:05:53ID:???0534nobodyさん
04/09/26 15:16:32ID:???>>532
ああ、なるほどー、と思ったんですが、
それだけだと日記文中のイメージタグの中のimg src=の後にもリンク貼られちゃいますよね?
後、今気づいたけどこのスクリプト、URLに入った日本語部分はすっ飛ばされる…。
0539nobodyさん
04/09/26 16:20:16ID:???ハイ、それが出来ませんでした…。
>>538
> 他のタグに囲まれてない時って感じにすればいいんじゃないか?
それが自分の力で出来たらいいんですが…。
すいません、初心者スレ行ってきます。
0540nobodyさん
04/09/26 18:03:08ID:???とりあえず考え方として、URLの直前に改行コードがある場合にのみ
リンクを貼る、というやり方にしようと思いました。
これでタグで囲まれている時、及びimgタグの中である場合には無視できるのでは、と。
で、もう一息(多分)なのですが、どうもリンクが貼られないようです。
よければアドバイスなどいただけないでしょうか。
$text = ereg_replace("(\n)(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$text);
0541nobodyさん
04/09/26 18:28:33ID:???誰が誰か分からんし。
0542nobodyさん
04/09/26 18:49:17ID:???0543nobodyさん
04/09/26 18:53:04ID:???亀レスで失礼
PHPの4.2.0以降のバージョンでは、セキュリティ強化の為、POST・GETによるフォームデータが以前のような「$変数名」では取得できない設定になっています。
php.iniファイルのちょっと下の方にある
register_globals = Off
と言う設定文がそうですが、デフォルトで「Off」に設定されています。
ここを「On」に替えれば、以前のように簡単にフォームデータが取得できます。
0544nobodyさん
04/09/26 18:58:16ID:???そうか。「最新 PHPハンドブック」のサンプルソースの
ページを見ていて、なんでかなーと思っていた疑問が
解決した。
・・・が、面倒な仕様変更だね。仕方ないか。
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使えない人とかは
どうしてるんでしょう?
■ このスレッドは過去ログ倉庫に格納されています