【PHP】下らねぇ質問はID出して書き込みやがれ 136
レス数が900を超えています。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等)・フレームワークは各該当スレへ
0809nobodyさん
2014/09/07(日) 20:03:22.63ID:???0810808
2014/09/07(日) 20:09:32.57ID:nS7G6ATNすいません、意味が違いましたか。
サーバーOSというのがよくわからないのですが。
0811808
2014/09/07(日) 20:10:54.70ID:nS7G6ATNはい、ローカルマシンのOSです。
0812nobodyさん
2014/09/07(日) 23:51:00.50ID:???ホームページ転送にFFFTPを使うと書いているので。
まぁなんであれ、httpdには何を使ってますか。
0813nobodyさん
2014/09/08(月) 02:18:53.14ID:???1. 本番環境(現在借りてるレンタルサーバ)のphpinfoを調べる。
レンタルサーバのWebサイトに書いているか、書いていなければ、
<?php phpinfo(); ?>
と書いたinfo.phpという名前のスクリプトを用意して、レンタルサーバにアップロード。
そしてinfo.phpにアクセスして、本番環境のPHPの情報(バージョンや使用可能な拡張モジュール)を調べる。
2. そのへんの配布されている掲示板スクリプトをダウンロードして設置する場合、
配布者が動作させるために必要な動作環境を書いているはずなので、
1で調べた情報を見て、動作可能かを判断し、可能なら配布者の説明に従い設定を行いアップロードして設置する。
3. もし配布物を使うのでなく、自分でプログラムして掲示板を作りたい場合、
プログラムの誤動作で本番環境に迷惑をかけないために、
ローカルマシン(自分のパソコン)にテスト環境を用意する。
バージョンは本番環境より古くすると、本番環境で使えるであろう機能が使えないので、
用意するバージョンは、1で調べた本番環境より新しくしたほうが良い(最新でも良い)。
ただし逆に新しすぎる機能も本番環境では使えないし、
本番環境では使えても、新しいバージョンでは廃止された機能もあるかもしれないので、
1で調べた情報を元に本番環境に合わせたプログラムを行う事。
OSごとに挙動が違う関数もあるので、本番環境のOSが異なる場合は注意すること。
ちなみにテスト環境は他にもApacheなどのhttpdが必須で、
本番環境でも使用可能なら、必要に応じてMySQLなどのRDBMS、sendmailなどのMTAを用意する必要がある。
聞いたことない用語ばかりだろうし初心者には大変なので、3まで手を出す場合、
テスト環境はxampp(上記の必要になるソフトウェアをパッケージ化したもの)でさっくり用意したらいい。
ただし本番環境に合わせるため、最低限php.iniぐらいはいじれるようにしたほうがいい。
0814nobodyさん
2014/09/08(月) 02:25:21.23ID:???長文おつかれさまです。
> PHPをインストールしようとしているところです
まぁ、今使ってるWebサーバにPHPが既にインストールされてる確率は高いけど。
0815nobodyさん
2014/09/08(月) 08:57:24.70ID:???0816nobodyさん
2014/09/08(月) 09:15:19.29ID:???windows用っていってんだからそうなんでしょう
共有に最初から入ってるとしてもどのみちローカルに用意するのは常識
0817nobodyさん
2014/09/08(月) 23:43:32.81ID:KMZVTFPO0818nobodyさん
2014/09/09(火) 01:35:17.80ID:???文章を入れ替える、写真を入れ替える、メニューを増やす、といったレベルです
初心者のペーペーですが是非教えてください
0819nobodyさん
2014/09/09(火) 01:38:45.29ID:???0820nobodyさん
2014/09/09(火) 03:27:51.46ID:???0821nobodyさん
2014/09/09(火) 04:36:53.77ID:???0822nobodyさん
2014/09/09(火) 12:19:44.05ID:???0823nobodyさん
2014/09/09(火) 12:24:48.16ID:???XAMPPにはPython入ってないから後で追加するけど
個々に入れるのはだるびっしゅ
0824nobodyさん
2014/09/09(火) 12:34:32.20ID:3hE1eGsmhttp://--------/?q=qhd+j97/a&別の引数…
みたいな引数になるのですが
プラスとかスラッシュの特殊文字が入っていても
"qhd+j97/a"という文字列として受け取りたいです。
引数には+が入ってるかどうかは分かりませんが
入ってる可能性がありえます。
また引数の仕様はこちらではいじれない想定です。
ので、引数の+を別の文字に置き換えることはできません。
なかなか上手く引数がとれず…
どなたか解決手段分かる方おしえて頂けませんでしょうか?
0825nobodyさん
2014/09/09(火) 12:36:44.30ID:???0826nobodyさん
2014/09/09(火) 12:46:11.78ID:???parse_url()
0827nobodyさん
2014/09/09(火) 12:47:59.56ID:G9qytFmcURLはこちらでいじれないので
受け側のPHPの方でなんとかする必要があります。
引数をurlencodeできれば解決するのですが
そこはこちら側でいじれないのです
という仕様で
受け側のPHPのスクリプト内でどうにかする方法は
ありませんでしょうか?
0828nobodyさん
2014/09/09(火) 12:53:09.11ID:G9qytFmcありがとうございます。
調べて試してみます。
0829nobodyさん
2014/09/09(火) 16:40:05.18ID:???0830nobodyさん
2014/09/09(火) 17:59:57.25ID:mtYzFF/72chのVIPのIDかどうかを正規表現で調べたいのですが
IDが0-9a-zA-Z+/の64個の文字の9桁で出来ています
これを
/^[a-zA-Z0-9\+\/]{9}?$/
で正規表現を作ってみたのですが
IDに+が入った時にマッチしません
+も[]にエスケープして入れているのに
何故なんでしょうか?
PHPでやっています
0831nobodyさん
2014/09/09(火) 18:00:34.75ID:mtYzFF/7>>860
ダメでした
>>862
if(isset($_GET['id'])) {
$id = $_GET['id'];
if(preg_match('/^[a-zA-Z0-9\+\/]{9}?$/', $id)){
echo "IDです<BR>";
}else{
echo "not ID<BR>";
exit(-1);
}
}
が最小限のコードです。
と、書きつつ他の原因を調べてたところ
GETからIDを取ってるところが怪しいようです。
$idを表示させたらちゃんとIDが表示されるのですが
preg_matchではちゃんと機能してくれません。
文字列リテラルで直接ソースにIDを書き込んだら
preg_matchがちゃんと機能してくれました。
正規表現とは別の問題っぽいので
質問は取り下げさせて頂きます。
みなさまありがとうございました。
0832nobodyさん
2014/09/09(火) 18:09:55.47ID:???0833nobodyさん
2014/09/09(火) 19:08:37.29ID:???> preg_matchではちゃんと機能してくれません。
> 文字列リテラルで直接ソースにIDを書き込んだら
> preg_matchがちゃんと機能してくれました。
この流れが解せない
0834nobodyさん
2014/09/09(火) 19:35:15.13ID:???0835779
2014/09/09(火) 20:07:11.33ID:zphkCoGlありがとう!!
0836nobodyさん
2014/09/10(水) 02:27:48.27ID:oD1K+9rjありかとうございます。
これでいけました!
0837nobodyさん
2014/09/10(水) 10:23:54.55ID:???0838nobodyさん
2014/09/10(水) 20:45:36.35ID:8d0s7q5t【PHPのバージョン】 5.3.5
【連携ソフトウェア】xampp windows版1.7.4
【質問内容】
postでphp側に送られて着た値は信用できない値ということで、
19桁の数字以外はfalseを返すような仕様にしようと考えています。
このようなコードでよろしいでしょうか?
$id=$_POST['id'];
$count=false;
//idが数字19桁でないならfalseを返す
if (preg_match("/^\d{19}$/", $id)){
//処理〜 一部略
$count = $counter->log( $id );
}
$foo=array("count"=>$count);
echo json_encode($foo);
0839nobodyさん
2014/09/11(木) 01:48:08.83ID:???0840nobodyさん
2014/09/11(木) 02:05:41.45ID:???0842nobodyさん
2014/09/11(木) 07:43:13.72ID:???0843nobodyさん
2014/09/11(木) 10:21:07.50ID:???それだと
値の末尾に %0A がある場合
$id = "0123456789123456789".chr(10); みたいな場合でも通るで。
preg_match("/\A\d{19}\z/", $id) 使え。
0844nobodyさん
2014/09/11(木) 10:30:46.63ID:???RHEL6とかまだ主力ディストリだしね。
プロダクション環境次第な気がする。
>>838
ざっと見いい感じだけど、
気になるならCLIでpreg_matchの部分など煮詰めればいいじゃん。
それ以外のことなら、何を意図してるのかも書いて。
0845838
2014/09/11(木) 20:06:31.11ID:7j43Ddlkそれだと
>値の末尾に %0A がある場合
>$id = "0123456789123456789".chr(10); みたいな場合でも通るで。
>preg_match("/\A\d{19}\z/", $id) 使え。
このような挙動は知りませんでした。preg_match("/\A\d{19}\z/", $id) を
使うことにします。
>>844
やろうとしていることはページ毎のアクセス数を表示させるために、
Javascriptでページの名前19桁の数字をphpにおくり、その数字(id)で
$file = $this->log_dir . $id . '_' . md5($this::SALT . $id) . '.log';
アクセス数を書いたlogファイル名にしようとしてます。
ページの名前は一意で重複はありません。
ページの名前:年月日時分秒+乱数5桁で19桁
これを使ってやってます
ttp://php-archive.net/php/page-views/
>>841
mysqlのインストールがわからなかったんでxampp使ってます
0846nobodyさん
2014/09/12(金) 04:16:28.93ID:???UnitTestしましょう。
0847nobodyさん
2014/09/12(金) 07:41:06.41ID:???0848nobodyさん
2014/09/12(金) 09:29:30.05ID:???正規表現以外の部分にバグあるかもだろう。一行ずつにUnitテスト組む気か。
phpはインタプリタついてないからなぁ。
0849nobodyさん
2014/09/12(金) 13:52:19.20ID:lxUndFzDtest1.phpで1と入力しても
test3.phpが実行されません。
どうしたら実行できるようになりますか?
test1.php
<?php
echo '<form method="post" action="test2.php">'.
'<input type="text" name="keyword" id="input1"><input type="submit" value="検索" id="input2">'.
'</form>';
?>
test2.php
<?php
if( $_POST["keyword"] == 1 ){
echo '<form method="post" action="test3.php">'.
'<input type="hidden" name="keyword" id="Kinput" value="$_POST["keyword"]" >'.
'</form>';
}
?>
test3.php
<?php
echo $_POST["keyword"];
?>
0850nobodyさん
2014/09/12(金) 14:01:28.34ID:???test2.phpは、単にその文字列をブラウザに表示してねと指示してるだけですので、
test2にボタンを設置しないと
test3.phpには飛びませんよ。
0851nobodyさん
2014/09/12(金) 14:03:48.44ID:???test2.php
<?php
if( $_POST["keyword"] == 1 ){
echo '<form method="post" action="test3.php">'.
'<input type="hidden" name="keyword" id="Kinput" value="' . $_POST["keyword"] . '">'.
'</form>';
}
?>
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:???レス数が900を超えています。1000を超えると表示できなくなるよ。