【PHP】下らねぇ質問はここに書き込みやがれ 49
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2007/06/26(火) 03:03:40ID:ox2uyHLdPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45 (※実質48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0911nobodyさん
2007/07/09(月) 23:04:46ID:???0913nobodyさん
2007/07/09(月) 23:09:12ID:???0914nobodyさん
2007/07/09(月) 23:14:34ID:???0915nobodyさん
2007/07/09(月) 23:22:25ID:???0916905
2007/07/09(月) 23:24:35ID:SySUq07v0918905
2007/07/10(火) 00:04:23ID:SySUq07vLinux上の/tmp/jpeg/にアップロードされたファイルを
1時間に1回のcrontabにて外部のサーバへ反映させる必要があります。
現在まではcUrlライブラリを使用して処理していたのですが、
環境的な問題でfsockopen("proxyserver",xxxx)を利用する必要がでてきました。
fsockopenのサンプルはネット上にそれなりにあるのですが画像ファイルのアップロードサンプルが見つけられませんでした。
どのように定義したらいいんでしょうか?
わからないのはヘッダの中です。
$header = "Host: $host\\r\\n";
$header .= "User-Agent: PHP Script\\r\\n";
$header .= "Content-Type: text/xml\\r\\n";
$header .= "Content-Length: ".strlen($request_data)."\\r\\n";
$header .= "Connection: close";
フォームに起こすとこんな感じで、画像ファイルとファイル名をPOSTする必要があります。
<form method=post action="省略" content-type="省略">
<input type="file_name" size="20" maxlength=20">
<input type="file" name="_jpeg">
<input type="submit">
</form>
0920nobodyさん
2007/07/10(火) 00:06:58ID:???ClientURLやソケットつかって127.0.0.1に画像をPOSTする
凄腕ハッカーが居るぞ。
0921nobodyさん
2007/07/10(火) 00:12:53ID:???俺ならcron使わないでsendmailで送って
エイリアスでPHPに渡して後はサンプルがいっぱいある
メールの添付ファイル処理と一緒のことをする。
0925nobodyさん
2007/07/10(火) 00:29:56ID:FFsJD2dcログインフォームの値が正しければ、
$_SESSION["login_check"]に”on”という値が入るとします。
それで、ログイン後のページ・ログイン前のページを確認する時、
if($_SESSION["login_check"=="on"]){
include 'login_page.php'; //ログイン後のページ
}else{
include 'no_login_page.php' //ログインしていない場合の読み込みページ
}
基本的にはこのような書き方で問題ないですよね?
0926925
2007/07/10(火) 00:31:02ID:???if($_SESSION["login_check"=="on"]){
↓
if($_SESSION["login_check"]=="on"){
0927nobodyさん
2007/07/10(火) 00:33:32ID:???0929905
2007/07/10(火) 00:34:11ID:???922についていきます。
ありがとうございました。
目から鱗落ちました。
0931nobodyさん
2007/07/10(火) 00:50:51ID:???if ( array_key_exists('login_check',$_SESSION) && $_SESSION['login_check'] === 'on') {
include ...
} else {...
とするな。
0932nobodyさん
2007/07/10(火) 00:57:21ID:???http://example.com/login_page.php
を直打ちしたらどうなる?
0933nobodyさん
2007/07/10(火) 00:59:35ID:???index.php以外www有効パスに入れないというのは常識の範囲だから。
0934nobodyさん
2007/07/10(火) 01:05:29ID:???0935925
2007/07/10(火) 01:07:32ID:???みなさん、ありがとうございます。
試しに以下のようなソースを書いて、別の階層に置いてアクセスしたら
セッションが有効になって、ログインされてしまいました。
session_start();
$_SESSION["login_check"]="on";
echo "<a href=\"http://localhost/test/\">・ログイン後のページへ</a>";
やはりログイン後のページでも、セッションの中身が正しいかどうかを
毎回チェックするようにした方が良いのでしょうか?
だいたいセッションには、IDを入れる事が多いです。
0936nobodyさん
2007/07/10(火) 01:31:59ID:???>セッションが有効になって、ログインされてしまいました。
そりゃあたりまえだろ。
0937nobodyさん
2007/07/10(火) 01:38:18ID:???>ログイン後のページでも、セッションの中身が正しいかどうかを
>毎回チェックするようにした方が
それは当然だけど、それ以前にURLパスごとにファイル分散するような
「実装」をやめたほうがいいと思うよ。
0938925
2007/07/10(火) 01:39:07ID:???一瞬、セッション名さえ分かれば、どのサイトでもログインし放題なのかと
思いましたが、セッションは同一ドメイン内じゃないと有効になりませんね。
とりあえずもう少し勉強します。ありがとうございました。
0940nobodyさん
2007/07/10(火) 02:31:25ID:???0941nobodyさん
2007/07/10(火) 02:57:20ID:q6Oisfisttp://news21.2ch.net/test/read.cgi/news4plus/1183572310/l50
0942nobodyさん
2007/07/10(火) 05:02:36ID:???◎勤務地…都内某所
◎勤務時間…0:00〜24:00(三交代制)※休憩1H
◎時給…[A]1000円以上(22時以降は1250円以上)
[社]月給25万〜35万以上(経験等考慮)
◎待遇…[A]交通費全額支給、昇給年1回(4月)社会保険完備、食事補助
[社]交通費全額支給、昇給1、賞与年2回(前年実績5.0)、社会保険完備、食事補助、
残業&扶養&慶事手当支給、社員旅行(昨年は北朝鮮、今年はイラクを予定)、寮、社宅完備
※パソコンの前に座ってスレ立てをするお仕事です。
※未経験者歓迎!経験者は優遇致します。
※仕事場は見晴らしの良く綺麗なオフィスです。
0943nobodyさん
2007/07/10(火) 05:43:16ID:U8xD7AIKエラーがでますが、php.iniを設定をいじらずに、プログラムの中で表示したり非表示にしたり
するにはどうすればよろしいでしょうか?
基本的なことかもしれませんが、宜しくお願いします。
P.S. 「こんなことも分からないのバカ?」類いの安い自尊心を満たすだけのオナニーレスは不要です。
0944895
2007/07/10(火) 06:08:53ID:???昨日、検索エンジンに会員用エリアの情報を表示させたくないためには
どうしたらいいのか? って質問したものですが、
たとえば、会員ページの情報を引き出すには、IDとパスワードを確認してOK
だった場合のみ、SQLなりから「会員用エリア」のページを書き出すから、
どんな種類のロボットが探りにこようと、ページが生成されること自体ない。
だから、検索結果に会員ページ(というか、会員用情報)は表示されない、
という理解でいいでしょうか? すみません、度々…
0945nobodyさん
2007/07/10(火) 06:45:43ID:???マニュアル嫁
http://jp.php.net/manual/ja/ref.errorfunc.php
http://jp.php.net/manual/ja/ref.info.php
0946nobodyさん
2007/07/10(火) 07:18:27ID:???そんなもん出すのがいけないアプリだったら
テスト環境くらい作ってきっちりバグ潰しとけよ、といいたい
テスト環境もつくれないようなどうでもいいプロジェクトならダダモレでもええやん
0947nobodyさん
2007/07/10(火) 07:56:14ID:U8xD7AIKdisplay_errorsで出来るみたいですね。
ありがとうございます。助かりました。
>>946
> そんなもん出すのがいけないアプリだったら
> テスト環境くらい作ってきっちりバグ潰しとけよ、といいたい
バグを完全にゼロにして本番環境にリリースするのが理想だとは思いますが、
万が一にもエラーが発生した場合に、そのエラーをユーザーが見る画面に
表示するのは、セキュリティーの観点からどうかと思いますが。
0949nobodyさん
2007/07/10(火) 08:24:25ID:???; - display_errors = Off [Security]
; With this directive set to off, errors that occur during the execution of
; scripts will no longer be displayed as a part of the script output, and thus,
; will no longer be exposed to remote users. With some errors, the error message
; content may expose information about your script, web server, or database
; server that may be exploitable for hacking. Production sites should have this
; directive set to off.
0951nobodyさん
2007/07/10(火) 13:05:35ID:???というのをしたいのですが、どうすればいいのでしょうか?
0952nobodyさん
2007/07/10(火) 13:17:31ID:U8xD7AIKif (count($arr_str[0] >= 3) {
//http が3つ以上入っている
}
0954nobodyさん
2007/07/10(火) 13:36:05ID:???if (substr_count($com, "http") >= 3) {
exit("Error");
}
0955nobodyさん
2007/07/10(火) 13:38:24ID:???0956nobodyさん
2007/07/10(火) 14:30:45ID:???hoge.php?PHPSESSID=hogehoge&mode=l&type=i&ps=2&sn=1
こんなURLの時、なぜかmode=iをつけると
hoge.php?PHPSESSID=hogehoge
に飛んでしまいます。
このiをIに替えたところ普通に飛んだのですがこれはW41Tのみのくそ仕様でしょうか?
0957nobodyさん
2007/07/10(火) 14:46:42ID:???あなたの頭が糞仕様
0959951
2007/07/10(火) 17:27:07ID:???0960nobodyさん
2007/07/10(火) 18:08:59ID:???0961nobodyさん
2007/07/10(火) 22:29:51ID:il4MlV9m正規表現部分を消さずにそのまま配列にすることは出来ませんか?
例えば
A:2ちゃんねるB:ようつべC:ごーぐる
上記の文字列をアルファベット直前で区切り
array[0]=>A:2ちゃんねる
array[1]=>B:ようつべ
array[2]=>C:ごーぐる
として分けたいのです。
explodeやmb_splitを使用すれば区切り文字(例だとアルファベット部分)
が消えてしまいダメでした。
何か良い方法があればお願いします。
0962nobodyさん
2007/07/10(火) 22:40:18ID:???(A: B: C:のあとにくるものは.*)?
0963nobodyさん
2007/07/10(火) 22:52:32ID:???$str ='A:2ちゃんねるB:ようつべくC:ごーぐる';
preg_match_all('|([A-Z][^A-Z]*)|',$str,$matches);
print_r($matches);
0964nobodyさん
2007/07/10(火) 23:06:09ID:???↑これは・・・?
0966nobodyさん
2007/07/10(火) 23:15:54ID:???0967nobodyさん
2007/07/10(火) 23:32:00ID:???0968nobodyさん
2007/07/10(火) 23:35:53ID:QKw5baye0970nobodyさん
2007/07/10(火) 23:53:39ID:???むしろスラッシュはurl、パス系でバッティングしていちいちエスケープするのめんどいから使わないよ。
0971nobodyさん
2007/07/10(火) 23:57:45ID:???別に威張って言われても困る
|はメタ文字として普通に良く使うから使わない
0972nobodyさん
2007/07/10(火) 23:59:25ID:1F2Ht5WN0973nobodyさん
2007/07/11(水) 00:03:56ID:???0974970
2007/07/11(水) 00:05:36ID:????それも好みだろ。別に威張ってないよ。
自分的には#使うと一番見やすいけどURIのアンカーの時に
ひっかかるから普段は!でやってる。
0975nobodyさん
2007/07/11(水) 00:06:50ID:???先読み言明でmb_splitしてやりゃいいと思うよ
>>968
文字をiconvしてからbin2hexして16進表記の文字列を得るか、
iconvしたものの各バイト部分を、ordを使って数値化して、
一文字目の256倍した値と二文字目を足し合わせればいいと思うよ。
0976nobodyさん
2007/07/11(水) 00:11:18ID:???本当にアルファベット一文字だけで区切ってるところじゃね
0977nobodyさん
2007/07/11(水) 00:18:45ID:???0978961
2007/07/11(水) 00:20:29ID:YtVM4RER0980nobodyさん
2007/07/11(水) 00:28:27ID:???マニュアルのそんなとこよんだことねーよ
つかお前はマニュアル一字一句記憶してるおバカさんか天才様であらせられるのか?
正直phpのエラー表示は初心者には便利だけど
機能そのものがなくていんじゃない、てのが俺の感想
0981961
2007/07/11(水) 00:38:07ID:YtVM4RER良くわからないので混乱しています・・・。
>>963さんの案はだめなのでしょうか?
具体例として挙げて頂いて非常にありがたいのですが、
もっと的確な方法があるのでしょうか?
「先読み言明」というのも難解そうなので、
他にも方法があればご教授お願いします。
0983nobodyさん
2007/07/11(水) 01:42:10ID:hjtLLu8nIDが出ないのをいいことにWebProgに粘着しているのがいるんで、気にしないでOK
デリミタについては何でもいいが、俺の場合はvi使ってると / ! : # はよく使う、
マニュアルとかはデフォルトの/が例示されてる。
デリミタについては何でも良いが、文字列中に含まれないもの(エスケープが面倒でないもの)を使う方が良い。
ちなみに、そもそも論だが、文字列自体が
A:2ちゃんねるB:ようつべC:ごーぐる の様なフォーマットで渡ってこないのが一番かと思うが。
汎用的なフォーマット (, "," ',' のようなCSV形式とか、もっと柔軟なJSON形式とか,タブ区切りのTSV形式とか)で渡せるなら
そうしておいた方がよいかと思われ。
0984nobodyさん
2007/07/11(水) 03:15:31ID:6lkOIDSnphpでプログラムを書いていてわからない所があり、参考になるプログラムを探した所perlしか見当たりませんでした。
下記のperlスクリプトは私が必要だと思われるスクリプトの一部を書き出しました。
必要であればスクリプトURL等書きます。宜しくおねがいします。
# IMG タグを変換する(cid方式にまとめる)
my $filelist = {};
$content =~ s#(< (?:IMG|INPUT) \s[^>]*? SRC=)
('[^'>]+'|"[^">]+"|[^">\s]+)
((?:\s+[^>]*)? >)
#&conv_img_tag( $1, $2, $3, $filelist )#gexi;
$content =~ s#(< (?:BODY|TABLE|TR|TD) \s[^>]*? BACKGROUND=)
('[^'>]+'|"[^">]+"|[^">\s]+)
((?:\s+[^>]*)? >)
#&conv_img_tag( $1, $2, $3, $filelist )#gexi;
$DEBUG and print STDERR "[img=",scalar(keys %$filelist)," tags]\n";
0985984
2007/07/11(水) 03:19:32ID:6lkOIDSnsub conv_img_tag {
my( $prefix, $src, $suffix, $imghash ) = @_;
return unless ref $imghash;
# "" で囲まれていたら
$src = $1 if ( $src =~ /^["'](.*)["']$/s );
# cid は img01 からカウントアップ
my $cnt = scalar keys %$imghash;
my $cid = sprintf( "cid%02d", $cnt + 1 );
# 既に同じ画像を使っていたら同じ cid とする
foreach my $prev ( sort keys %$imghash ) {
if ( $imghash->{$prev} eq $src ) {
$cid = $prev;
last;
}
}
$imghash->{$cid} = $src;
my $ret = sprintf( '%s"cid:%s"%s', $prefix, $cid, $suffix );
$ret;
}
phpに書き直してくれる方がいれば嬉しいんですが、それは厚かましいので
ヒントや参考URLでもありがたいです。宜しくおねがいします。
0986nobodyさん
2007/07/11(水) 04:00:44ID:???0987nobodyさん
2007/07/11(水) 06:12:43ID:???perlスクリプト⇒phpスクリプト移植要望スレ
http://pc11.2ch.net/test/read.cgi/php/1035700861/
0988nobodyさん
2007/07/11(水) 08:53:53ID:6GQbuCRJ改行コードは\nで保存するのでしょうか?
それとも\r\nで保存するのでしょうか?
0989nobodyさん
2007/07/11(水) 11:01:51ID:???それは、ファイルを転送するときのftpクライアントのソフトによる。
もっといえば、ファイルの設定による。
むかしホームページを始めて作成したころ画像を転送したら、
どうしても画像だけが表示されずに四苦八苦した思い出が有る。
画像のところが赤の×印が表示されたままだった。
何もしらない俺はこういう画像に加工してしまったのかと、
ftpクライアントソフトの設定を疑わず、むしろ画像加工ソフトの
取扱説明書を何回も読み返してしまった。
画像加工ソフトは、paintshopだったのだが、やはりphotoshopと
違って安い画像加工ソフトは駄目なのか、と最後はソフトのせいにしてしまいった。
今では、その買えなかったphotoshopを使いこなす何ちゃってデザイナーとして
飯を食っているけど。今ではいい思い出です。
0990nobodyさん
2007/07/11(水) 11:02:07ID:???Linuxに上げて動かしたかったら\nに変換しないといけない。
文字コードの話ではない。
まぁFTPクライアント使えば勝手に変換してくれると思うけど。
0991984
2007/07/11(水) 12:04:37ID:6lkOIDSn引用元:Kawa.net xp (http://www.kawa.net/)
http://www.kawa.net/works/perl/i18n-emoji/i18n-emoji.html
0992nobodyさん
2007/07/11(水) 13:25:41ID:???直接Linuxにデータを渡したこと思い出した…
なんで実行できなかったのかやっと理解した
0994nobodyさん
2007/07/11(水) 13:32:19ID:???この件について熱く語ってください。
0995nobodyさん
2007/07/11(水) 13:42:35ID:???0996nobodyさん
2007/07/11(水) 13:57:07ID:???なんだよPHPでoggvorbisって
需要あんのかよ
0997nobodyさん
2007/07/11(水) 14:12:14ID:???nkfでがばっと変換する
#!/bin/sh
while [ -n "$1" ]; do
if [ -e "$1" ]; then
TMPFILE=nkftmp$$
nkf --utf8 -Lu $1 > $TMPFILE
mv $TMPFILE $1
echo $1
fi
shift
done
0998nobodyさん
2007/07/11(水) 14:20:33ID:VJ3pLPWUフォーム側:
<FORM action="hoge.php" method="POST">
<input type="hidden" name="list" value="<?php echo $args;?>">
</FORM>
受け取り側:
$list = $_POST["list"];
var_dump($list); 結果→Array
0999nobodyさん
2007/07/11(水) 14:34:05ID:???http://jp.php.net/faq.html#faq.html.arrays
1000nobodyさん
2007/07/11(水) 14:41:08ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。