【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
0496nobodyさん
04/09/25 23:28:39ID:???0497nobodyさん
04/09/25 23:30:06ID:???要求にあった拡張機能(モジュール)を探して使え。
現在のところ349個あるらしいから大抵は見つかるだろう。
http://modules.apache.org/
モジュールが見つからない場合は自分で作れ。
そして一生メンテナンスしろ。
これでOK?
0498nobodyさん
04/09/25 23:34:28ID:b9Ydmcot0499nobodyさん
04/09/25 23:38:27ID:b9Ydmcot使えるものを知りませんか?
モジュールを作るのは大変そうです
一生メンテナンスする人っていますかね?
0500nobodyさん
04/09/25 23:53:27ID:???0501nobodyさん
04/09/26 00:01:39ID:???0502カポコン
04/09/26 00:39:51ID:???0503nobodyさん
04/09/26 01:25:20ID:xki5KZNu実行すると
Fatal error: Call to undefined function: () in ****.php on line 8
というエラーが返ってきます。
どうも最後の行に問題があるようですが、どうしても解決できません。
何がだめなのでしょうか?
<?php
$local_file = 'http://www.****.com/test.gif';
$remote_file = '/public_html/';
$ftp = ftp_connect('ftp.****.com');
ftp_login($ftp, '$id', '$pass');
$ftp_put ($ftp, $remote_file, $local_file, FTP_ASCII);
?>
0504nobodyさん
04/09/26 01:28:11ID:???↑
0505カポコン
04/09/26 01:47:53ID:???ネガティブ?<?=NEGATIVE_SIGN?>
0506nobodyさん
04/09/26 02:15:15ID:???しかもたったの8行で
漏れは1行でも英語の文法ミスるが
0507nobodyさん
04/09/26 02:33:46ID:???> ftp_login($ftp, '$id', '$pass');
これじゃ>>504の指摘してるミスがなくても動かない。
一重引用符は内容を解釈しない。
0508503
04/09/26 02:34:02ID:xki5KZNuわいはあほや〜
わいはあほや〜
0509nobodyさん
04/09/26 02:48:43ID:???0510nobodyさん
04/09/26 08:32:50ID:???0511nobodyさん
04/09/26 10:02:15ID:???0512nobodyさん
04/09/26 11:06:37ID:???0513nobodyさん
04/09/26 11:27:08ID:???∩( ´Α`)< FLASHからPHPを読み出して、リアルタイムでFLASHを挙動させたいんです!
∩( ´Α`)< そんなことは可能なんでしょうか!?
∩( ´Α`)< つまり、誰かとリアルタイムでネット対戦とか、そういう感じです!
0514nobodyさん
04/09/26 11:39:24ID:???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
■ このスレッドは過去ログ倉庫に格納されています