【PHP】下らねぇ質問はID出して書き込みやがれ 120
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/06/21(木) 19:37:07.93ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 119
http://kohada.2ch.net/test/read.cgi/php/1337172256/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0728nobodyさん
2012/07/15(日) 22:30:26.21ID:???wright
wright
0729nobodyさん
2012/07/16(月) 03:34:05.92ID:xItWI94Mすみません、連投だからとsageてしまいました・・・
改めてお願いします
function datacheck($data) {
if (is_array($data)) {
return array_map('datacheck', $data);
}
else {
$data = htmlspecialchars($data, ENT_QUOTES);
}
return $data;
}
-----------------------------------
$d = $_POST['data'];
var_dump($d);
$d2 = datacheck2($d);
var_dump($d2);
$d3 = datacheck2($d2);
var_dump($d3);
上記処理をかますと、
array(2) { [0]=> string(3) "<<<" [4]=> string(2) "<<" }
array(2) { [0]=> string(12) "<<<" [4]=> string(8) "<<" }
array(2) { [0]=> string(24) "<<<" [4]=> string(16) "<<" }
となり、1回でエンティティ変換できないのはなぜでしょうか
0731nobodyさん
2012/07/16(月) 09:11:06.54ID:???第一は自分自身に対する不全感。
自分は非力で、無知で、まだまだ多くのものが欠けている。
だからこの欠如を埋めなくてはならない、という飢餓感を持つこと。
第二は、その欠如を埋めてくれる「メンター(先達)」を探し当てられる能力です。
メンターは先生でもお母さんでも、ネットの中の無名の人でもいい。
生涯にわたる師ではなく、ただある場所から別の場所に案内してくれるだけの
「渡し守」のような人でもいいのです。
自分を一歩先に連れて行ってくれる人は全て大切なメンターです。
第三が、素直な気持ち。
メンターを「教える気にさせる」力です。オープンマインドと言ってもいいし、
もっと平たく「愛嬌(あいきょう)」と言ってもいい。
「学ぶ姿勢」のある人は、何よりも素直です。
つまらない先入観を持たないから、生半可なリアリズムで好奇心を閉ざさない。
素直な人に聞かれると、こちらもつい真剣になる。知っている限りのことを、
知らないことまでも、教えてあげたいという気分になる。そういうものです。
以上、この三つの条件をまとめると、
「学びたいことがあります。教えてください。お願いします」
という文になります。これが「マジックワード」です。
これをさらっと口に出せる人はどこまでも成長することができる。
この言葉を惜しむ人は学ぶことができないのです。
学ぶ力には年齢も社会的地位も関係がありません。
>>727さんも、早く学ぶ力を身に付けてください。
0732nobodyさん
2012/07/16(月) 11:12:31.31ID:???0733nobodyさん
2012/07/16(月) 11:36:56.93ID:???0734729
2012/07/16(月) 11:53:07.77ID:xItWI94Mチェック用につくったものでした・・・ 注意不足で申し訳ありません
以下、最後にします・・・よろしくお願いします
function datacheck($data) {
if (is_array($data)) {
return array_map('datacheck', $data);
}
else {
$data = htmlspecialchars($data, ENT_QUOTES);
}
return $data;
}
-----------------------------------
$d = $_POST['data'];
var_dump($d);
$d2 = datacheck($d);
var_dump($d2);
$d3 = datacheck($d2);
var_dump($d3);
上記処理をかますと、
array(2) { [0]=> string(3) "<<<" [4]=> string(2) "<<" }
array(2) { [0]=> string(12) "<<<" [4]=> string(8) "<<" }
array(2) { [0]=> string(24) "<<<" [4]=> string(16) "<<" }
となり、1回でエンティティ変換できないのはなぜでしょうか
0739nobodyさん
2012/07/16(月) 13:31:55.86ID:xItWI94MたしかにHTMLソースを見るとしっかりエンティティ変換できてますね
ブラウザが変換されたものを認識して表示
2回目を通ると、2回変換されたものを1回分戻して表示しているから1回目が変換されたように
錯覚していたのですね
理解致しました、教えて頂きありがとうございました
ちなみに>>736は私じゃないです・・・
0740nobodyさん
2012/07/16(月) 13:57:52.34ID:QG6eRF1A出力する限りではデコード済みのようでした。
確認だけです
お願いします。
0741nobodyさん
2012/07/16(月) 14:25:27.61ID:???0742nobodyさん
2012/07/16(月) 14:29:14.51ID:QG6eRF1Aありがとうございました
0744nobodyさん
2012/07/16(月) 15:22:21.12ID:???0745nobodyさん
2012/07/16(月) 15:23:35.71ID:???0746nobodyさん
2012/07/16(月) 15:30:57.84ID:???エンコと勘違いしてないか?
0747nobodyさん
2012/07/16(月) 23:27:29.62ID:gCazxRKasession_start();〜
?>
<html>〜</html>
としたとき、グーグルクロームで上の方に空白ができるって
なんとかならないですか?
0748nobodyさん
2012/07/16(月) 23:31:36.01ID:???同じ結果ならブラウザでソースが変わるってのはない
PHPとは関係ないんじゃね
0749nobodyさん
2012/07/17(火) 11:59:23.23ID:???0750nobodyさん
2012/07/17(火) 12:12:53.44ID:???0753nobodyさん
2012/07/17(火) 23:10:16.97ID:???0754nobodyさん
2012/07/18(水) 11:40:22.77ID:???0756nobodyさん
2012/07/18(水) 14:31:18.93ID:???0757nobodyさん
2012/07/18(水) 15:14:11.38ID:???知らないことにするってことだろ
0758nobodyさん
2012/07/18(水) 15:17:04.27ID:???0759nobodyさん
2012/07/18(水) 15:26:02.07ID:???0760nobodyさん
2012/07/18(水) 16:01:21.74ID:???0761nobodyさん
2012/07/18(水) 16:01:30.12ID:ZNlQhXb2AjaxからPHPファイルにアクセスしてデータベースに書き込もうとしてるんですが、
そのPHPファイルにもユーザからのアクセス権限を与えないと書き込みできません。
これだと、ブラウザからそのPHPファイルに直接アクセスすることが出来てしまいます。
何か対策方法ないでしょうか?
ちなみにhtaccessで該当PHPファイルへのアクセス拒否を行うと、
書き込めなくなってしまいました。
よろしくお願い致します。
0763nobodyさん
2012/07/18(水) 16:13:59.13ID:???PHPerじゃないのかよ…
0765nobodyさん
2012/07/18(水) 16:20:49.01ID:???ブラウザからのアクセスを拒否したらだめに決まってんだろ
簡易的にAjax以外を拒否するなら
$_SERVER['HTTP_X_REQUESTED_WITH'] が 'XMLHttpRequest'
かどうかチェックすればいいが、
偽装可能だし携帯とかブラウザによっては対応できない
0766nobodyさん
2012/07/18(水) 16:28:51.63ID:ZNlQhXb2基本的に直でアクセスした場合は何も表示はされないんですが、
そのファイルのソースコードを見られるのが心配です。
基本的にアクセスすればPHPの処理が実行されるので、
ソースコードを見られる心配はないと思っていていいでしょうか?
ちょっと>>764については調べてみますが。
0767nobodyさん
2012/07/18(水) 16:35:42.56ID:???0768nobodyさん
2012/07/18(水) 16:39:51.44ID:???0769nobodyさん
2012/07/18(水) 16:42:58.58ID:???ApacheならApacheの設定をきちんとしておけば、
.phpのファイルにアクセスして直接ソースコードが見られることはない
そんなのは当たり前
0770nobodyさん
2012/07/18(水) 16:58:00.14ID:ZNlQhXb2じゃあ安心です。
ありがとうございました
他の方もありがと!
0772nobodyさん
2012/07/18(水) 21:57:10.90ID:LQ7IKH/x0773nobodyさん
2012/07/18(水) 23:04:03.60ID:???→ えーと メソッドは引数を持たなく、関数は引数を持つんだとおもいます
0774nobodyさん
2012/07/18(水) 23:27:25.90ID:???0775nobodyさん
2012/07/19(木) 10:29:57.12ID:???0776nobodyさん
2012/07/19(木) 18:16:00.49ID:sGB+atqj=>
ってどういう意味なんでしょうか?
特殊文字でグーグル検索すらできないので教えてください
0777nobodyさん
2012/07/19(木) 19:32:58.45ID:xIuqWu1Yselect 5555 from test order by rowid desc
ってやると、列5555の中の値が取得されずに、
5555って値が取得されてしまいます。
この原因は何なのでしょうか?
0779nobodyさん
2012/07/19(木) 19:40:36.16ID:rqfdDCV2関数
手続き
メンバー関数
プロシージャ
コールバック
はどう違いますか?
0781nobodyさん
2012/07/19(木) 19:48:55.73ID:???0782nobodyさん
2012/07/19(木) 19:51:18.24ID:???0783nobodyさん
2012/07/19(木) 19:53:13.19ID:sGB+atqj連想配列のことだったんですね!
ありがとうございます、おかげさまで理解できました!
0784nobodyさん
2012/07/19(木) 19:53:53.64ID:???メソッド≒メンバ関数 OOPに於ける機能、あるいはオブジェクトが持つ関数
手続き=プロシージャ 何度も行う処理を一纏めにした関数
コールバック 登録された関数を後に呼び出す機構。array_mapとか
0785nobodyさん
2012/07/19(木) 20:01:15.69ID:???phpでの話か?
ならプロシージャは関係無いで
メソッドはクラスに定義された関数
クラスを実体化したらオブジェクト。オブジェクトの持ち物がメンバー。
コールバックは振る舞いの引数。普通は引数とは何らかの値やオブジェクトだが、コールバックは関数やメソッドを渡す。
0786785
2012/07/19(木) 20:08:41.50ID:UpFPLEC5そうなると文脈では784みたいな捕らえ方も無きにしも非ずだけど、オブジェクト指向の対概念として語られる場合も多い。というか、そっちの方が多いんでないかな?
0787nobodyさん
2012/07/19(木) 20:24:02.11ID:???C++とかなら違ったような気がするけど。
0789nobodyさん
2012/07/19(木) 23:35:12.93ID:???→ 使用しないこと。実装が中途半端だという説もありますが、
PHP自体遅いのでOOPするとさらに遅くなり、実用に耐えません。
0790nobodyさん
2012/07/19(木) 23:47:22.19ID:???0791nobodyさん
2012/07/20(金) 11:31:16.80ID:???原因は、「それが仕様だから」
5555をIntegerとして返しているだけ。
``で囲め。''だと今度はstringとして認識されるぞ。
というかそんなフィールド名つけんなよ。
更に言えば、スレチもいいとこだ。
0792nobodyさん
2012/07/20(金) 12:37:18.13ID:aZB4pJtS【PHPのバージョン】4.2
【質問内容】セッションについていくつか教えてください。
■1.A.php B.php C.phpとあって、AとCでセッションを使いたいのですが
AとCだけにsession_start()を利用してよいでしょうか?(Bでもsession_start()をしないとCで
セッションが利用できないことはあるのでしょうか)
■2.セッションの有効期限(60分以上)を設定したいのですが、
ini_set('session.gc_maxlifetime', 3600);session_save_path("/tmp/hoge");
の2つを指定でよいでしょうか?
■3.2の設定は、session_start();の度に事前に実行しないといけないでしょうか。
それとも初回1回だけでよいでしょうか。
よろしくお願いいたします。
0793nobodyさん
2012/07/20(金) 12:46:28.72ID:???2. 直接関係あるのはsession.gc_maxlifetime
3. 動作があったら有効期限をリセットするのが普通 つまり毎回やれ
あとPHP4は特別な事情がない限りもう使わないでくれたまえ
0795nobodyさん
2012/07/20(金) 14:23:57.88ID:???0797nobodyさん
2012/07/20(金) 20:51:29.54ID:IokhYMk9その値をphpで取得すると2012-07-20 18:40:42となるのですが、
配列に時間を入れて昨日だけの値を表示や今日だけの値を表示
させることは可能なのでしょうか?
0798nobodyさん
2012/07/20(金) 20:55:06.04ID:???strtotime
explode
このへんでどうにかしてみろ
0799nobodyさん
2012/07/20(金) 21:00:41.56ID:bg/kXQpZこういう時は別ファイルにしてincludeするのでしょうか?
<?php
if(TRUE)
{
hoge(3);
function hoge($fuga){
return($fuga + 1);
}
}
?>
0800nobodyさん
2012/07/20(金) 21:06:03.53ID:???もっともPHPの無名関数は5.3以上じゃないと使い物にならんけど。
0801nobodyさん
2012/07/20(金) 21:10:02.62ID:bg/kXQpZありがとうございます。
調べて使ってみます。
0802nobodyさん
2012/07/20(金) 22:20:44.18ID:kO69dXPRチェックされた時に1が送られるというのは、できるんですが
チェックされていない時に 0を送るというのができません。
どのように記述すれば
チェックの時は1 未チェックの時は0という風にできるのでしょうか?
0803nobodyさん
2012/07/20(金) 22:34:07.18ID:???チェックボックスと同じname属性をもつhiddenを仕込んでおく。
<input type="hidden" name="data[User][done]" value="0" id="UserDone_" />
<input type="checkbox" name="data[User][done]" value="1" id="UserDone" />
0804nobodyさん
2012/07/20(金) 22:40:00.24ID:???<input type="hidden" name="a" value="0">
<input type="checkbox" name="a" value="1">
ダサかったら
<input type="checkbox" name="checks[]" value="a">
<input type="checkbox" name="checks[]" value="b">
$chkflg['a'] = 0;
$chkflg['b'] = 0;
foreach ($_POST['checks'] as $value) $chkflg[$value] = 1;
0805nobodyさん
2012/07/20(金) 23:01:44.79ID:kO69dXPRありがとうございます!!
うまくいけました!
0806nobodyさん
2012/07/20(金) 23:34:16.31ID:???もう終わった話みたいだけれど
関数をif内で定義する意味がわからない。
<?php
if(TRUE)
{
/*
hoge(3);
function hoge($fuga){
return($fuga + 1);
*/
$fuga=3;
$fuga++: //$fuga=$fuga+1;
}
}
?>
または、別の場所にfunction定義じゃ拙い状況ってあるの?
0807nobodyさん
2012/07/20(金) 23:44:19.62ID:???0808nobodyさん
2012/07/20(金) 23:49:19.86ID:???0809nobodyさん
2012/07/21(土) 00:06:15.25ID:L7H/xY51ありがとうございます。
phpはCなどに比べ、かなり柔軟に色々出来、パフォーマンスの上げ方も多彩だということをどこかで見かけていました。
今回は多分、includeと混同していたのだと思います。
そして今のコードは冗長で、ifで分岐できたらif、elseifそれぞれがちょうど纏まりそうですし、
こういうことができたらPHPの使い方に幅が出そうなので、質問した次第です。
0810nobodyさん
2012/07/21(土) 00:06:51.46ID:L7H/xY510811nobodyさん
2012/07/21(土) 00:12:28.49ID:???それよりもインクルードによるディスクI/Oの方が遅くなる
0812nobodyさん
2012/07/21(土) 00:22:13.02ID:L7H/xY51ありがとうございます、phpでもそうなのですね。
勝手に一行ずつ読みながら実行しているものと思っていました。
0813nobodyさん
2012/07/22(日) 15:40:32.42ID:GaaHC7Yrecho $B."\t";
echo $C."\t";
ブラウザに表示された上記結果を
エクセルにタブ区切りで貼り付けたいのですが、
うまくいきません。
どこが間違っているのでしょうか。
よろしくお願い致します。
0814nobodyさん
2012/07/22(日) 15:44:35.21ID:???0815813
2012/07/22(日) 15:56:50.51ID:GaaHC7Yrwhile(){
echo "<br/>".$A."\t";
echo $B."\t";
echo $C."\t";
}
説明が少なくてすみません。
whileで繰り返すようにしてて
$A[0] $B[0] $C[0]
$A[1] $B[1] $C[1]
$A[2] $B[2] $C[2]
のようにブラウザに表示されます。
ソースをコピーだと改行されないです。
説明が足りず申し訳ありません。
whileがある場合、どうしたらタブ区切りで貼り付けできますか?
よろしくお願い致します。
0817nobodyさん
2012/07/22(日) 17:51:17.49ID:???0818nobodyさん
2012/07/22(日) 17:54:58.17ID:???これで改行されるだろ
0819nobodyさん
2012/07/22(日) 19:08:18.59ID:???0820nobodyさん
2012/07/22(日) 19:12:49.74ID:LcUqLU8fロリポップの仕様かコードが悪いのがわからないので直す方法を教えて下さい
$img = "sample.jpg" ; // 読み込む画像のアドレス
$erc = imagecreatefrompng("error.png");
$size = 200
if (!($irc = @imagecreatefromjpeg($img))) // jpeg として読み込んでみる
if (!($irc = @imagecreatefrompng($img))) // png として読み込んでみる
if (!$irc = @imagecreatefromgif($img)) { // gif として読み込んでみる
// 画像が正しく読み込めなかったときの処理
$irc = $erc;
}
if (imagesx($irc) > imagesy($irc)) {
$rrc = imagecreate($size, $size * imagesy($irc) / imagesx($irc)) ;
} else {
$rrc = imagecreate($size * imagesx($irc) / imagesy($irc), $size) ;
}
ImageCopyResampled($rrc, $irc, 0, 0, 0, 0, imagesx($rrc), imagesy($rrc), imagesx($irc), imagesy($irc)) ;
header('Content-type: image/jpeg');
// jpgeg 画像として出力
imagejpeg( $rrc ) ;
imagedestroy( $rcc );
imagedestroy( $irc );
0821820
2012/07/22(日) 19:35:07.88ID:LcUqLU8f0822nobodyさん
2012/07/22(日) 19:40:58.06ID:???まずは自分のPCでやれ
0823nobodyさん
2012/07/22(日) 20:23:46.31ID:I+0QjfNz【OS名】RHEL ES4(職場サーバのテスト用に作った自家鯖です)
【PHPのバージョン】5.3.8
【連携ソフトウェア】なし apache httpdでモジュール使用(&バッチとして使用)
【質問内容】
・特定のファイルについて、今現在のファイル内容を元に変更を行い、ファイル内容を変更後の内容に置き換えたい
・変更処理の最中に他からファイル内容を変更されてはまずい為flock()で明示的にロックして読み書きしたい
上記の条件を満たそうと
$fp = fopen( './hoge.txt', 'r+');
flock($fp, LOCK_EX);
$data = fread($fp,filesize('./hoge.txt'));
〜〜$dataを元に変更処理〜〜
rewind($fp);
fwrite($fp, $data);
これでOKだな…などと考えていたのですが、コードを書いて、テストをはじめる直前に
元の内容のサイズ > 変更後のサイズ だったらゴミが残ってしまう事に気付きました。
ファイルは読み込み直前に排他ロックしたい、ファイルへの書き込み時にファイルサイズが減って欲しい時もある、
こういう時はどうしたら良いのでしょうか?
0824nobodyさん
2012/07/22(日) 20:31:17.26ID:???0825>>823
2012/07/22(日) 20:35:17.32ID:I+0QjfNzftruncateってのがあるのか、ありがとうございます助かりました
0826nobodyさん
2012/07/22(日) 20:35:35.41ID:???0827nobodyさん
2012/07/22(日) 20:55:57.16ID:???require_onc
?>
<html>
require_onceがhtmlより上にあると上の部分に
空白が開いてしまいます。なんとかならないですか?
■ このスレッドは過去ログ倉庫に格納されています