【PHP】下らねぇ質問はID出して書き込みやがれ 136
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2014/08/06(水) 23:31:16.38ID:GyAfw2+q過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 135
http://kanae.2ch.net/test/read.cgi/php/1405860979/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.5
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0858nobodyさん
2014/09/12(金) 22:57:33.71ID:???0859nobodyさん
2014/09/12(金) 23:05:19.13ID:???0860nobodyさん
2014/09/12(金) 23:44:16.06ID:???0861nobodyさん
2014/09/13(土) 07:55:40.91ID:nUyX5JlB時にAjaxで処理を行い、 success ブロックに入った時に
ダイアログを閉じようと以下のコードを記述しています。
しかし実行したところエラーが出てしまいます。
どうすればこのエラーが出る事無くダイアログを閉じる事が出来ますか?
$.ajax({
type: 'POST',
url:url_post,
data: p_data,
dataType: 'text',
success: function( data, textStatus, jqXHR )
{
//ダイアログを閉じる。
$( this ).dialog( "close" ); <−−−−ここでエラー発生
}
エラーメッセージ
Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'
0862nobodyさん
2014/09/13(土) 07:59:10.48ID:???0864nobodyさん
2014/09/13(土) 08:18:59.38ID:???0865nobodyさん
2014/09/13(土) 08:20:27.29ID:NFvjKNVk自分は昨日パソコンとPHP入門書を購入したばかりの初心者です。
http://imepic.jp/20140913/289610
http://imepic.jp/20140913/289930
PHPのif elseなのですが、どうしてもエラーがでてしまいます。
検索するとエラーを指摘された行数が</html>しかない場合は他の行に}の締め忘れやスペルミスなどが疑われるとあるのですが、一晩中いくら見つめてもそれらのミスも見当たりませんでした。
11〜16、20行目を削ると入力チェック機能はないですが正常に働きます(入力欄を空白のまま送信を押したときに「ようこそ様」になってしまいます)
何卒宜しくお願いします。助けて。
0866nobodyさん
2014/09/13(土) 08:28:09.11ID:???11行目がif($nickname==")になってるように見えなくもないがここは大丈夫か?
シングルクオテーション2コじゃなくてダブルクオーテーション1コに見える
0867nobodyさん
2014/09/13(土) 08:37:24.78ID:NFvjKNVkあ、あああありがとうございますほんとにほんとにありがとうございます。思わず飛び上がりました本当にありがとうございます。助かりました!ありがとうございます!
一晩中苦しんでた分、解放感と感動で涙でますほんと。ありがとうございます貴方は神様です!
0868nobodyさん
2014/09/13(土) 08:38:09.58ID:P/42toEi【PHPのバージョン】 5.3.5
【連携ソフトウェア】
【準備】
事前に「詐欺」というフォルダを作っておく。
【質問内容】
下記のスクリプト(is_dir)で日本語フォルダを検出できません。
<?php
if(is_dir("詐欺"))echo "フォルダ有り"
原因はSJIS環境と「詐」の文字の相性の悪さなんですが、
あくまでSJIS環境で「詐欺」というフォルダを検出できるようにする
(=スクリプトで対応する)にはどうすればいいですか?
0870nobodyさん
2014/09/13(土) 08:39:28.85ID:/ciiq0tC0871868
2014/09/13(土) 08:44:10.12ID:P/42toEi2ch専用ブラウザ「JaneStyle」で生成されるdatフォルダをphpで簡単に削除しようと思うんですよね。
ところが「防犯・詐欺対策板」のフォルダがphpで削除できないんです。「詐」の問題で。
それで質問させていただきました。
0872nobodyさん
2014/09/13(土) 09:34:25.35ID:???http://ja.wikipedia.org/wiki/Shift_JIS#2.E3.83.90.E3.82.A4.E3.83.88.E7.9B.AE.E3.81.8C5C.E7.AD.89.E3.81.AB.E3.81.AA.E3.82.8A.E3.81.86.E3.82.8B.E3.81.93.E3.81.A8.E3.81.AB.E3.82.88.E3.82.8B.E5.95.8F.E9.A1.8C
0873nobodyさん
2014/09/13(土) 09:54:52.82ID:P/42toEiでは具体的にどのように改善すればクリアできるんでしょうか???
なおphp.iniはSJIS主導のものになっていますがphp.iniの内容の変更は不可です。
php.iniの内容、主にエンコード関係を変更すると他のphpスクリプトがおかしくなるからです。
ですから>>868のスクリプト単体でクリア希望です。
0874nobodyさん
2014/09/13(土) 10:03:52.36ID:???>この問題を回避する伝統的な方法として、ソースコード全体をEUCコードやUTF-8などに変換してから
http://jp2.php.net/manual/ja/function.readdir.php
ここの例2のコード使ってやってみな
4行目の入力先の$entryをUTF-8に変換して詐欺と比較
echoするところはフォルダ有りって出力するならSJIS-winに戻して
0875nobodyさん
2014/09/13(土) 10:23:49.55ID:P/42toEi詐欺フォルダは「フォルダではありません」と表示されますけど・・・
<?php
if ( $handle = opendir( '.' ) ) {
while ( false !== ( $entry = readdir( $handle ) ) ) {
if ( $entry != "." && $entry != ".." ) {
echo $entry;
$entry2 = mb_convert_encoding( $entry, "UTF-8", "auto" );
if ( is_dir( $entry2 ) ) {
echo " はフォルダです";
}else {
echo " はフォルダではありません";
}
echo"<br><br>";
}
}
closedir( $handle );
}
0876nobodyさん
2014/09/13(土) 10:33:00.66ID:P/42toEi「このフォルダは詐欺フォルダですか Yes or No」ということがしたいのではなく、
詐欺フォルダも他のフォルダも全てサーチしてフォルダを全消ししたいんです。
× if(is_dir(フォルダ名)=="詐欺")) {echo "これは詐欺フォルダです";}else{echo "これは詐欺フォルダではありません";}
○ if(is_dir(フォルダ名)) rmdir(フォルダ名);
0877nobodyさん
2014/09/13(土) 10:35:53.78ID:P/42toEi↑これは大間違い。
× if(is_dir(フォルダ名) && フォルダ名=="詐欺")) {echo "これは詐欺フォルダです";}else{echo "これは詐欺フォルダではありません";}
こんなかんじだったっけ?
0878nobodyさん
2014/09/13(土) 10:38:28.13ID:???0879nobodyさん
2014/09/13(土) 10:45:31.98ID:P/42toEi「専ブラのフォルダをphpで全消ししたいのですが『防犯・詐欺対策』フォルダがis_dirでフォルダとして検出できないから
『防犯・詐欺対策』フォルダが消せない。だからなんとかなりませんか?」
というのがそもそもの趣旨です。
そのために>>868で例として if(is_dir("詐欺"))echo "フォルダ有り" と書いたのが失敗だったなぁ・・・
0880nobodyさん
2014/09/13(土) 10:48:00.49ID:???なんで名前見る必要があるの?
0881nobodyさん
2014/09/13(土) 10:51:39.64ID:P/42toEiだから「詐欺」フォルダは消えないんだって(笑)。
自分で試してみてください
0882こう書くべきだった >>868
2014/09/13(土) 10:52:33.51ID:P/42toEi【PHPのバージョン】 5.3.5
【連携ソフトウェア】
【準備】
事前に「詐欺」というフォルダ名のフォルダを作っておく。
【質問内容】
フォルダを全部削除したいのですが詐欺フォルダだけ削除できません。
削除するにはどうすればいいですか?
<?php
if ( $handle = opendir( '.' ) ) {
while ( false !== ( $entry = readdir( $handle ) ) ) {
if ( $entry != "." && $entry != ".." ) {
if ( is_dir( $entry ) ) rmdir( $entry );
}
}
closedir( $handle );
}
0883nobodyさん
2014/09/13(土) 10:53:40.43ID:???ぶっちゃけ非対応です。
//code utf8
$dirNameSJIS = mb_convert_encoding ("詐欺", 'CP932', 'UTF-8');
exec( "rmdir /S/Q $dirNameSJIS" );
0884nobodyさん
2014/09/13(土) 11:04:56.40ID:P/42toEi下2行はヒントかな。exec bニか自分は使わbネいのでよくわbゥりません。挙涛ョを勉強してみbワすm(_ _)m
では皆様ごきんよう。
0885nobodyさん
2014/09/13(土) 11:07:24.36ID:???0886nobodyさん
2014/09/13(土) 11:10:04.78ID:???<?php
`for /F %a in ('dir /AD /B /W .') do rmdir /S /Q %a`;
0887nobodyさん
2014/09/13(土) 11:16:07.09ID:???0888nobodyさん
2014/09/13(土) 11:25:41.50ID:???なんでPHPでやろうと思ったのか
バッチファイル作ればいいのに
PHP出来るなら余裕でしょ
0889nobodyさん
2014/09/13(土) 12:42:36.69ID:???0890nobodyさん
2014/09/13(土) 14:51:45.60ID:hQRZGKiOjQueryダイアログの「更新する」ボタンを押した
時にAjaxで処理を行い、 success ブロックに入った時に
ダイアログを閉じようと以下のコードを記述しています。
しかし実行したところエラーが出てしまいます。
どうすればこのエラーが出る事無くダイアログを閉じる事が出来ますか?
$.ajax({
type: 'POST',
url:url_post,
data: p_data,
dataType: 'text',
success: function( data, textStatus, jqXHR )
{
//ダイアログを閉じる。
$( this ).dialog( "close" ); <−−−−ここでエラー発生
}
エラーメッセージ
Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'
0891nobodyさん
2014/09/13(土) 15:07:56.67ID:???0893nobodyさん
2014/09/14(日) 18:04:24.19ID:5DX/CGIdabcabcabc -> aaabc
考えたのは
$text = 'abcabcabc';
$text = preg_replace('/(a)bc(a)/', '$1$2', $text);
$text = preg_replace('/(a)bc(a)/', '$1$2', $text);
という方法なのですがもっとスマートな方法があれば教えて下さい
0894nobodyさん
2014/09/14(日) 20:11:27.24ID:???0895nobodyさん
2014/09/14(日) 20:11:52.68ID:???http://peace.2ch.net/test/read.cgi/tech/1387257592/
こちらで聞いたほうが良いと思います
0896nobodyさん
2014/09/14(日) 21:26:37.73ID:5DX/CGIdありがとうございます
こちらのスレに答えが書いてありました
$text = 'abcabcabc';
$text = preg_replace('/(?<=a)bc(?=a)/', '', $text);
0897nobodyさん
2014/09/14(日) 22:10:25.26ID:???0898nobodyさん
2014/09/14(日) 22:57:25.46ID:???0899nobodyさん
2014/09/16(火) 15:01:00.57ID:???いまでも問題なく使っていけるライブラリなのでしょうか?
0900nobodyさん
2014/09/16(火) 15:01:33.06ID:PDR72HzF0901nobodyさん
2014/09/16(火) 17:20:56.28ID:/DjoSEZDfile_put_contensやexecでの書きこみ等いろいろ試してみましたが出来ません。
もしかしてローカルからの実行じゃないとできないとかそういう制約とかってありますか?
0902nobodyさん
2014/09/16(火) 17:29:04.31ID:???0903nobodyさん
2014/09/16(火) 17:29:49.27ID:fb/e2Lk40904nobodyさん
2014/09/16(火) 17:30:46.25ID:???リモートであろうがなかろうが、コマンドやOSの機能を実行するのは、あくまでWebサーバ(あるいはfpm)のOS上のユーザ。
よって、そのユーザが対象のファイルなりディレクトリなどに対して権限がなければ実行できない。
0905nobodyさん
2014/09/16(火) 17:40:24.81ID:???0907nobodyさん
2014/09/16(火) 18:41:21.77ID:???0908nobodyさん
2014/09/16(火) 19:04:06.22ID:???0909nobodyさん
2014/09/17(水) 00:45:00.95ID:???最近まで更新されてるものは使えるんじゃね?
色々警告出るのは諦めるしか無い。気になるなら自作しよう。
0910nobodyさん
2014/09/17(水) 10:19:16.22ID:???まず思い当たる解決方法を試すんじゃなくて、原因を探すことを考えたほうがええ。
エラーログ読むか、エラーメッセージ読むか、
それが表示されてなければ、display_errorsとerror_reportingでぐぐるべし。
0911nobodyさん
2014/09/17(水) 11:53:23.26ID:???よくある話やわ
0912nobodyさん
2014/09/17(水) 12:04:55.25ID:iY5IX8KP複数のファイルを読み込みたいんですが、ファイルの最初に
<?php
include("file1.php");
include("file2.php");
こんな感じで読み込むことは不可能ですか?
また、このfile1、file2のように複数のファイルを読み込む場合はどのような方法がありますか?
他の方法で出来ないわけではないですが、出来れば上記のような方法で最初に纏めて読み込みたいです。
よろしくお願いします。
0913nobodyさん
2014/09/17(水) 12:06:16.83ID:8LsJNBjRそう思う理由は何だ?
0914nobodyさん
2014/09/17(水) 12:06:33.20ID:???0915nobodyさん
2014/09/17(水) 12:13:16.74ID:iY5IX8KP普通に出来ると思ってたんですが、なぜかエラーになってしまいます。
どちらか1つにすると問題なく動くので、もしかしたら不可能なのかと思いました。
再度試してみましたがなぜか出来ません。
0916nobodyさん
2014/09/17(水) 12:18:19.17ID:???・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
0918nobodyさん
2014/09/17(水) 12:38:54.33ID:???0919nobodyさん
2014/09/17(水) 12:46:41.72ID:???0920nobodyさん
2014/09/17(水) 15:04:05.67ID:???0921nobodyさん
2014/09/17(水) 20:22:15.93ID:Jpx5qfxyPHPのforeach構文について質問
?php
$numbers = array(1, 2, 3);
foreach($numbers as $item) {
echo $item;
}
上のコード内の
forreach ($numbers as $item)
っていう部分で
「$numbersという配列を$itemと見なせ」みたいな命令をしてると思うんだけどこれってなんで
必要なの?
要するに
?php
$numbers = array(1, 2, 3);
foreach($numbers ) {
echo $numbers;
}
じゃなんで駄目なの??
0922nobodyさん
2014/09/17(水) 20:23:35.00ID:Jpx5qfxyそのまま$numbersの中のそれぞれの要素に対してechoしろ
でいいんじゃないのかなーと
0923nobodyさん
2014/09/17(水) 20:34:11.72ID:???英語の意味的にどうだとかいっても、命名した本人じゃないとわからない。
0924nobodyさん
2014/09/17(水) 20:38:44.64ID:Jpx5qfxyそういうものかあ
あざっす
0925nobodyさん
2014/09/17(水) 20:55:03.97ID:???> でいいんじゃないのかなーと
$numbers = array(1, 2, 3);
foreach($numbers ) {
echo $numbers;
echo $numbers;
}
こうした時どうなってほしいのかとか、あれこれ考えてみたら?
0926nobodyさん
2014/09/17(水) 21:08:31.08ID:???$numbersという配列(リスト)を先頭から順番に見ていって、
現在の位置(インデックス)にある値を$itemに入れるという意味。
>>921のコードだと$numbersの配列数だけ配列をechoするってコードで意味がおかしい。
PHPだけじゃなくてどの言語のForeach文も同じようなもん。
たいていinとかコロンで表してasなのは少数派だけど。
0927nobodyさん
2014/09/17(水) 21:14:25.21ID:???$numbersという配列を参照や変更したい場合どうすんのさ
0928nobodyさん
2014/09/17(水) 21:39:22.80ID:???itemが配列中の1つの要素だということは、わかってる?
foreach内で配列全体を見たくなったらどうするの?
連想配列の時どうするの?
0929nobodyさん
2014/09/17(水) 22:18:22.78ID:???foreach ($array as $val) は、 別にみなしている訳じゃない。
その意味で、foreachのasは、厳密に言えば英単語のasの意味とは少し違うかもしれん。
0930nobodyさん
2014/09/17(水) 23:19:19.18ID:???>「$numbersという配列を$itemと見なせ」みたいな命令をしてると思うんだけど
誤って解釈した結果に対しておかしいおかしいって言ってるだけじゃん
そりゃおかしいよ
0931nobodyさん
2014/09/18(木) 02:27:41.57ID:???0933nobodyさん
2014/09/18(木) 06:06:52.80ID:???0934nobodyさん
2014/09/18(木) 06:19:14.72ID:???とか何語だよと思った
日本語化は企画倒れだったな
0936nobodyさん
2014/09/18(木) 22:29:13.02ID:KawB1H3Lhttp://know-how-tree.com/archives/tag/partition
0937nobodyさん
2014/09/18(木) 23:26:06.43ID:b2+T+l6A他スレでスレ違いと言われました(マルチではないです)
下記のコードで不明点があります。
$email_sub = 'アンケートを受け取りました。';
$email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8");
$email_head = 'From:[email protected]';
mb_language('Japanese');
mb_internal_encoding("UTF-8");
mb_send_mail($email, $email_sub,$email_body, $email_head);
"$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8");"
の意味が調べてもわかりません、どういう意味でしょうか?
ダブルクォーテーションとシングルクォーテーションに対して何をしているのでしょうか?
また、何故"UTF-8"と指定しているのでしょうか?
あるいわ$nicknameに入る不正な文字列として扱われるシングルダブルクォートとダブルクォートを
無害化(サニタイジング)してる認識ですかね・・・。
0938nobodyさん
2014/09/19(金) 00:40:03.12ID:???調べても分からないとは?
http://php.net/manual/ja/function.html-entity-decode.php
このページにこの関数の情報は全て書かれていると思うが。
0939937
2014/09/19(金) 01:55:35.08ID:R/LZD/Ioそこのマニュアルを見ても、いまいちなんです・・・
上記コードの簡単に解説をお願いします。
エスケープ処理しているのですかね
0940937
2014/09/19(金) 02:02:27.72ID:R/LZD/Io$email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
のダブルクォーテーション(変数nickname以降からセミコロン前のダブルクォーテーション)を
"""として表示させず普通にダブルクォーテーションとしてるのでしょうか?
よくわかりません。
0941937
2014/09/19(金) 02:05:12.39ID:R/LZD/Ioサニタイジング、エスケープ処理なのでしょうか?
自分なりに考えた結果です、必要なら全コードも記述します。
0942nobodyさん
2014/09/19(金) 02:37:07.89ID:???>HTML エンティティを適切な文字に変換する
"や<なんかを "や<などに変換するってこと
UTF8の指定はPHP 5.5以前を使っているのなら指定しといたほうがいいみたい
html_entity_decodeはむしろエスケープ処理の逆だと思う
メール文をエスケープしても仕方ないしね
0943nobodyさん
2014/09/19(金) 02:52:29.08ID:???前段階がわからないから書かれているところだけ見ると
最期がmb_send_mail()なんだし、
html形式を作っている箇所は見当たらないから
テキストでメールを送るわけでしょ
テキストメールに実体参照が混じったら読みづらいから普通の文字列にする
UTF-8の指定は無難だからで、深く考えるほどのこともない
嫌だったらサポートされている他のコードに合わせて書き換えればいい
0944937
2014/09/19(金) 03:06:31.06ID:R/LZD/Io夜分遅くにレスをありがとうございます。
要はメールで送った際に&quot;や&lt;が本文に表示されたら
読みにくいから普通に"(ダブルクォーテーション)などで表示させるための
コード記述と考えて良いでしょうか?
0945937
2014/09/19(金) 03:09:17.63ID:R/LZD/Io<?php
$nickname = $_POST['nickname'];
$email = $_POST['email'];
$goiken = $_POST['goiken'];
$nickname = htmlspecialchars($nickname);
$email = htmlspecialchars($email);
$goiken = htmlspecialchars($goiken);
print'<p>';
print $nickname;
print'様<br />';
print'ご意見ありがとうございました。</p>';
print'<p>頂いたご意見「';
print $goiken;
print'」</p>';
print'<p>';
print $email;
print'にメールを送りましたのでご確認ください。</p>';
$email_sub = 'アンケートを受け取りました。';
$email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8");
$email_head = 'From:[email protected]';
mb_language('Japanese');
mb_internal_encoding("UTF-8");
mb_send_mail($email, $email_sub,$email_body, $email_head);
?>
0946937
2014/09/19(金) 03:11:39.61ID:R/LZD/Io"や<などを入力する人はいないと思いましたが・・・
0947nobodyさん
2014/09/19(金) 03:23:10.85ID:???0949nobodyさん
2014/09/19(金) 08:18:05.30ID:???エスケープ前の文字列を残しておけばいいのに変数を上書きしてるから、わざわざデコードしてるんでしょそれ
0950nobodyさん
2014/09/19(金) 08:46:46.41ID:???やりたかったであろうことは単に元に戻したいというだけかと。
0951937-945
2014/09/19(金) 20:50:40.14ID:R/LZD/Ioすごい悩んでいた疑問が解決できて先に進めそうです、心から感謝です!
一応整理なんですが以下の解釈・認識で合っていますでしょうか?
ご返答頂ければ幸いです。
先ずは、>>945のソースで(省略部分あり)
1. $nickname = $_POST['nickname'];で値を受け取る。
2. $nickname = htmlspecialchars($nickname); 無害化処理
勿論、$nicknameに特殊文字が混入の場合。
(例 "(ダブルクォーテーション)や<(カッコ)などを&quot;や&lt;に
変換する。
3. $email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
の変数$nicknameに無害化された特殊文字(&quot;や&lt;)が入る。
4. メールで送るのでテキストの体裁が悪くなる為に
$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8"); で
無害化されている特殊文字(&quot;や&lt;)を、"や<に戻している。
これで合っていますでしょうか?
0952nobodyさん
2014/09/19(金) 21:17:45.46ID:???0954nobodyさん
2014/09/19(金) 22:02:16.72ID:???合っていると思うよ。
ただ、そのコードなら、出力時にhtmlspecialcharsに通すべき。
print htmlspecialchars($nickname, ENT_QUOTES, "UTF-8");
こうすれば、あとで、html_entity_decodeを使わなくて済む。
まあ、そもそも、無害化したままの文字列でメール送信しても良さそうだけどね。
レス数が950を超えています。1000を超えると書き込みができなくなります。