>>1 のつづき
PHP>>>越えられない壁>>>PERL
phpでsplit関数を使用して文字列を配列に格納しょうとしているのですが \ エスケープシーケンスをしっかりやっているにも関わらず、 \でsplitが出来ないです。 どうすれば良いでしょうか? $strCheckpath = "C:\Documents and Settings\All Users\Application Data\Test\AAA\BBB" echo $strCheckpath; $strVec = split("\\", $strCheckpath); print_r($strVec);
>>3 $p = "C:\Documents and Settings\All Users\Application Data\Test\AAA\BBB";
$s = split("[\\]", $p);
print_r($s);
普通はexplode使うよな
>>4 >>5 ありがとうございます。
因みに \ をエスケープする場合のみ
[ ]
で囲む必要があるのですか?
うまい説明はできないが正規表現を使う場合は囲む必要がある 以下の場合は囲まないとダメ [0-9] [a-zA-Z0-9] [\.]
OOPで、 staticな呼び出しって 基本的に非推奨なんだよね?
クラス作ってみたけどよくわからんから、とりあえず全部staticってのは無しな
>>12 rewrite
もしくはPATH_INFO使って処理する
14 :
nobodyさん :2009/04/09(木) 10:30:52 ID:8oBHOH+F
配列をPOSTして受け取ることは可能ですか?
うんname="hoge[]" var_dump($_POST['hoge']);
16 :
nobodyさん :2009/04/09(木) 16:44:52 ID:8oBHOH+F
$_POST['"tuzyo_ninzu echo($hiduke)"'] こんな感じにしたいのですが、大括弧内の書き方が分かりません。。 助けてください。。
>>16 $_POST["tuzyo_ninzu{$hiduke}"]
じゃだめなんか?
>>16 ??
よくわからない
下みたいにどこに何の変数が入ってるのか書いてくれれば答えれれるが
$array[0][0]="";
$array[0][1]="";
$array[0][2]="";
$array[0][3]="";
任意のURL内のテキストから特定の文字列を探し出し、そのデータを蓄積するプログラムを作りたいと思っています PHPで可能でしょうか? ネットゲームの得点を蓄積してランキングをつくりたいのですが
ありがとうございます その任意のURLの末尾を日にちによって変えて、定時になったら自動で蓄積するというのも可能でしょうか?
cron使えば可能 それ以外ならちょっと工夫しないと無理
UNIXですか レンタルサーバー上で自動実行させたいんですが、無理っぽいですね どうもありがとうございました
普通cronくらい使えるようになってるだろ
そうなんですか? こういう構想があるだけでPHPについては初歩の初歩くらいしかわかっていないもので申し訳ない
少なくともXREAは使えたな 使ったことないけど
とりあえず@pagesというところで借りました 検索するとperlで任意のURL内のテキストから特定の文字列の値を抜き出す方法はありましたがPHPでそれをする方法がわかりませんでした LWP::Simpleでいいんでしょうか?
そりゃしょぼいとこだけだ
なんか自分の見た世界が全てだって言い切る人っているよね
って言い切ってるわけか
>>19 ですがまったくわかりません
どういう構成にしたらいいか教えていただけないでしょうか
>>32 オンラインゲームの公式サイトのランキングページから取得するの?
構成は、ページ取って来て得点抜き出してデータファイルに書き込みするPHPと、 データファイル内容を計算してランキング表示するPHP
ttp://tenhou.net/stat/rgz.shtml えっと、このページの例えばsca20090402.log.gzにアクセスして特定の個室ナンバーの成績のみを取得したいのです
それをサーバー上で自動的にやってほしいのです
定時更新が難しいのならそのページにアクセスする度に自動取得、更新でもできればいいんですけど
誰かがアクセスした毎にそこのサイトに負荷がかかるわけだ なめてるな
身内のみ公開のページで数人単位ですしその程度の負荷は想定内だと思うのですが とはいうものの申し訳ないです 7日ごとに消えていくようなので7日に一回というのでもいいんですけどcronは難しいみたいでして・・・
アクセス毎にダウンロードいかせるのではなくて 自分の鯖に足りないものだけを取得するようにしたらいい
えーっと、readfile関数でできますか? 一応Cはやったことあるんですけど触りだけだったんでよくわかってません・・・
まず$data=file_get_contents($url)
できるかできないかの前に自分で試してからやろうな ○○がしたいいから○○関数を使ってこういうコード書いたけど動きませんならまだいいが まだ君は初歩を勉強してない段階だから背伸びはしないようにな
>>40 バイナリを読むんだからその書き方じゃアウト
>>40 フラグにFILE_BINARYを指定しないと読めないみたいですよ先輩
ちょっとした値を渡す時に、hiddenでデータの保持をするのが気持ち悪いので tmpfile()でサーバにテンポラリを作って値をチェックしてから出力してるんですけど 一般的ではないんですか?
>>44 >えっと、このページの例えばsca20090402.log.gz
>>46 いやいや確かにファイル名はtarボールっぽいけどページ開いてみ
データの取得はできましたがそこから特定の文字列を含む一行の抽出をすることができません
文字数が決まっていないのでsubstr()も使えませんし、strpos()と組み合わせてみてもいまいちでした
何か他に関数があるんでしょうか?
>>38 さんがいっているのはfile_get_contents()だと全データを取得するけど特定のデータのみの取得もできるってことですか?
ヒント fileとexplode この二つで大雑把に分解した値にできるので少し考えてからまたこい 1時間ぐらいは粘ってからこいよすぐここに聞いて解決しようとするなよ
EXPLODEが正常に動きません
何故でしょうか・・・
file関数で取得してexplode関数で一行ずつ配列にするってことでいいんですよね?
そこからL○○○○を含む配列のみを書き出すようにすればいいんですよね?
とりあえず載せてみます
$data = file('
http://tenhou.net/stat/dat/sca20090402 ');
foreach($data as $line){
echo $line."<br />";
}
$array = explode("\n", $data);
print_r($array);
正常に動かないってそれ本気で言ってるの?
申し訳ないですけど本気でわかりません
普通初心者ならPHPの標準関数より自分のコードを疑うんじゃない?
あ、いや、自分のコードのどこかが悪くて正常に動かないってことだったんですけど、 書き方が悪かったですね、申し訳ない
>>59 >表示のテストには軽い別のファイルをつかっていたので気付きませんでした
まじで?ここに議論の対象として出してるコードと自分のテストコードが違うとか頭いかれてるの?
>>57 おれがサンプル書いてやるからこれで勉強しろ
↓のをそのまま貼り付けろ
$txt[]="id,name,age";
$txt[]="1,tanaka,10";
$txt[]="2,kinoshita,20";
foreach($txt as $v){
$v=explode(",",rtrim($v));
print_r($v);
echo "<br>";
}
$data = file('
http://tenhou.net/stat/raw.shtml ');
foreach($data as $line){
$line = explode("\n", $data);
echo $line."<br />";
}
$txt[]="id,name,age";
$txt[]="1,tanaka,10";
$txt[]="2,kinoshita,20";
foreach($txt as $v){
$v=explode(",",rtrim($v));
print_r($v);
echo "<br>";
}
としたら
Array
〜中略〜
Array
Array ( [0] => id [1] => name [2] => age )
Array ( [0] => 1 [1] => tanaka [2] => 10 )
Array ( [0] => 2 [1] => kinoshita [2] => 20 )
となりました
explodeで区切ってもそれぞれが$v[i]に格納されるわけじゃないんですね
それはわかりましたが本体のほうはどこが悪いんでしょうか
一行ごと取得して改行で区切るというのがおかしいんでしょうか
>>63 おまえさほんとに基礎から学んだ方がいいよ
ちょっと舐めすぎてましたね 今回は諦めますわ 付き合ってくださった皆様本当にありがとうございました
>>65 とりあえず以下の事を学習したらまたこい
if
for
switch
while
変数の扱い
どうも、そうやって示してもらえるのはとてもありがたいです 何から手をつけていいかさっぱりなので またきます
>>66 おまえ言葉はキツイはけっこう良いやつだな
ツンデレってやつか
セキュリティの本読んでたら PHP_SELF が危険、って書いてあって、 具体的にどう危険かというと、 javascriptで、任意の文字列を 送り込むことが可能、って書いてあって、 そんで聞きたいのは、 SCRIPT_NAMEでも同様なのかどうかってこと。 htmlspecialcharactersでサニタイズ必要?
htmlspecialcharactersなんて関数あったっけ?
>>17 変数に括弧いらないよ
$_POST["tuzyo_ninzu$hiduke"]でおk
下みたいに配列変数の時はいるけどね
$_POST["tuzyo_ninzu{$hiduke[0]}"]
明示的に変数と文字列を区別するのはいいこと
phpに.NetのDataTableみたいな便利な昨日は無いの? 配列で代用するしかないの?
77 :
nobodyさん :2009/04/13(月) 12:19:30 ID:ecVuinBp
.htaccessで下記を設定し、htmlファイルをPHPとして動作させております。 RemoveHandler .html AddType application/x-httpd-php .htm .html html内で下記のようにPHPで書かれたhtmファイルをincludeしているのですが、 <?php include("〜.htm");?> 〜.htmでは通常のPHPの書き方で下記のように書いております。 <? $url = parse_url($_SERVER['REQUEST_URI']); $dir = $url['path']; : サーバ移行前では〜.htmもしっかりとincludeされ期待通りの出力がされて いたのですが、サーバ移行をした途端、〜.htmの内容がそのまま出力され るようになってしまいました。 何か該当する設定がありましたらご教示いただけると助かります。 宜しくお願いいたします。
<? ←この記述が設定上許されてないとか?
79 :
nobodyさん :2009/04/13(月) 13:22:46 ID:ecVuinBp
>>78 有難うございます。
この設定を有効にするにはどの部分を見てみたら良いか、
できればご教示ください。。すみません。
javaみたいな表記にしろってことじゃん?それかphp
php.iniのshort_open_tagをonにすればいいじゃね
short_open_tagがONの鯖は借りるな! short_open_tagがOffで動かないソースは書くな! short_open_tagで書かれたフリースクリプトは今すぐ投げ捨てろ!
>>81 ありがとうございます。
おかげさまでなおりました。
この場をお借りし御礼申し上げます。
>>82 たしかにこれはよくないですね。。
改善の方向で考えます。
MySQLのSelectで100件ぐらいデータがヒットしても それを全部表示しないで、1画面に20件ずつ表示させるには どうすればいいですか?
limit 0, 20
いや、SQLで先頭20件出すんじゃなくて、ECHOで20件ずつ表示していく (「次」をクリックすると次の20件が表示される)ようにするにはどうすればいいでしょうか?
DBから取得した値を可変の配列に格納しようと思ってるのですが、 .NetのArryalListに似たコードはありますか?
まずは.NetのArryalListがどんなものか説明すれば?
あの、
>>35 ですけど取り込むことはできたんですが、文字化けが解決できません
エンコードの問題ではないみたいなんですが・・・
short_open_tagがONの前提でコード書くじゃん。 そしたら、そのサーバーが、設定で short_open_tagをOFFにしたとたん、 全部のPHPのソースコードが丸見えになるよ。
>>85 ,89は自閉症
コミュニケーション障害
そのくせ自分がえらいと思っている
自己紹介乙
PHPの初心者向け教本教えて下さい。
はじめてのphp言語 プログラミング入門
独習PHP 実践マスターPHP+MySQL 速効!図解プログラミングPHP + MySQL
宣伝乙
どれがいいんだよw
SJC-Aを落ちた俺がPHPをやりたいと思ってます
と聞きたい事が書いてあった・・・・
>>97
●はじめてのphp言語 プログラミング入門 ●独習PHP ●実践マスターPHP+MySQL ●速効!図解プログラミングPHP + MySQL
104 :
nobodyさん :2009/04/25(土) 00:26:24 ID:SLuxKVD8
プラグインのsecedit.inc.phpを導入しようとしたらエラーが出て困っています。
ttp://www.luntf.com/?secedit.inc.php#h166c4a3 ←配布元です。を、見ながらやっていたのですが
Fatal error: Call to undefined function plugin_secedit_wrap() 〜〜/pukiwiki/lib/convert_html.php on line 260
と出たため
lib/convert_html.phpの260行目を確認してみたのですが、その部分は配布元に書いてある+部分の追加する文の
$secedit = plugin_secedit_wrap($string, $tag, $param, $this->id);
であり、どこがおかしいのかもうさっぱり分からないのです。ならばと思い、前後の文章の
function canContain(& $obj)
{
return FALSE;
}
function wrap($string, $tag, $param = '', $canomit = TRUE)
{
$secedit = plugin_secedit_wrap($string, $tag, $param, $this->id);
return $secedit ? $secedit : parent::wrap($string, $tag, $param, $canomit);
}
function toString()
{
return $this->msg_top . $this->wrap(parent::toString(),
'h' . $this->level, ' id="' . $this->id . '"');
}
}
ここまでをコピペしてみたのですが、エラーの文章は変わりませんでした。
グーグルで「secedit.inc.php エラー」等調べてみたのですが、解決出来るようなものはHITせず、
途方に暮れています。どうか力を貸してください、お願いします。
lib/pukiwiki.phpに require(PLUGIN_DIR . 'secedit.inc.php'); ちゃんと書いてるの?
>>105 遅くなって申し訳ありません、確認してみたところlib/pukiwiki.php内で
↓のように、}の位置が間違っていた事が原因でした。
require(PLUGIN_DIR . 'secedit.inc.php');
}
修正したところエラーが消え、seceditがちゃんと追加されて問題なく動かせるようになりました。
お手数をおかけしました、ありがとうございます。
>>106 localにphpの実行環境作りなされ
xamppで充分だから
あるドメインで、サブドメインを利用して別のシステムを運用しようとしています。 aaaa.hogehoge.jp と bbbb.hogehoge.jp この2つはシステム上の関連性はなく、全く別のデータベースを使います。 aaaa.hogehoge.jpではsessionは使えるのですが、bbbb.hogehoge.jpのほうではsessionが使えません。 色々調べてみたのですが、どうもbbbb.hogehoge.jpではクッキーが使えないようで、手動でPHPSESSIDを渡してやるとsessionが使えます。 setcookieを使っても、Windows上でクッキーのファイルも生成されず、クッキー自体が使用不可になっているようです。 ちなみにIE6.0ですが、Firefox2でやると両方ともsessionはOKでした。 こういう事って何が原因なのでしょうか・・・未熟な私にはサッパリわかりません・・・。
DBもアプリも別のシステムで一切共用部分無いなら aaaa.hogehoge.jp は関係なくね? IE6.0限定とか言ってるけど、別のクライアント(PC)でもそうなの?
同じサーバーで同じドメインに共存しているシステムでどうして片方はクッキーが使えないのかな、って。 会社のPCと家のPC、友人のPCで試しましたが同じくIEではダメでFirefoxではOKでした。 友人のPCはIE7.0です。
>>107 xamppすすめてんじゃねえっ!!!!!!!!!!!!!!!!!
>108です。 ちなみにこういうスクリプトです。 --- index.php --- session_start(); session_register("test"); $test = "aaa"; print "<a href='test.php'>".SID."</a>"; --- test.php --- session_start(); print $test; $testの部分を$_SESSION['test']とかにしてもダメでした。
print $_SESSION['test'];
後出し? 内容変わってる?
>>108 「システム上の関連なく」
>>110 「同じサーバーで同じドメインに共存しているシステム」
>108です。 混乱させてすいません。 サブドメインaaaaとbbbbは、システムとしては何の関連もなく、ただ単に同じサーバー上の同じドメインにあるというだけです。 サブドメインでシステムを切り分けているだけです。 試しにサブドメインaaaaに入っているシステム(sessionもcookieも正常に動作)を、サブドメインbbbbに移してみたのですが、 やはりsessionもcookieも動作しません。ということはスクリプトは関係ないみたいなのですが・・・。 サブドメイン名で何かやっちゃいけない事とかあるのでしょうか? bbbbというのは仮名称でして、実際に運用しているサブドメイン名は違います。
PHPは?
>108です。 追加です。 試しに同じドメイン内に別のサブドメイン名を新たに作り、先ほどのテストスクリプトを入れてみたところ、 キチンと動作しました。 となるとサブドメイン名が怪しいとなるのですが、 (「x」は任意の文字) sessionとcookieが動作しているサブドメイン名 ・xxxx.hogehoge.jp ・xxx-xxxx.hogehoge.jp (実際に運用しているシステムが入っています) cookieが動作しないサブドメイン名 ・xxx_xxxx.hogehoge.jp (今回新たに制作するシステムです) となるのですが、サブドメイン名に命名規則というものはあるのでしょうか? アンダーバーを入れたのがマズイのかな・・・ ちなみにアンダーバーを入れたサブドメインを3つ作りましたが、3つともcookieは動作しませんでした。
そんなどこの馬の骨とも分からないblog信じていいの? サブドメインが使えるって書いてあるblogがあったらどうすんの?
>>122 サブドメインのアンダーバー使うとIEでセッションが使えないのですよ
恥ずかしいやつだね
>>122 のレスにクソワロタwwwww
アンダーバーが使えないのは常識だぜ?w
釣りで言ってるだけだよな?wwwww
ファイルをダウンロードさせるときに、 IEとファイヤーフォックスで 仕様が違う、と教科書に書いてあるのだが、 本当なのか?
うん
そんで、その教科書に、 「ブラウザによって挙動が違うので、 ブラウザの種別を判定して、 それぞれに最適化された ダウンロード用のコードを書かないといけない」 って書いてあるんだけど、ほんとにそんな めんどくさいことするの?
質問するならもっと具体的に
エラー表示についてなんですが 借りてるレン鯖では.htaccessでのディスプレイエラー抑制ができないので ini_set('display_errors', 0)で表示されないようにと考えています ただマニュアルには >スクリプトが致命的(fatal)なエラーを発生した場合は その設定は反映されません。 とあります これはFatal errorのときは上記設定してもエラーメッセージが表示されてしまうということですよね しかし試しに存在しない関数を呼んでみたところ(Fatal errorがでます)ちゃんと設定が反映されて 画面にはエラーメッセージが表示されません 意図的にFatal errorを出す方法をあまり知らないのですが、エラー内容によってはマニュアルの記述通り ini_setの設定が反映されないということもあるのでしょうか 表示される可能性があるならini_setでの設定はあきらめてerror_reporting(0)で抑制しようと思うのですが
3行で
>>131 ちょっと解釈が違う。マニュアルが言ってるのはFATALでini_setが実行されなかった場合。
ini_setが記述されてるスクリプトそのものがFATAL出さなければ、その後のエラーはもちろん出ない。
で、結局のところ出したいの? 出したくないの?
>>133 エラーメッセージがブラウザに表示されないようにしようとしています
ini_setは一番最初に書いているので問題なければ以降のエラー表示が制御されるのはわかりました
ini_set時点でエラーが出るかもしれないからそれには@をつけておくとして
あとはスクリプトファイルを開いた時点で出るようなエラーがあったらエラーが表示されてしまうってところでしょうか
ちょっと不安ですがini_setを使う方法でエラー表示を出ないようにしてログを書き出すようにします
ありがとうございました
__callメソッドから以下の様に異なったシグニチャを持つメソッドに 適切な数の引数を渡すにはどうしたらいいですか? hoge( $arg1, $arg2 ) fuga( $arg1, $arg2, $arg3) extract( $args )でだめですた
>>135 function __call($name, $args) {
call_user_func_array(array($this, $name), $args);
}
引数の数ぐらいは確認した方がいいと思う
後、適当に作ったサンプル
<?php
class Test {
public function __call($name, $args) {
call_user_func_array(array($this, $name . $name), $args);
}
private function hogehoge($p1, $p2) {
printf("call hogehoge : p1 = %s, p2 = %s ¥n", $p1, $p2);
}
private function fugafuga($p1, $p2, $p3) {
printf("call fugafuga : p1 = %s, p2 = %s, p3 = %s¥n", $p1, $p2, $p3);
}
}
$obj = new Test();
$obj->hoge('aa', 'bb');
$obj->fuga('123', '456', '789');
137 :
135 :2009/05/09(土) 01:45:15 ID:???
>>136 トンクスです。あくまで可変長でなければ意味がないため、
今回は暫定でevalを使うことにしました。
$expr = '$return = $exec->invoke( $this->_logic, $dbh ';
foreach ( $args AS $key => $value) {
$expr .= ', $args[' . $key . ']';
}
$expr .= ' );';
eval( $expr );
138 :
135 :2009/05/09(土) 02:20:39 ID:???
連続スマソです。
>>136 求めているものそのものでした。
勘違いしてスルーしてしまうとこですた。
ありがとうございます。
以下経緯
・何だ、オーバーロードか。
・PHPってたしかオーバーロードなかったんじゃネ?
・読み返してみよう。
・メソッド名違うじゃネーか…OTL
・デバッグしてみる
・ktkr
オーバーロード・・・?
<?php $data=array('山田','掛谷','日尾','本田'); $data[0]='よしひろ'; $data[]='薄井'; print_r($data); ?>
>>139 public hoge($a, $b){
}
public hoge($a, $b, $c){
}
とメソッド名が同一で引数のみが違うものが定義できるのがオーバーロード。
PHPのoverload関数とは違うことを言っているのだとおもいます。
142 :
nobodyさん :2009/05/16(土) 15:25:22 ID:9VwjgWwZ
そもそもPHPを始める前の質問で、恐縮なんですが、 先日、linuxの勉強をしたく、また、脱xamppの為に 自宅のwindows上にvmware player+centOS(CUI)にてローカル環境を作りました。 が、今まで、xamppでしか勉強した事がなかったので、どう言う風にコーディングしていったら良いか、 さっぱりなのですが、皆さんの中で似たような環境でPHPをお書きの方は、どう言う方法で 作ってらっしゃるんでしょうか?よろしければ教えていただけないでしょうか? ・windows上+エディタにてコーディング→SSH,などで放り込んで、動作確認 ・Sambaで共有かけて、windows上のエディタから直接centOS内のファイルを直接作成して、そのまま動作確認 ・centOS(GUI)+centOS上のエディタにて直接開発 など、皆さんの開発方法、または、お勧めの方法などありましたら お手数かと存じますが、よろしくお願いいたします。
PHPの勉強をしたいなら、xamppがおすすめ
>>143 まず率直に言わせてもらうと「そのくらい自分で調べて決められないうちはlinux習得なんて夢のまた夢」です。
ちなみに私はwinscpでエディタを自分好みのものに紐付けてやってます。sambaもいいですね。
sambaはパーミッションいじるのが面倒くさい
昨日に引き続き長文申し訳ないです。
自分の今の環境かき忘れてました。
もともとperlでがちゃがちゃやっているのでEclipseを使っており。
PHPもそのままプラグインつっこんで、Eclips+winscpにて行っております。
しかし、PHPの場合はそれ以上に何か、効率の良い組み合わせないかなぁ
と、そのまんまでいいかさっぱりになったのでだ質問させていただいたしだいでした。
>>144 ありがとうございます。
元々XAMPPはつかっておりましたが、cakephpを触り始めるにあたり、
これを気にlinux系に走りたかったのです。
XAMPPさんにはお世話になりました。
>>145 本当にそうですね・・・。
自分の検索能力の低さに泣きました。
二日ばかり日本語サイトと英語サイトをふらりふらりとしましたが、
開発環境の作り方は書いてあっても、開発アプローチがあまり見つけられなかったもので。
linuxとりあえず現在は付属の--helpやらマニュアルやらを読んで特につまらずいけております。
viが楽しすぎる。でもこれからが、検索能力の低い自分には本当の地獄ですよ。がんばります。
それにしてもwinscp良いですよね…。個人的にはsambaでやるよりも好きです。
ご忠告、情報ありがとうございました!
>>146 sambaはたしかにパーミッションをわざわざ設定するのがめんどいですよね…。
となると、やはり、それ以外の方法になりますねぇ・・・。
現在回りにプログラマもおらず困っておりました。大変助かりました。
皆さんありがとうございまいした。
それでは、失礼いたします。
148 :
名無し募集中。。。 :2009/05/27(水) 03:00:59 ID:zm02WRTp
xampp for linuxってのがあってだな
>>147 いちどに二つ変えるのはダメだよ
cakeを学ぶなら、新しい要素はcakeだけにして、
xamppはいままでどおり使わなきゃ。
150 :
nobodyさん :2009/05/28(木) 06:51:29 ID:q+a4ZRqn
スレ違いならすみません。 みなさんはブログを1から作ったことがありますか? 僕は上司に頼まれたのですが、1から作ったことがないので ためらってしまいました。(1人で) みなさんは1人でブログを1ヶ月で作れといわれたらつくれますか? できない僕がおかしいのでしょうか。 後できればphp+mysqlでブログの作り方が載っているサイトとかありませんで しょうか。 googleで検索しているんですが、いいサイトがありません。 こちらもよろしくお願いします。
どの程度のレベルを求められてる話なのか知らんが、ド素人でも無い限り 一ヶ月もあれば簡単なblogなんて楽勝だろうよ。BBSの延長なんだし。 むしろそれくらい自分で作れないとこの先やっていけんよ。仕事だろ?
ブログを作るって、ブログシステムを作るって事なの? それともMovableTypeなんかを使ってブログを作る事? とりあえずオレは会社の業務命令で自治体向けのSNSシステムを一人で一ヶ月かからずに作った事があるから、出来るんじゃね?
phpメールフォームを設置しようと思い"sendmail.php"というものをDLしました。
フォームの設置ができ、試しにフォームからメールを送信したのですが指定先に届きませんでした。。
ググったら"sendmail path"というものの設定をしなきゃいけないと出て
書いてあるとおりに設定したのですが、php.infoを見ると"sendmail path"の所が
"no value"となったまま変わらないんです。。
Apacheをリスタートしても変わりませんでした。
教えて頂きたいです。
[php.ini]
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
sendmail_from
[email protected] ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =/usr/sbin/sendmail -t -i
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
セミコロン外す必要があるよ php.iniの編集したことなかったん?
>>154 ありがとうございます!
やってみます。
はい、編集初めてなんす。。
趣味の範囲でなんですけど俺には難しいっす。
156 :
nobodyさん :2009/05/28(木) 20:36:59 ID:pePXJ68I
>>151 仕事です。
>>152 MovableTypeは使いません。
ブログシステムを作るということです。
がんばってみます。
すいません。
泣き言を言って。でも1人で作るというのが怖い。
もし納期に間に合わなかったらとか。
どこかブログの作り方を説明しているサイトはないかな?
本とか。
>>156 blogの作り方そのものを書いてるサイトはあまり無さそう。
フリーで公開されてるものは多々あるから、それの中身見たほうがいいと思う。
本はそれなりに大きい本屋行けば簡単に見つかると思うが。
ん、まて。納期って検証込みで一ヶ月か? 本来無茶な期間ではないが、お前さんのスペック(検索力込み)の低さでは無茶かも。 職場の先輩とか相談できる相手いないのかい?
>>152 おまえのアレ、OpenPNEのソースパクってきて、
見た目を変えただけやん。
ブログって1から作るのメンドクサイだろ。 ページングやらカレンダーとのリンク、画像のアップロードやらは必須だろうから、素人が1ヶ月では無理だよ。 セッション管理とかからんだら限りなく無理。
仕様書が無いと仕事ができないくせに、 「プログラマーが一番偉い仕事なんです」 とかってふんぞりかえるのって、なんなの?
Webアプリでガチガチの仕様書なんて要らないよ。 Amazonやら楽天なんかのシステム規模ならともかく。 要件聞いたらプロトタイプさくっと作って、デモしながら基本設計固めたほうが早い。
file_get_contentsを使って.txtファイルを読み込んだら ファイルの中身が改行されずに表示されたんですが どうすれば改行が反映されるのでしょうか?
content-typeをtext/plainにするか、改行をbrタグに変換
>>157 webサイトがないんですよ。
ECサイトは1ヶ月で作ったことがあるんですが、
ブログとなると、カレンダーや画像やRSSやいろいろ
絡んできて。
本でいいのありますか?この間ジュンク堂行ってきたんですが、
カスタマイズ本しかなかった。
>>158 納期って検証込みで一ヶ月です。
ECのほうはそういう本があって無事作れたんですが、
ブログは参考になる本がなくて、webも。
先輩も忙しくて自分で作ってといわれると胃がキリキリ
いたんで。仕様書も自分で作って。
アメーバブログ並を求められるのですが。
これみなさん作れますか?
>>160 めんどくさいというかわからない部分が聞けない
>>162 客に説明しないといけないので、仕様書必須です。
後ブログサイトのデザインもします。
>>165 ameba級を仕様書+設計+制作+検証込みで一ヶ月か。おまけにサイトデザイン?
そりゃ無理とは言わんが相当無茶なスケジュールだ。先輩が忙しくて構ってられんのも頷ける。
明らかにプロジェクト組んでる奴(上司)がおかしい。
でもECよりは楽だと思うんだけどなぁ。とりあえず考える前に作ってみたら?
フレームワーク使えるなら一週間でプロトは出来るでしょ そこからが長いけどw
なんでwordpressのカスタマイズではダメなのか、 理由は聞いたのか?
フレームワークってのは プロトタイプを作るためのものなの?
ameba並って管理側のシステムも含めてるのかな。だったら無謀。
>>169 たぶんプロトタイプの解釈が異なってるw
>>164 レスサンクス、だめでした。エディターはEMエディター使っているんですが
改行設定が悪いのかもしれません。どこで設定できるのかわかりませんが
もうちっと調べて見ます。
>>165 ブログ作成なら「作って覚えるPHP+MySQLアプリケーション―
ブログ、ショッピングサイトからマッシュアップまで 」とか言うのがありますが
アマゾンのレビューは良くないですね。
アメーバブログ級か・・・ 見る側のみなら大丈夫かもしれないけど、管理側までとなると一ヶ月では難しいんじゃまいか。 仕事と自分の体、どっちが大事かよく考えて受けた方がいいんじゃない?
175 :
173 :2009/05/28(木) 23:57:19 ID:???
自己解決しますた
176 :
153 :2009/05/29(金) 03:27:15 ID:3dHCHvMm
失礼します。 先ほどsendmailについて質問をさせてもらったものですが、やはり出来ませんでした… パスを/usr/sbin/sendmail -t -iにするには、何かインストールする必要があるんでしょうか? Xmailというものが引っかかりDLしていろいろやってみましたがダメでした。
sendmailのpathが合って無いんじゃない? which sendmailで探してみ
localhostが名前解決できてない可能性もある
つかログくらい見ろって話だ
180 :
nobodyさん :2009/05/29(金) 09:11:52 ID:4+pBIE+V
>>166 ECは大角本があって非常に助かりました。
ブログはいい本やサイトがないですが、がんばります。
簡単なのは作れたんですが、カレンダーや管理画面等
が難しく。
>>167 フレームワークはできません。手続き型です。
>>168 自社で開発して販売にもっていこうとしているみたいです。
>>170 そうですか。どうしよう。
>>174 胃が痛いし、夜も眠れません。
正気か・・・
>>180 カレンダーとか認証とか、pearにいくらでもライブラリすっ転がってるでしょ。
本に書いてある通りにしか書けないタイプだとしたらこの先あまりに辛過ぎる。
つーか間に合わなくてもいいからフレームワーク使っとけ。後で誰も手伝えなくなる。
>>180 とりあえず納期の事で胃を痛めてても仕方ないから2chなんて見てないで
作業進めちゃったほうがいいよ。販売云々は今は考えるな。営業の仕事だし。
一ヶ月勉強期間もらったと思えばいいんじゃない?
185 :
nobodyさん :2009/05/29(金) 12:06:30 ID:b8Gghdtq
下のような感じでページからShowRes()を呼んでデータの取得をしようとしてるんですが どうしてもGetData()のmysql_queryで値が取れません $dbhにはリソースIDも入っているしSQL文もphpMyAdminで実行すると問題なく通ります。 またShowRes()を関数にしないでページに直接書くと実行できます。 ずっとはまっててもうトホホな状態です。 何が悪いんでしょうか? function ShowRes() { $dbh = mysql_connect($db_host, $db_username, $db_password); if ($dbh === false) die("db access error!"); mysql_select_db($db_name, $dbh); foreach () { $ret = GetData($dbh); } } function GetData($dbh) { $intRet = 0; $strsql = "select 〜"; $res = mysql_query($strsql, $dbh); while ($row = mysql_fetch_assoc($res)) { $ret = $row; } return $ret; }
そりゃShowRes()の中で$db_host, $db_username, $db_passwordはnullなのでは?
>>186 う、もろそうでした
includeすればそのまま変数が使えるのかと思ってました。
ありがとうございます
助かりました
超初心者質問すません…。 ヘッダなどは省略しますが、Webブラウザで、 <?php print("AAAAA"); print("BBBBB"); ?> のファイルを読み込むと、AAAAABBBBBと表示されますが、AAAAAを表示後、画面をクリ アしてからBBBBBを表示するには、どうしたら良いでしょうか? print("AAAAA"); --ここ-- print("BBBBB"); --ここ-- に何を書けば良いのか見当がつきません。 どうか教えてくださりませ。
クリアって?
画面を一旦まっさらにすることです。 今まで表示されていた内容を一旦全部消したいのですが…。
Aは何秒表示するの?
秒数ではなく、AAAAA画面内でボタンのクリックがあったらBBBBBへ移行したいです。
Bのページへのリンクを張っておけばいいだけの話ではなくて? それとも画面遷移なしで変化させたいと?
AAAAA画面内で、ダウンロード用データの生成を行っているのですが、結構大きなデータで、生成に時間がかかります。 そこで、生成中はAAAAA画面で「生成中です。しばらくお待ちください」のメッセージを表示して、生成が完了したら、 画面遷移なく、「生成中〜」をクリアして、ダウンロード用のボタンを表示したいのです。
最初にそう言えよ
超初心者ですから。 やさしくお願いしますです。
<div id="hoge">生成中です。しばらくお待ちください</div> 処理が終わったらJavascriptで document.getElementById("hoge").innerHTML = "<input type='button' 〜"
あざっす! 解決しました。
199 :
nobodyさん :2009/05/29(金) 19:25:42 ID:05XbjRtm
PHPでの簡単な入力フォームに挑戦しています。 今の所POSTとsessionを使って 入力ページ(a.php)、確認ページ(b.php) 完了ページ(c.php) という流れで、 入力したデータをPOSTでb.phpに送る、 b.phpではSESSIONにPOSTを格納、POSTの内容をユーザーに確認させ、 問題なかったら送信をクリック、 c.phpページで「送信しました」表示と共に 指定のメールアドレスにmb_send_mailでSESSION内容を送信して session破棄 とまでは出来たのですが、 b.php、c.php共にに直接アドレスを入力すれば表示できてしまう状態です。 c.phpではmb_send_mailを使っているので、c.phpに直接アクセスされると 空のメールを指定したアドレスに送信してしまう始末です。 これを b.phpはa.phpを c.phpはb.phpを経由しないとアクセスしないようにしたいのですが、 どのようにすれば言いのでしょうか? リファラで、前のページを取得して、b.phpではa.php以外なら c.phpではb.php以外なら、error.htmlに飛ばすような概念でしょうか?
>>181 >>182 正気みたいです。毎日社長が進歩確認しにきます。
>>183 フレームワーク聞いてみました。
だめだそうです。手続き型で書いてくれとのこと。
うちの会社だれもフレームワーク使えないからが理由らしいです。
本当はZend Frameworkを使いたかったのですが。
>>184 はい。がんばります。
なんだネタか…
a.phpでSESSION変数に何か書きこんで、b.phpでその値を参照&破棄するというのは?
203 :
199 :2009/05/29(金) 21:36:35 ID:???
>>202 レスどうもです。
なるほど、a.phpのほうからb.phpの方へも別のsessionをわたして
issetで判定すればいいんですかね。
c.phpの送信完了画面ではb.phpでSESSIONにPOSTが
すでに格納されてるわけですから、
c.phpでもSESSIONの空判定をすれば
c.phpで空メールが送られてくることもなく
b.php、c.phpともにSESSIONが空の場合、if分岐でエラーの表示をだせばいけそうですね。
sessionで判定という脳みそがなかったです。
ありがとうございます。
ちなみに、ちょっと調べてたらセキュリティソフト等の関係でリファラを残さない人や
ブラウザのプラグインで同じような事をしている人がいるとかで
リファラチェックはあまり使わないほうがいい、という情報もみかけましたが
普通みなさんは、特定のページのみからアクセスを許可させたい場合
どのような処理をされてるのでしょうか?
やはりsessionですか?
204 :
199 :2009/05/29(金) 22:31:49 ID:???
>>202 追記です。おかげさまで解決しました。
最初issetで判定してたのですが、うまくいきませんでしたが
!emptyでSESSIONの空判定をおこなったところ、
SESSIONデータの有無で表示の分岐ができました。
ありがとうございました。
>>180 できあがったものを売るとして、
wordpressに勝てると思った理由は聞いたのか?
そもそもWordpressベースのカスタマイズでも自社パッケージにできるのでは GPLだからソースは出さなきゃならんけど
ソース出したくない場合、 MySQLみたいにデュアルライセンスの ブログってないの?
ライセンスが緩いのは有名どころではApache Rollerくらいじゃね Javaだけど
>>180 PHPで出来る部分はさておいたとして、
WYSIWYGとか、どうするんですか。
アメーバとか見たこと無いけど、wordpressとかその他ブログとかCMSに必須ってぐらい
くっついてるけど。
WYSIWYGこそTinyMCEとかでいいのでは
LGPLか。 GPLと名のつくものは何となく怪しい雰囲気が満載だな。
GPLがなんなのかすら理解してないなら使うなよ
おう、なんなのか理解できないから使わないぜ。 別のライセンスを有するものにGPLライセンスのライブラリを組み込んだらGPLになるのかとか、 さっぱりわからん。 mysqlのFLOSSもさっぱりだったよ。
214 :
nobodyさん :2009/05/30(土) 06:01:27 ID:QHjSHhWO
>>205 もうね。だめだよ。
wordpress使うより自社で作ったほうがいいとのこと。
よくわけがわからん。
今日も泊りだな。なにやっているんだが。
>>209 WYSIWYGなんか考えてません。
逃げることを考えています。
tinyMCE、すごくいいんだが日本語環境は基本、考慮されてないので時々送信内容が消えたりする。 バージョンアップされてさらにバグるようになったし、ダメぽorz なにかいい代用WYSIWYG、ないもんかのう・・・
今時日本語だから駄目なんだとかトンチンカンなこと言ってる奴いるのか
217 :
nobodyさん :2009/05/30(土) 21:20:27 ID:MvhC1epf
Web制作から来ました HTMLトップページの一部に文章を書き、その部分が数日経てばor文章が数本溜まれば、 過去ログとしてその部分が「○日の更新」として別のページに自動的に溜まって行くという 簡単なブログのようなシステムを作りたいです Web制作板でPHPの存在を知って、過去ログの方に自分で文章を書き、 そこから一部分をトップページに反映させるというシステムの方が良いと思いました とりあえずPHP5とPHPテンプレートエンジンのSmartyはダウンロードしましたが、 そこからどうしたら良いのかさっぱり分かりません ご教授お願いします
218 :
nobodyさん :2009/05/30(土) 22:13:47 ID:SuG3TKng
やり方は無限にあるから、コレ一個で答えられないよ。 簡単な方法は、CSVファイルに、 "年月日","文章" "年月日","文章" "年月日","文章" ..... という風にデータを用意して、PHPで一行づつ読み込む。 年月日と現在日を比較して、条件が合えばトップページに表示し、それ以外は過去ログページに表示するなど。 因みにsmartyは必須じゃない。プログラムとデザインテンプレートを分ける必要があれば使うだけのもの
ブログ使え
>>217 まずblogを触って、自分好みにカスタマイズするところから始めたほうがいい。
一から作るのは大変だし、それで文章書く気力失っちゃうのはもったいない。
221 :
nobodyさん :2009/05/31(日) 02:06:11 ID:ONuTHT0e
トップページにブログがあるとブログサイトになってしまうのでそれは避けたいです あくまでトップページの端の短いコラム的な位置づけでやりたいんですが ブログの日記の部分だけをHTMLの一部に組み込めないですかね 弄ろうとはしてみたんですがどうしても要らないところが残るし、 そのページ全体がブログになってしまいます PHPをもう少し勉強してみて無理そうだったらHTMLで手動でするしかないですかね
222 :
nobodyさん :2009/05/31(日) 02:37:18 ID:V0G3lcFV
223 :
nobodyさん :2009/05/31(日) 03:29:49 ID:ONuTHT0e
俺だったら ・適当なブログを(トップ以外に)入れる ・トップのブログ読み込み部分に<?php include_once('blog_reader.php'); ?> とか書いて ・そこで直接DB覗いて新しいのを拾ってくる とかかな。一からブログ作るなんて面倒すぎ
225 :
nobodyさん :2009/05/31(日) 04:29:37 ID:V0G3lcFV
初歩的な質問ですみません GET変数やDB由来のid用変数をいままでctype_digit()でチェック後 念のため(int)で整数化していたのですが10桁を超えると整数の範囲制限に 引っかかるのでこの方法が使えなくなってしまいました 文字列を数字のみにする関数というのはないでしょうか
227 :
nobodyさん :2009/05/31(日) 08:02:24 ID:7JVzR7n2
性器表現 intvalじゃだめかぁ -2147483648 〜 2147483647 10桁ってどんなサイトmaking doing
>>227 専用の関数はなさげですか
正規表現は精通してないので漏れがあったらいやだなと思ってたんですが
ctype_digit()を通してからなのでそもそも変換は必要ないともいえるので
preg_replaceで代用してみようと思います。
大量のCSVデータを読み込んでDBに登録するシステムを作ってるんですけど、 プログレスバーを作ろうとob_flushを使うとfgetcsvで読み込んだデータが化けるんですけど そんなもんなの? 大量のCSVを読み込ませる時って放置プレーにしてる?
バーでどの進捗を表そうとしてるのか知らんが、ob_flushで化けてるデータって単に文字コード違いかバイトずれじゃない? というか加工の必要が特に無いならDB側で直接取り込んで、phpからはレコード数見ながらバー出せばいい話じゃないのかい
化けるというよりは、データが欠落する感じです。 例えば10行のCSVがあって、foreachかforで10回、回して一行づつSQLを発行して登録する場合、 (取り込むデータを確認して、必要に応じて変化させる必要があるため、LOAD DATA INFILEは使っていません) 4行目までは正常なSQLを発行するのに、5行目からは空白になったり explodeを使って取り込んだ行を配列に分解するんだけど、正常に分解してくれなかったり その他の行はちゃんと日本語になってるのに、特定の行だけ意味不明な数字の羅列になったり・・・。 ちゃんと正常に最後まで行くときもあったり、かと思うと次同じ事をやったら今度は化けたりで安定しません。 ob_flushを外すと何回やっても正常に登録されるのでob_flushが原因ではないかと思った次第です。
ob_get_contentsをコールして無いとかいうオチじゃあるまいなw
>232 使ってないですね〜 実際のソースです。 function setCSVdata($file="") { setlocale(LC_ALL, 'ja_JP'); $csvrows = count(file($file)); $handle = fopen($file, "r"); echo str_pad(" ",4096)."<br />\n"; ob_end_flush(); ob_start('mb_output_handler'); ob_flush(); flush(); for ($i=0; $i<=$csvrows; $i++) { $csv = trim(fgets($handle)); $obj = explode(':', $csv); 〜〜 SQLを発行 〜〜 ※この時点で化けます echo "<script type="text/javascript">setProgressBar(".$i.",".$csvrows.")</script>"; ob_flush(); flush(); } fclose($handle); }
234 :
223(221,217) :2009/05/31(日) 21:09:21 ID:ONuTHT0e
なんとかブログを設置することが出来ました
設定弄って設置するだけで丸一日かかった…orz
設置したのはこれです↓
http://www.rocomotion.jp/cgi/roco_diary_r.php で、
>>224 のようにしたいのですが、設置したものがcgiファイルなんです
しかも言語はPerl?全くPHP関係ないじゃんってなって困っています
できれば一日がかりで設置したのでこのまま先へ行きたいのですが、
今入れたブログに文章を書く→その文章から最新2件をトップページのHTMLの一部分に展開して表示
が理想ですが、無理そうなので
トップページに文章を書く→今入れたブログへコピペ
で妥協するしかないっぽいです
まぁ初心者が一度に事を進めると大概わけわからなくなって進まなくなるから 妥協の連続で理想に近づけていけば良いんじゃない
そもそもなんでこのスクリプトを選んだのか そして元がKENTのCGIらしいがこれじゃ苦労するしかないぞ
237 :
234 :2009/05/31(日) 21:44:08 ID:ONuTHT0e
>>235 ありがとうございます
>>236 設置すらままならず、ググってそれっぽいの一通り設置しまくって
唯一上手く設置出来たのがこれです…orz
その後の調べでJavaScriptでHTMLへcgiのテキストデータを埋め込めそうな気配です
ただ素人目で見ても日記の展開が厄介そうなので別のブログも検討してます
おすすめありますか?
WordpressかMovableTypeだったら既成のプラグイン組み合わせで全部できそうな気もするが
240 :
nobodyさん :2009/06/01(月) 11:48:51 ID:/vKaesuU
php初心者です。 phpには、64bit整数が無いみたいですが、みなさん、どのようにして32bit以上の整数を扱ってますか? ちなみに、現在、MySQLのbigint型の値をどのようにしてphp側に受け取ろうか、という点で悩んでます。
241 :
nobodyさん :2009/06/01(月) 12:48:49 ID:FEmWlQvb
>>240 32bit以上の整数を使ってどんなサイト作ってるの?
オレ初心者だけど文字列として扱うけど
BCMath?
pg_copy_fromで一括登録しようと思うのですが、TABLEのPrimary KeyをSERIALで設定しています。 この場合、登録しようとしている配列にはPrimary Keyの設定が必要になってくるのでしょうか? 教えて貰えれば幸いです。 NULLで突っ込めば、データベース側がINSERTと同じように自動的に振ってくれるのかな?
試してみりゃすぐ分かんだろ
245 :
nobodyさん :2009/06/01(月) 14:02:04 ID:/vKaesuU
>>241 32bit整数は単純にDBのサロゲートキーとして使用しています。
なので、php側ではあまり意味を持たないのですが、主キーなので必須なのです。
ちなみに、データは延々と増え続けるので、32bit整数だとすぐオーバーフローになってしまいます。
なので64bit整数を採用しているわけです。
単純にphp側で64bit整数を用意して受け取りたいだけなんですけどね。
それが駄目らしいです<php
4294967295件もレコードあんの?
247 :
nobodyさん :2009/06/01(月) 14:17:59 ID:/vKaesuU
>>246 毎日数千〜数万件のレコードが作成されるので、数年運用すると32bit以上はいくと思います
>233です。 ob_start('mb_output_handler'); を 単に ob_start(); にしたら問題なく登録されました。 日本語が含まれてるのでmb_output_handlerを入れたのですが、これが駄目だったみたいですね。 CSVがShift-JISでDBがUTF-8だったので変換がうまくいかなかったのでしょうか?
その計算はちょっとおかしいと思うが
まぁPHPでもBIGINTが使いたいなら
>>242 も言ってるようにBCMathでいいじゃない
250 :
nobodyさん :2009/06/01(月) 14:33:28 ID:/vKaesuU
問い合わせフォームなのですが、イレギュラーな行為をしようとすると
挙動がおかしくなってしまいます
form.html→[POST]→confirm.html→[SESSION]→complete.html
↓ ↑
[SESSION] [POST]
↓ ↑
rewrite.html
基本的に上のような形で作っていて
基本的な動作には問題がないのですが、
ちょっとイレギュラーな動作として、confirm.htmlで確認した後、complete.htmlへのリンクを押さずに、
(confirm.htmlでは「送信する」と称したcomplete.htmlへのリンクがあります)
アドレス直打ちでform.htmlへ戻り、
form.htmlで再度記入して、記入漏れがあった場合
rewrite.htmlでは記入がある問題のない項目は$_SESSIONで自動的に表示されるのですが、
その$_SESSIONが古いままなのです。
分かりにくいですね・・・すみません。例えばですが、初回の訪問で
form.htmlで名前に「太郎」と記入、メールは未記入、確認submitボタン→
confirm.htmlでは$SESSIONに$POSTを代入、その次にメールが空欄なので自動判定してrewrite.htmlへ飛ばす
rewrite.htmlでは名前の項目に$SESSIONを受け取るので「太郎」と表記、そしてメール項目は空欄で、
メール項目の上にメールが未記入ですと表記する。
メールを「
[email protected] 」とrewrite.html画面で記入して確認submitボタン→
confirm.htmlでは今度は未記入項目がないので、「問題なければ送信(complete.htmlへのリンク)」をechoで表示、
そして本来ならここで、送信をクリックしてcomplete.htmlへ行くところを・・・・・
クリックせずに、form.htmlと直打ちして最初のフォーム画面に戻る、
そこで今度は名前の項目には「花子」と入れ、メールを空欄のまま確認submitボタン→
confirm.htmlがメールが空欄なので自動判定してrewrite.htmlへ飛ばす
すると何故か、名前欄、メール欄ともに先ほどの「太郎」と「
[email protected] 」が表示されてしまうのです。
本来なら、ここでは名前欄に「花子」、メール欄は空欄でメールが未記入です警告がでるはずだと思うのですが・・・。
252 :
続き :2009/06/01(月) 15:44:08 ID:???
すいません、長文ですが、もう少しあります。 それでsessionを破棄していないせいかと思い、form.htmlの最初に session_start(); $_SESSION=array(); session_destroy(); を付け加えてやったのですが、挙動はかわりません。 クッキーやキャッシュのせいかと思って if(isset($_COOKIE[session_name()])){ setcookie(session_name(), '', time()-42000, '/');} や header('Pragma: no-cache'); header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); もform.html追加したのですが、相変わらずです・・・・。 原因はどこだと思われますか?
253 :
237 :2009/06/01(月) 16:53:29 ID:ff8Q7K7b
niftyの無料のやつで作っていたんですが、PHPに対応していないことが発覚しました
通りで設置できないわけだ
>>238 のWordpressを導入してみたいのでxrea.comに移ります
254 :
nobodyさん :2009/06/01(月) 16:58:20 ID:kn+vnO2F
配列について質問です。 arr=("青","青","青","青","赤","赤") 上記の配列で、countでは、要素数は確認できますが、 青の要素数を数えるには」どうしたらよろしいでしょうか?
>>251 フォームのデザインパターンがぐたぐた。
もっと参考書見た方がいいよ。
文章わかりずらいす。
ちゃんと読んでないけど、セッションの代入で失敗してるでしょ。
セッションに値が入ってるか一行ずつ確認してみ。
>>256 ありがとうございます。
PHPは関数が豊富で使いやすいですね。
258 :
251 :2009/06/01(月) 17:27:19 ID:???
>>255 レスありがとうございます。
わかりずらくてすみません。
あれからずっと検証してたのですが、
どうやら未入力があった場合にheader(location)で
再入力ページに飛ばしてたのですが、
手動でリンククリック移動にすれば問題なく動作しましたので
header(location)で飛ばす時にsessionが切れてしまうっぽい感じです。
sessionの保存先など再検証してみます。
セッションはheader(location)でページ移動さえしなければ
全てのページで問題なく想定したものがechoで表示できましたので、
代入は問題ないかと思います。
ありがとうございます。
headerで飛ばすときにSIDを入れたらどうなんの? っつかSID発行されてる?
headerで飛ばすのはフォームのパターンですので、 関係ありません。 session_Startちゃんとしてますか?
261 :
251 :2009/06/01(月) 18:44:40 ID:???
>>259 >>260 ありがとうございます。
SIDはについてはまだ検証してませんが
(というかSIDをまだよく理解してないので、勉強します。すみません。)
初心者的な見解ですが、どうやらこれが原因っぽい所にいきつきました。
やはり自分の単純ミスだと思います。
ご指摘の通りheader自体が悪さしてるわけでもないですよね、誤解をあたえるような
記述になってしまいましてすみませんでした。
どうやら自分のheaderの書き方に問題があるんだと思います。
header("location: ******")の****のところを
絶対パスを記入していたのですが(
http://www.abc.com/rewrite.htmlのように )
手打ちでform.htmlに戻る時に、アドレスがht
ttp://abc.com/form.htmlのようにwwwが抜けていたので サーバアドレスが変わったと認識されてsessionが切れていたのだでしょうか・・・?
これを相対パスで記述した所、全ての動作が想定したものになりました。
お騒がせしてすみませんでした。ありがとうございました。
ちなみに・・・header("location:")は絶対パスで書くべき、いや相対パスでいい、いやどちらでもなく
完全な形のURL(?)で書かないといけない、と色々情報を見つけたのですが
正式なlocationヘッダの記述の仕方とかあるのでしょうか?
というか、書き方もめちゃくちゃで知識もグダグダだと思うので
色々長文書いてしまいすみません。色々と勉強して出直してきます。失礼しました。
262 :
237 :2009/06/01(月) 23:30:31 ID:ff8Q7K7b
ロリポップで借りてWordpressを設置できました
トップページのHTML内の一部分にWordpressから最新記事2件を全文表示で
載せたいのですが、Wordpressの最新記事の呼び出し方が分かりません
>>224 の<?php include_once('blog_reader.php'); ?>でも()内が分からず、
他、調べて出てきたものを試してみてもできませんでした
教えてください、お願いします
>>262 なんつーか全力で遠回りするタイプの人だなぁ
265 :
262 :2009/06/02(火) 00:04:45 ID:nshP4Iwz
>>264 本当にど素人ですみません
5日前までHTMLを拡張子だとしか認識してなかったレベルです
3日前までPHPは新書の出版社名だと思ってました
>>263 のスレに行ってきます
お世話になりました、また移動しますノシ
266 :
nobodyさん :2009/06/02(火) 05:39:38 ID:td4jeRp0
携帯サイトの文字コードについての質問です。 現在、php+MySQLで携帯サイト(3キャリア対応)を作成しているのですが 文字コードの問題で文字化け等で困っています。 MySQLは文字コードがutf-8です。 始めは、utf-8でコーディングしていたのですが、携帯サイトはShift-JISの方が良いとの事で コーディング自体をShift-JISに変えてみたのですが、今はDBからの値が文字化けしてしまっています。 いまは文字コードがバラバラになってしまい統一出来ていない状態です。 ・出力部分だけをShift-JISに変換して表示させた方がいいのでしょうか? (例■$html = mb_convert_encoding($html, "SJIS", "UTF-8"); ・それと「SJIS-win」などは使った方がいいのでしょうか? 絵文字などは mb_substitute_character('none');//存在しない文字コードの処理を設定。 $Pictograph = mb_convert_encoding($Pictograph, 'Shift_JIS', 'Shift_JIS');//絵文字削除 上記のような事をして削除しておりました。 しかし、正常に表示(3キャリア)されるのなら絵文字表示してもいいかなと思っている状態です。 長文申し訳ありません。
データベースの文字コードをJISにする 以上。
>262 PHPを出版社だと思ってたなんて・・・ま、オレもそうだったけどw Wordpressって使ったことないんだけど、RSS出力とかないのかい? >266 文字コードが違うと文字化けするのは当たり前だろう・・・ HTMLがSJISならDBからの出力もSJISにしないと。 出力するところだけmb_convert_encodingで変換させるといいよ。 DBに登録するときは反対にSJISからUTF-8に変換しないとDBのほうが化けるからね。
269 :
265 :2009/06/02(火) 11:16:28 ID:QiIiWnUH
>>268 あります
でも俺の技術力じゃどうにもできません
今は、
WordPressループを挿入?トップページを静的ページに?
テーマ変更?ページテンプレート使用?
どれがいいか向こうで聞いてます
やっぱり本当は自分でデザインしたHTML内部に埋め込みたいなあ
技術力がないっていっても、ページの中の一部分にWordpressの記事を埋め込みたいのならRSSがベストじゃないかな。 ググればなんぼでもRSSに関する事が出てくるから調べてみるといいよ。 PEARなんか使えば簡単に使えるから。 PHP5なら最初からRSS関係の関数はあるんでもっと簡単だよ。 配列にRSSで読み込んだ記事が入るんで、普通にそれをprintやechoで出力するだけだし。
そもそもphpがまったくわかって無いと見たが。 やりたいことのレベルに達するのはかなり苦労しそう。
DBの文字コードをJISにするって新し過ぎだろ メール専用DBか?
だな 普通はEUCだよな
>>266 docomoの古めの機種は対象外と割り切って、
出力もUTF-8にすればよろし。
utf-8使えよ
276 :
269 :2009/06/02(火) 19:03:40 ID:???
>>270 RSSでできました!
本当にみなさんありがとうございました
DBは普通はUTF-8だよな。 最近はHTMLもUTF-8にしてる。 携帯のサイトはSJISだけどね。
278 :
nobodyさん :2009/06/02(火) 23:08:51 ID:yP1TTuLt
WordPressのソースコード見て疑問に思ったんです。 基本オープンソースのアプリケーションてMVCはっきりしていないですよねって 実際プロの人っていうか、金もらってWebアプリ作られている方は どんな感じでコーディングなさっているのかなぁって思ったんです。
このスレの奴数人は多分SJISとJISの違いを解ってないっぽいな
DBとコードは全てUTF-8。HTML出力は基本UTF-8で、必要な場合はShift_JIS。 >278 プログラミングでは、上のほうのレベルでは金をもらっているかもらっていないかはあまり関係ない。 Linux開発者は基本的に金をもらっていないわけだが、彼らの技術力には疑問の余地はないだろ。 んで、実際だが。 PHP開発の大半はフレームワークに移行しているらしい(ソースは『PHPプロ!』)ので、恐らく大半がMVC。 うちは自社サービスだが、フリーダムすぎて恐らく参考にならない。 同じサービスのはずなのにエンドユーザ側と管理側でフレームワークが違う、とかあったからな。誰か言えよと。 ちなみにWordPressはプラグインなどの拡張性を考えた結果の設計だろう。特殊な例だと思う。
281 :
nobodyさん :2009/06/02(火) 23:34:03 ID:yP1TTuLt
>>280 たしかにプラグイン関連を考えると特殊ですね
お聞きしたいのですがMVCのvはどんな感じでコーディングなさってます?
自分はZF,Smartyです。
うちではフレームワーク使ってないなぁ。 フレームワークを使う利点がイマイチわからないんだよね。 設計・開発・管理を全て一人でやってるし・・・。 でもそのうちフレームワークに移行しないといけないな、とは思ってる。 思ってるけど時間がなくてなかなか移行に踏み切れない。
一人なら別にいいんじゃない? 自分なりのフレームワークもどき出来てきちゃうし。
この自分なりのフレームワークもどきがネックで 色々ごてごて機能追加とか思いついたことくっつけてくと 下位互換が無くなったりして、古いアプリケーションとか放置になるという。
http://php.dori-mu.net/search.html これ見て勉強中です。
search.phpのスキルの部分で
$temp_where .= "skill REGEXP '$value' || ";
という部分があるんですが、
これは$temp_where .= "'$skill' REGEXP '$value' || ";
ではないのでしょうか。
なんでskillだけなんでしょうか?
すいません。教えてください。
286 :
285 :2009/06/03(水) 01:59:39 ID:LH3y5rMl
すいません。教えてください。
>>285 foreach($skill as $value) {
$value = addslashes($value);
$temp_where .= "skill REGEXP '$value' || ";
}
の部分が、ナニしてるか理解出来てないみたいだね。
例えば、$skill = array('a', 'b', 'c')の場合
$temp_whereは
skill REGEXP 'a' || skill REGEXP 'b' || skill REGEXP 'c' ||
という文字列になる。
意味は、取得するレコードを、skillの内容がaまたはbまたはcを含む場合のみに絞り込むってこと
skillはテーブルの列のことであり、$skillとは関係ないの
同じskillという文字が入っているから、勘違いしたんだと思うけど
288 :
nobodyさん :2009/06/03(水) 10:30:53 ID:hUsGsYQX
このskillの中身はなんなんでしょうか? skillはテーブルの列ってどういう意味? よくわかりません。 後$temp_where = substr($temp_where, 0, -4); はどういう意味でしょうか?
>>285 でお前が出してるurlに全部書いてあるわけだが、
そもそもデータベースそのものが理解できて無いのか?
だとするとphpの前に勉強することいっぱいあるぞ。
そのページざっと見てみたがDBの仕組みについてはほとんど触れて無いんだな。 解説も雑だし初心者用としては不向きだと思われ。まだ本買ったほうがいい。
291 :
280 :2009/06/03(水) 23:14:21 ID:???
>281 テンプレートエンジンは基本的にはSmarty一本。デザイナーや企画者に無駄な負荷をかけないための措置。 デザイナーが携わらない社内利用モノとかも、面倒という理由でそのままSmartyになってる事が多い。 ビュー層がHTMLではない場合(CSVとかXMLとかJSONとか)は単純なPHPで処理してる場合もある。
Smartyってどっちかというとデザイナーに負担掛かるテンプレートな気がする
プログラミング未経験でこれから始めようと思うのですが おすすめの参考サイトがあれば教えてください。
297 :
266 :2009/06/04(木) 03:44:06 ID:7qmYMxpO
解答ありがとうございます。 DBの文字コードは変えるつもりはありません。というより他のシステムに支障をきたすので… 今の所はHTMLの出力部分を変数に入れて、「mb_convert_encoding」でSJISにしてして出力する事にしました。 HTML部分を全て変数に入れてしまっているので、かなり強引だと思いますが一応正常に出力出来ました。
>>294 ,295
ちょっと自分には難しかったです。
>>296 このスレは分かりやすいですねでも
51レスで終わってるのでそれ以降が分からないorz
>>298 「2時間目」の講義を希望してるってこと?
300 :
nobodyさん :2009/06/04(木) 08:47:07 ID:f7spCjC/
MySQLのREGEXP関数は日本語対応していないようです
ttp://dev.mysql.com/doc/refman/4.1/ja/regexp.html フィールド名 フィールド型 属性
number int(5) PRIMARY KEY, AUTO_INCREMENT
name varchar(255) NOT NULL
address varchar(255)
gender varchar(255) NOT NULL
skill varchar(255)
今回は「名前」「住所」「性別」「スキル」の4つの条件で検索できます。
↑
301 :
nobodyさん :2009/06/04(木) 08:53:24 ID:f7spCjC/
>>293 変数→配列→条件→フォームを使った操作→関数
クラス→SQL→データベース接続→Webアプリを作ろう
→PEAR→フレームワーク
が一般的な流れでおそらく初心者は関数・クラスで挫折すると思う。
自分で本屋に行ってクラスの項目を開いて読みやすい参考書を選ぶとGood!
クラス・メソッド・コンストラクター・プロパティなどがキーポイント
302 :
298 :2009/06/04(木) 11:31:58 ID:???
>>299 yes、phpプロとかてサイト見つけたので
今、参考にしてます。
>>301 やっぱり参考書も1冊は必要なのかぁー
これから本屋行って色々見てきます^^;
別にいらんと思うよ
304 :
nobodyさん :2009/06/04(木) 13:03:28 ID:f7spCjC/
>>303 過去に少なくとも一つ、プログライング言語をたしなんでいれば、そうかも知れんが、
未経験者って言ってるから、始めのうちは何か手元にあるといいかもね。
最終的には、公式サイトと適当にググった結果を参照することになるだろうけど
俺未経験だったけど特にいらんかったよ
俺は参考書無くても問題なかったぜ自慢はなんの役にも立たん
・リファレンスを引ける事 ・エラーメッセージを読める事(設定をちゃんとして、数十行の英文でもちゃんと目を通す) 辺りは必須だな。2chに限らず、ダメな初心者はこの辺ができていない事が多い。 この辺ができてれば、後は努力でなんとでもなる。 error_reportingとdisplay_errorsに触れてないものは、その時点で紙だろうとサイトだろうとアテにならん。
310 :
nobodyさん :2009/06/05(金) 17:00:46 ID:fRLRCZ+m
$input_mode = ($_GET["mode"]) ? $_GET["mode"] : $_POST["mode"]; ↑どういう意味ですか?modeって
?mode=a のURLクエリでしょ
isset抜かしてないか? $_REQUEST使えよ
313 :
310 :2009/06/05(金) 17:29:34 ID:fRLRCZ+m
やっぱマイナーなソースだよねぇ。 使わねぇでおくわ。
>>310 PHPマニュアルの比較演算子の三項演算子を参照
演算子は案山子に似てますか?
>>310 GETで入ってきた場合は、その値を代入。
そうじゃない場合は、POSTの値を代入。
こういう意味じゃない?
>>313 全然マイナーじゃない。大抵の言語にある.
可読性高まるし、同じ意味のifより使われる。
話の流れをぶった切って申し訳ないのですが、PHP4でPDF出力をする必要があります。
色々ググったところ、日本語を使うなら今ならTCPDFがいいという結論になりましたので、それを使うことになりました。
解説サイト(
http://www.monzen.org/Refdoc/tcpdf/ )を参考に設置したのですが、
真っ白なPDFしか出来ません。上記のサイトの初っぱなのサンプルをそのまま入れても真っ白です。
下の方にある、様々なサンプルもいくつか試しましたがどれも真っ白なPDFしか出来ませんでした。
一体何が悪いのでしょうか?
SourceForgeからPHP4用のTCPDFをダウンロードして、ルート下のincludeというフォルダにtcpdfフォルダをぶち込んで、それをrequireしています。
一番手っ取り早いのはソース見てどこで想定外の動作してるか調べる あと公式のドキュメントなりFAQなりを見てみれば?
>>318 apacheのエラーログになにか残ってないかね?
>320 特に関連するようなエラーログは残ってないです。
php5は問題なかったな 公式に書いてある説明だけど ・tcpdfフォルダ全体をchmod -R 644 ※FTPソフトからパーミッションを変更する場合はサブフォルダ含めて一個ずつ644に変更 ・「cache」と「images」フォルダのパーミッションを666に変更 それかpdfを出力するのにメモリが不足してるのかも。 あと自分で書いたスクリプトの各処理のあとに何がを画面に表示させて、どの行で止まってるのかを調べると良かろう。
試しにPHP5なサーバーにPHP5用をアップロードしたところ、こちらは正常に表示されました。 PHP4な他のサーバーにPHP4用をアップロードしましたが、こちらはまたもや真っ白でした。 PHP4用は何か他に設定しないといけないところがあるんですかね・・・ パーミッション関係は設定しました(imagesを666にすると、読み取れないとエラーが出たので755にしましたが)。
php4でも特に設定はいらない php4でもバージョンはいろいろあるのでそれを確認する どこで処理が止まっているのかを特定する chacheフォルダに書き込めるかテストする お宝画像を発掘しそれをスレ住人に与える
PHPのバージョンは4.3.2です。 真っ白なページといいましたが、ちゃんとAcrobatReaderは起動してPDFの表示は出来ています。 PDFが真っ白なだけで、生成はされているようです。PDFの情報もきちんと入っています。 とりあえずTCPDFはおいておいて、FPDFにチャレンジしましたが、こちらは 「FPDF error: This version of PHP is not supported」と出てPDFすら表示されません。 公式を見ると、PHP4.3.1以上となっているので、大丈夫なはずなんですが・・・。 もうウチのサーバーではPDFを生成出来ないのでしょうか・・・。
とりあえずFPDFのソースで、件のエラーの部分をコメントアウトし、強制的に動作させましたが やはりTCPDFと同様に真っ白なPDFが生成されました。 なにか他の原因がありそうですが、糸口が見つかりません・・・
セーフモードとかどうなってる
phpのセーフモードはOFFです。 同じサーバー内で動いているphpMyAdminのPDF出力はTCPDFを使っていると思うのですが、こちらはちゃんとPDFが出力されます。
images, cache のパーミッション 777 は試した?ここまで開けなくてもいいはずだけど。 あわてていろいろ別のに走ると余計に遠回りになるかもしれないよ。
images,chcheのパーミッション777は試しました。 PDFlibも念のため試しましたが、やはり真っ白なPDFが開くだけです。 関係あるかどうかはわかりませんがGDライブラリは使えます。 phpMyAdmnのPDF出力は文字化けするものの、ちゃんとPDFが生成されてますので全くPDF関係が使えないというわけではなさそうですが・・・。
PHPど素人です。 $pos = array("row" => 12.1234 , "col" => 77.1234); $pos2 = array($pos,$pos,$pos,$pos); $ $js = array( array("id" => "icon1" , "name" => "ID_1","pos" => $pos , "size" => 10), array("id" => "icon2" , "name" => "ID_2","pos" => $pos2, "size" => 10), array("id" => "icon1" , "name" => "ID_3","pos" => $pos , "size" => 10) );
332 :
nobodyさん :2009/06/09(火) 00:02:44 ID:H57jWlF/
がんばれ!
質問です。
DBに格納されている日付(TEXT) 「2009-06-11 00:00:00」を
PHPで引っ張ってきて、この日付から例えば1ヵ月後の日付を求めたい場合は
どうすればよいでしょうか?
いろいろ探してみると、strtotimeを使えばよいと書いてあるサイトがありましたが、
>>3 ,5,7,10,12月の月末に実行すると、そのまま3,5,7,10,12月が返ってきてしまいます。
とのことで、mktimeの使用を推奨しているようです・・・。
SQLでDBにやらせる手もあるけど、1ヵ月後の細かい定義は? 翌月同日なんだとしたら、31日の1ヵ月後は翌月月末なのか翌々月になるのか mktimeだと例えば6/31は7/1になるけれども
1ヶ月後は具体的にどういう計算がいいの? プラス30日とか、年月日の「月」だけが1加算されればいいとか、 例えば2009-01-31の一ヵ月後はいつになる?
>>333 DBでやらせたほうがいいよ、PHPのコードも減るし、2038年とかも気にしなくて良くなるし。
>>334-336 お返事ありがとうございます。
とりあえず、レスした後にmktimeを使用した方法は出来ました。
>>334 さんがおっしゃる通り、6/31は7/1になりますね。
恐らく
>>334 さんがおっしゃることと同様の事を皆様考慮して頂いていたようですが、
「約1ヶ月後」というアバウトな答えで今回は問題ないです。
ですので今回は、取得した日付に「+86400*30」で出すことにしました!
レス下さったのに、申し訳ないです。ありがとうございます。
>>336 さんのDBでやらせたほうがいい、という件はどういう方法でしょうか?
DATA_ADD(now(), interval 1 MONTH)のことかなぁ・・・?
DBでやるのは、DATE_ADDね。 『DBに格納されている日付の1ヶ月後』ということだが 何年まで対応できればいいんだ? このDBに格納されている日付って、2100年とか3000年とかは無いよね?
>>338 お返事ありがとうございます。
どんなに対応したとしても2050年もいかないと思います。
>>339 上にも書いたけど、気にしてるのは2038年ね。
DBに格納されている日付を2038/01/01にして、
それの1ヶ月後を正しく取得できればいいよ。
2038年は?
>>340-341 ごめんなさい。そういう意味で仰られていたんですね。
どうしてあげればいいのか私には検討つきません・・・。
PEARで
orz
日付の処理とか、面倒くさすぎてもう理解できません。 受験数学とかで、たまに出るよね。
既出だけど、日付の足し引き等はDB使った方が簡単だよ。 何でもかんでもPHPでやることはない。
最初からDBに入っている日付ならそうかもしれんが そうでないものを別にわざわざDBでやる必要は無いだろ PHPで+3 daysでできるんだし
>>347 「+3 days」って具体的に何を使うんですか?
strtotimeなどは2038年問題で駄目だし
PEAR Dateは一部int使ってるから68年以上の期間を扱えないし
php5.2以上ならDateTimeなんでしょうけど。
何十年も使いつづけるプログラム書いてるって言いたいのか? どんだけすばらしいプログラムだよ
30年後も同じサーバ使ってるとは思えないし、PHP自体がサポートされてるかわからんのにw もしその頃までPHPが存在してたとしても今のバージョン5が動作するサーバもOSすらもないんじゃないか? PHP案件なんて納品さえできれゃいいんだよw
5年前に2038年問題でATMが使えなくなったの知らないのか? ニュースになってるのに、未だに2038年問題すら考えないでモノ作ってるのか? 別に2038年にならなくても、今でも未来日の計算とかするだろ?
2038年問題すら考えないでモノ作ってるよ 今でも未来日の計算とかしないよ
僕はPHPよりおにぎりのほうが好きなんだな
答えてくださいと最初から言えばいいのに
つか、答山ほど出てるし。
357 :
nobodyさん :2009/06/13(土) 18:50:47 ID:CPSa6yMK
データが一行ずつ改行で入っているテキストファイルから、 ランダムの行目の一行だけを取り出すには、どうすればいいんでしょうか? ↓の場合に、$tempに$num行目のデータを入れたいです $fh=fopen(sample.txt,"r"); $num=rand(1,999); $temp=; fclose($fh);
固定長じゃないなら全部配列に読み込んだほうが早い
359 :
nobodyさん :2009/06/13(土) 19:09:16 ID:CPSa6yMK
>>358 さっそくのレス、どうもです。
file関数ですね。挑戦してみます。
file mt_rand でok
shuffle()でええやん。
PHPで正規表現がうまくいきません。 <data info="foo"> "bar"|tr </data> このコードで、barをマッチさせたいのですが、 'foo"> "bar' がマッチしてしまいます。 $regex = '/"(.*?)"\|tr/s'; $regex = '/"[^"]+(.*?)"\|tr/s'; この2つを試したのですが、うまくいきません、 どうしたらいいでしょうか?
>>362 ?をつけても前から検索していっちゃうから
"(\w*?)"\|tr とか ^"(.*?)"\|tr
もしくは前後のタグも使用するとか
<data.*?>\s*"(.*?)"\|tr\s*</data>
s修飾子を取れば悩み事が減るような
suphpについて語って。
何が?
5.3.0RC3出たんだね
ショッピングカートのフリーソフトを ダウンロードしたんですが 上手く動きません 一部文字が文字化けしてしまって どうしたらいいか分かりません
おれもわかりません
そういうのは作者にクレーム入れるのが一番だろ 一部文字だけってことはコーディングミスかmagic_quotes_gpc辺りの設定か
>>371 その辺の設定とかはよく分からないんです
php始めたばかりで今htmlのホームページをphpに作り変えてる所なんです
そうですよねー。 分かります、分かります。
文字コードぐらいphp使うなら勉強しような?な?
>>369 せめてそのフリーソフトの名前、動かしてる環境くらいは書こうぜ。
こっちもエスパーじゃねーんだから。
>>375 すみません
環境ってphpの事ですか?
ダウンロードはしていません
さっき試したのはもう消して
また新しいショッピングカートを
探してる所です
>>376 「ショッピングカートのフリーソフト」はどこで動かしたの?
自分のパソコン?どこかのレンタルサーバ?
OS、phpのバージョン、apacheなのかIISなのか、自分の状態をこっちに伝える努力をしてくれ。 というか自分で自分の質問見返してみて、回答の余地があると思う?
医者行って「調子が悪いんです」としか言わないタイプだなw
>>377 サーバーで動かしました
自分のパソコンでレンタルサーバーです
>>380 >自分のパソコンでレンタルサーバーです
どっちだよ
>>381 すみません
動かしたのはレンタルサーバーです
マルチ乙
>>383 とりあえずどっちのスレで続けるか決めてくれ。じゃないともう回答しない。
あとその知識じゃショッピングカートとか無理だからもう少し勉強してからにしな。
>>383 ショッピングカートのフリーソフトはPHPで作られたモノなんだよな?
それならこっちのスレで続けてくれ。
>>384 すみません
マルチ乙 Googleで調べました
最初に質問した時によくないレスが
帰ってきたので、こちらにもきてしまいました
これからはこちらだけにしますので
よろしくお願いします
で、カートのCGIの名前とレン鯖の名前は? こんだけの情報出すのにどんだけ時間かけるつもりなんだ。
たぶん他行っちゃったよw
>>388 cgiはcart Zでサーバーはイチマンネットです
Perlじゃねーかよ!!!!!
ワロタw もう帰れお前
どっからPHPの話が出てきたの?w
>>392 だめですか すみません
でもそのcgi単独で動かしてるんですが
それでも動かないものですか?
Perlじゃねーかよ!!!!!
惚れ惚れするほど話が通じてないな。おまえら客をもてなしすぎだw
>>399 PHPではなくPerlで作られたモノだからここはスレ違い
>>389 のスレで続けてくれ。
言語が違えば原因も対処も変わってくるんだよ
>>399 しらねーよ。このままスレ違いだと言われ続けるよりはマシだと思うがね。
>>399 黙ってあちこちうろうろするから叱られるんだよ
移動しますって言ってから移ればいい
あと、言うだけ無駄っぽいけど移動先の冒頭にある注意をちゃんと読むこと
向こうのスレでやめるって言ったの? まだマルチ継続中では?
>>400 すみませんphpだと思ってました
ではphp簡単ショッピングカートにします
これも一部文字化けして
ホームページに組み込むと真っ白に
なってしまいます
問題棚上げのままスクリプト変えんなw
さ っ さ と 移 動 し ろ
>>404 「php簡単ショッピングカート」をダウンロードしたURL書いて
>これも一部文字化けして
これはどういう意味?
・自分のパソコンでエディタ(エディタ名を明記する事)で開いたら文字化けした
・レンタルサーバにアップロードしてブラウザで開いたら文字化けした
phpの質問というよりはCGI(あるいは設置先)固有の質問になっちゃってるからな
413 :
nobodyさん :2009/06/24(水) 14:58:34 ID:DVvyB34a
あるイベントのコマーシャルサイトで、ポイント付与システムを導入する運びとなったのですが、どっかでフリーのものが落ちてるの見たことある方いますか?
>>413 飲料とかでやってるシールの番号入力するタイプの奴?
流石にフリーでは無いんじゃないかな。
フリーで作る規模じゃないわなw
最後まで無責任な奴だったな
>>413 ポイント付与システムって何?
ポインヨとは何かね?
file_get_contentsを使用して、クッキーを受け取ったらそのまま返すとか可能なの?
curl がいいよ
>>419 curlを使用しても無理だった・・・
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $url_ref);
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);
curl_close($ch);
Print ($result);
422 :
nobodyさん :2009/06/24(水) 20:33:31 ID:DVvyB34a
>>413 です。
ある簡単なゲームがあって、勝ったらポイントゲット。
貯めたポイントで違うゲームが購入できる、みたいなシステムです。
楽天のポイント使える懸賞とか、いわゆる出会い系のポイントのやりとり的なのとかも流用できそうなんですが。。。
XOOPSのモジュールも探してみたんですが、どうも見あたらなくてご相談してみました。
ちなみに、1から構築だと納期&金額ってどこらへんが妥当ですか?
わりと大型案件だからそれなりの額を覚悟しておいたほうがよいかと 実際の金額は見積もりしてもらえとしか言いようがない
>>422 せめてその要件は最初に書こうぜ。
つかそんな他のシステムと連動しなきゃならんようなポイントシステムがタダで転がってるわけないじゃないw
425 :
nobodyさん :2009/06/24(水) 22:39:27 ID:RIqlw2Oq
大きなシステムの一部だけフリーで転がってるもの使え、って言われたら、ちょっともにょるな。
426 :
nobodyさん :2009/06/26(金) 01:41:10 ID:KIG44teK
<title>{$hoge->moge}</title> この{}(波形のかっこ)はいるの?
試しに外してみ
428 :
426 :2009/06/26(金) 09:29:34 ID:BnlMBA3X
>>427 特に何も起きなかったよ。
修正してるんだけど、ついてる時とついてない時があるんだよね
>>428 というか何を修正してる上での質問なんだ?
430 :
426 :2009/06/26(金) 16:32:28 ID:???
前に他の人が作ったやつ
{}は、そこが変数名だと明示する、という意味がある。 $hoge = 'abc'; $foo = "$hogedef"; は上手く動かないが $foo = "{$hoge}def"; にすれば正しく動く。 つまり答えは、()とかと同じく、状況によっては必須だし、状況によっては省略可能だが、ついてても害はない。
俺はいつもつけるな。後からソースいじる時にわかりやすいし。
433 :
nobodyさん :2009/06/28(日) 23:00:23 ID:aC1PKmhH
簡単にサクサクつくれる代物じゃないよ。 実現するしくみ自体は難しいものでは必要ないけど、 要件と仕様を詰めないといけない。 ゲームってなに? ユーザー管理は? そもそもサーバーあるのか? セキュリティは? 考えることは山ほどあるでしょ。
遅いよ
今は答えたくない
実を言うと include_path というのが、どういうシロモノなのか、 今だによくわからない。
便利だよ
439 :
nobodyさん :2009/06/30(火) 12:51:11 ID:xD1qhzjw
人のソースを読んでいたら、山ほど、未定義の変数が出てきたぜ。 何これ?どこで値入れてるの?もしかして全部NULLが前提??? 動かないじゃん!!!!!!!! と思ったら、$_POST/GETとかしなくても、変数名とHTMLのフォーム パラメータ名と一致させれば勝手にとってきてくれるのね・・・orz 基本知らないままPHPを慣れで1年使ってたアホの愚痴ですたw
register_globalsだろ 悪いこと言わんからやめとけ
1年使っててregister_globals知らないのは、職業プログラマだったらまずいな。
register_globals は基本です
すまん・・基本見直してくるw
ひょっとしてmagic_quotesも知らない・・・とか・・・
ウェブ上にある画像をあるキーワードで検索し、その結果をサムネイルとして サイトのコンテンツにしたいのですが、可能でしょうか?
可能
447 :
445 :2009/06/30(火) 16:35:53 ID:???
>>446 そうですか
よくよく考えたら、画像が欲しいなら自分で検索するだろうし
あまり必要ないですね。自己満足になるといけないから、止めときます
>>447 これでも貼っておけば?
<form name=gs method=GET action="
http://images.google.co.jp/images " target="result">
<input type=hidden name=hl value="ja"><input type=hidden name=safe value="off">
<input type=hidden name=um value=1><input type=hidden name=newwindow value=1>
<input type=hidden name=sa value="1"><input autocomplete="off" type=text name=q size=41 maxlength=2048 value="">
<input type=submit name="btnG" value="画像検索">
</form>
<iframe src="hoge.html" name="result" width="600" height="400"></iframe>
Google Image Search の結果を ImageMagick で縮小すれば 10 分でできそう
450 :
nobodyさん :2009/06/30(火) 17:11:18 ID:wbhtxyPs
>>450 その秘密のサーバは PHP エラーをログに残してないの?
もしくは display_errors の設定できないの?
>>451-451 ありがとう!
仕組みわかった。ああ、pngファイルを書き出してるんすね。なるほど。
今更ながらソース読んでみたら、ああコレか、みたいの見つけました。
サーバにもファイルが生成されてる。いくつもヒントがあったのに気づかなかった自分が恥ずかしい...
今レンサバのプラン変更をしたので移行作業をしているのですが、 移行前に動いていたプログラムが正常に動かなくなりました。 前も後もバージョンは4.4.2です。 PostgreSQLをつかっているショッピングカートなのですが、 買い物を完了してもDBに格納されずに、 完了の際に送る自動メールが、名前や住所など変数になっている部分が空白になっています。 エスパーな質問かと思いますが大変困っているので、とりあえず質問してみました。 移行の際よくあるミスやトラブルなどございましたらお教えください!
本当に要エスパーな質問過ぎてどうにもならんw
Postgresのバージョンや設定が変わったとかいうオチじゃあるまいな
追加情報です。 移行前は、PostgreSQLのバージョンが 7.3.4で 移行後は 8.1.10に変わっていました。 これってマズイでしょうか・・?
>>456 やはりマズイですか。。。
ちなみに、Webサイトのアクセスログとして利用しているテーブルには
ちゃんとアクセスが溜まっていっているので、とくに問題ないかと思ったのですが・・。
全く接続できなかったりフォーマットが違ったりしたらアクセスログのテーブルにも挿入されないのでは?
もう1つ追加情報です。 移行前のDBからはCSVとしてエクスポートして、 移行後のDBにアップロードしました。
phpの設定だとおもうよ
>>459 なんかお前さん自身が状況整理できてないようだから自分の中で整理つけてから出直して来い。
まさかエラー非表示にしてるとかないよな
非表示にしてたとしてもさすがにapacheのログくらいは見てると思いたい
>>458 「Webサイトのアクセスログとして利用しているテーブル」とか言われても、
そのログ取得のシステムとショッピングカートの関連とか全く開示されて無い俺らに
どんな回答しろって言うんだお前は。
ま、多分、さっきのレスで出たregister_globalsだと思われりゅ
466 :
nobodyさん :2009/06/30(火) 22:18:09 ID:ToOf0Y/8
初心者なのですがどなたか教えてくれまいか <?php $number = 100; echo "<p>変数の値は $number です"; echo '<p>変数名は $number です'; ?> 変数の値は や 変数名は ってやつがうまく表示してもらえないのだが なぜですか??
文字コードの設定をした記憶がなければそれが原因
>>462 エラーは表示にしています。
が、注文完了まで全くエラーが出ません
error_logでメールの内容を直前に吐き出すと変数が空になっています。
その変数はというと、
$sql = "select * from tx where id=$id";
$result = pg_query($conn, $sql);
$name = pg_fetch_result($result, 0, "name");
こんな感じで取ってきているので、やはりPostgreSQLからデータを取ってこれていないようです。
>>466 マルチ乙
ここの住民は他の質問スレもみてるよ
470 :
nobodyさん :2009/07/01(水) 00:06:41 ID:z3HhO0nd
初心者というか、PHPを全く理解していない者なので、 ここで質問していいのやら分かりませんが、困っています。 WordPressで複数のブログサイトを制作してるんですが、 本日各サイトを巡回してみると、あるサイトだけ突然見れなくなっていました。 IEでは反応なし、Firefoxでは「自動転送がループしています」と言われ、 突然の出来事にイミフです。 さらに今まで使っていた管理画面のURLを入力すると、 なぜか「wp-admin/install.php」に飛ばされ、インストール画面になります。 ドメインを変えてみても、トップ・管理画面ともに結果は同じでした。 他のブログもサーバ含めて全く同じ構成・設定なんですが、そのサイトだけ見れない状態です。 ちなみにそのサイトは一週間ほど放置していて、昨日は普通に見れてましたので、 何かを触ったわけでもありません。 これは一体何が原因なんでしょうか… もし何かお分かりの方がいらっしゃいましたら、ご教示ください。
>>470 ・wpがハックされて設定含めて消し飛んだ。
・借りてる鯖のDBが何かしらの原因で吹っ飛んだ。
どっちにしろその情報だけじゃこれくらいしか想像できん。
472 :
470 :2009/07/01(水) 00:41:19 ID:z3HhO0nd
>>471 まじすか…
そんなことがあるんですね…
DBのバックアップはあるので、何とか再インストールやってみます。
レスありがとうございました。
474 :
nobodyさん :2009/07/01(水) 06:03:34 ID:RWA+xdxu
>>454 です
まだ解決できません・・・
PostgreSQLのバージョンが変わったっていうのはあまり大きな問題ではないのでしょうか?
7.3.4から8.1.10に変わるとプログラムも全部改修しなければいけないですか?
>>474 もとの作り方次第
バージョンによる違いの可能性もあるけど、
おそらく文字コードなどの設定かデータを正しく移行できていない
476 :
nobodyさん :2009/07/01(水) 07:38:47 ID:RWA+xdxu
477 :
nobodyさん :2009/07/01(水) 08:10:08 ID:RWA+xdxu
わかったぞ! 前バージョンでは default_with_oidsというPostgresの変数が無くて(デフォルトでOn) 現バージョンでは、 default_with_oids = Off になっていた。 しかしレンサバを使っているので、Postgresql.confは編集できない模様・・・ PHPからOnにできないですかね?
WITH oids を指定してテーブルを作り直したら? どっちにしろoidの使用は推奨されていないという事だろうからテーブルの構成自体をやり直したほうがいいと思うけど・・・
479 :
nobodyさん :2009/07/01(水) 08:39:05 ID:RWA+xdxu
WITH oid でつくりなおしたんだけど、変わらない・・・ $oid = pg_last_oid($result); ここで$oidに値が入ってくれないみたいです
480 :
nobodyさん :2009/07/01(水) 08:39:52 ID:RWA+xdxu
WITH oidsの間違いです
481 :
nobodyさん :2009/07/01(水) 10:47:39 ID:RWA+xdxu
WITH oidsにてCREATEして解決いたしました。 助言をくれた皆様ありがとうございます。
一番正しい助言は oids を使わないことだと思った
大文字の4や9を小文字に変換して演算させたいのですが、変換する方法が分かりません。 教えて下さい
翻訳いたします 全角数字を半角に変換する方法を教えて下さい
487 :
483 :2009/07/01(水) 15:46:50 ID:???
488 :
nobodyさん :2009/07/01(水) 20:12:35 ID:qb2GZerK
phpのstring型って最大1024byteまでの文字列しか格納できないっぽいんですが、 最大許容量の変更ってできるのでしょうか? 今現在、1024byte以上入るであろうDBからの値をどのように取り出そうか思案中です。
それはllSayの制限で、phpの制限ではありません。
>>489 llSayが良くわからないですけど、要するに1024byte制約はしょうがないということになるのでしょうか?
491 :
nobodyさん :2009/07/01(水) 22:18:49 ID:vUu+Pn00
なんでそうなるんだw
>>488 >phpのstring型って最大1024byteまでの文字列しか格納できない
ソースぷりーず。
>488 ガタガタ抜かす前に試せばいいじゃん。 何十万文字程度なら余裕で入るぜ。
494 :
488 :2009/07/02(木) 08:53:38 ID:???
>>491 >>492 >>493 確かに、サンプルソースとまでいかないまでも、ソースイメージを示せなかったのは申し訳ないです。
下記のソースイメージでも半角英数字1000文字程度で文字列をくっつけられなくなります。
$sql = ' select * from hogehoge '
$sql .= ' where foo.bar = 1 '
for () {
// ここで$sqlに文字列appendしまくり
}
・・・
というだけの単純にsql文をくっつけまくりソースです。
このことから、string型は1000文字=1024byte制限があるのではないかと勝手に推測してました。
でも、何十万文字も入るのであれば、別の原因が考えられますね。
ちょっとappendしない場合はどうなるか適当に試してみます。
495 :
488 :2009/07/02(木) 08:54:59 ID:???
↑ イメージはわかると思うのでどうでも良いとは思いますが、 $sql = ' select * from hogehoge ' $sql = ' where hohoge.bar = 1 ' の間違いでした。
わけわからん アーメン
>文字列をくっつけられなくなります どんな症状を見てこう判断したか、それがためのソースだろうになぁ・・・
以下エスパー的回答 できあがった$sqlの内容がおかしいに10000ペソ。 データベースに投げる前にechoで確認すべし。半角スペースがないとかクォーテーションをエスケープしてないとか。
499 :
488 :2009/07/02(木) 09:21:26 ID:???
みなさん、申し訳ございません。 すごい単純ミスでした。 環境だけの問題でした。 原因は eclipse + xdebug環境において、eclipse上で参照できる変数の最大文字数が1024byte制限があるだけのようです。 sql文(1024byte以上の)を生成した場合、eclipseの変数の値参照では途中で文字が切れているのですが、正しく実行できました。 デバッガが整った環境に慣れすぎてしまった私が問題でした。 デバッガはあくまでもデバッガだと改めて考え直さないと駄目ですね。
そりゃ親切に省略してくれてるだけだろ
全部表示されたらえらいことになる場合もあるしなw
test_image.jpgみたいなファイルネームを。 test_image_**.jpgに読み変えてリクエストしたりしたいんですけど、 どうすればいいですか? ※**はランダムな数値が入ります。
>>505 $path_parts['filename']が使いたいけど4.4.8なんでダメポ。。。
拡張子は取れるので最悪、test_image.jpg_**.jpgこんな感じで読むしかないのか・・・
何のシステムを作ろうとしてんの?
>>507 普通に1つのアイテムに複数画像がある場合、
ランダム上限値とファイルネームの番号が連動していれば、
管理もsqlリクエストも一発で済むかなと思って。
0はFALSE。
509 :
nobodyさん :2009/07/03(金) 12:20:48 ID:6dZpOUUM
file()
basename()とpathinfo()の合わせ技で楽に出来そうなので そうしてみます。サンクスコ。
512 :
502 :2009/07/03(金) 16:43:01 ID:???
$test_chenge_image = 5; $chenge_image_path = test_image; $chenge_image = '_' . mt_rand(1, test_chenge_image); $ex_name = pathinfo($chenge_image_path); $ex_type = '.' . $ex_name['extension']; $fl_name = basename($chenge_image_path, "$ex_type"); echo $fl_name . $chenge_image . $ex_type; 大体こんな感じで目的達成なんですけど、 もっとエクセレントにそうきゅーとに書けますか? あと、mt_rand()で出来た数値が1桁なら 01.02.03.04.05みたいにするにはどうすればいいですか?
自己レス printf()
sprintfだろ
> $chenge_image = '_' . mt_rand(1, $test_chenge_image); は、こう $chenge_image = '_' . sprintf($chenge_image . "%0" . 2 . "d", mt_rand(1,$test_chenge_image)); 書き換えた。 お前の日記かと怒られそうなので終了。
いわきりさんのphp_nmz_sample.tar.gz というものを見てみたいのですがリンクが切れています。 どなたかお持ちではありませんか? もうnamazuというのは使われていないのでしょうか?
517 :
nobodyさん :2009/07/04(土) 15:06:32 ID:bVCHq/G1
SimpleXMLを使って <a><b>hoge<c>hoge</c>hoge</b></a> というXMLから hoge<c>fuga</c>hoge を取り出すってできませんか? echo xml->a->b;だと hogehoge echo xml->a->b->asXML();だと <b>hoge<c>fuga</c>hoge</b> になってしまう
×<a><b>hoge<c>hoge</c>hoge</b></a> ○<a><b>hoge<c>fuga</c>hoge</b></a>
>>517 SimpleXMLの範囲では出来ないと思う。
タグcを一旦変換するか、後者の両端のタグをストリップするんじゃダメ?
520 :
nobodyさん :2009/07/04(土) 21:30:50 ID:bVCHq/G1
>>519 > 後者の両端のタグをストリップするんじゃダメ?
これしかないかなと思いつつも、
もっと直接的な方法がないかなと
タグを変換ってどうやるんでしょうか?
タグbの名前を変換して
<foo>hoge<c>fuga</c>hoge</foo>とするか
hoge→<c>fuga</c>→hoge
と展開したりってのができないかなと
>>520 例えば<c>→{c}とか、他に出てこない文字列に置き換えてからパースするとか。
あとで{c}→<c>にもどせばおっけ、っていう意味。
どんな場面でどういう事がやりたいのかにもよるけど。
なんか、htmlのパースしたいようにも見えるな。
522 :
nobodyさん :2009/07/05(日) 07:52:14 ID:UWotW+RP
スイマセン、風俗店のサイトで その店の風俗嬢が写メを載せて近況報告をしているようなものや リアルタイムで店の近況を口語文で書いていて、風俗嬢の画像などが載っている ものは すべてブログを埋め込んでいると考えて良いのでしょうか?
>>521 xmlをパースしてhtmlを吐く場合に
そのxmlのタグ内をhtml風にマークアップしたい場合
どうやって出力すればいいのかなと
>>522 考え方はそうだが、ブログとか掲示板とか決まったスクリプトではない。
525 :
nobodyさん :2009/07/05(日) 11:37:56 ID:LafHq5/o
初めての投稿ですが教えていただきたいです。 配列を設定して、最大値と最少値と平均値を出す問題を解いているのですが平均がうまく出来ません。 自分の書いたプログラムは下の物になりますがどこがおかしいのでしょうか? 教えてください。 <?php $data=array(8,7,3,1,4,2,5,6,10,9); foreach($data as $val){ echo $val." "; } $min=100; $max=0; $total=0; foreach($data as $val){ $total=$tatal+$val; if($val<=$min){ $min=$val; } if($val>$max){ $max=$val; } } $ave=$total/10; echo "max :".$max." "; echo "min :".$min." "; echo "ave :".$ave." ;" ?>
526 :
nobodyさん :2009/07/05(日) 11:39:24 ID:LafHq5/o
自己解決しました、スレ汚しすいません。
<?php $data=array(8,7,3,1,4,2,5,6,10,9); echo "max :".max($data)." "; echo "min :".min($data)." "; echo "ave :".(array_sum($data)/count($data))." ;"
?>
閉じタグはいらんよ
?> (キリッ
?><!-- P.S. I love you.... -->
てか、行がおわってない。
最後の行は ; がなくてもいいよ
その場合閉じタグが必要。
." ;" これがほんとに意図した出力かと
後だしじゃんけん?
538 :
nobodyさん :2009/07/06(月) 12:47:06 ID:wMd3vz+Y
PHPのよい練習問題が乗ってるサイトってないですか?
2ch
540 :
nobodyさん :2009/07/06(月) 13:57:22 ID:Zv6if7ao
PHPでできることの限界が知りたいです 何ができて 何ができないのか教えてください
つマニュアル
542 :
nobodyさん :2009/07/06(月) 14:07:26 ID:fHQNm0aa
あああっ!mySQL 、日本語キーボードで使っていると `` が入力しにくいんだよこんちくしょうめ
右手小指と中指で楽じゃん
自分一人しかアクセスしない管理画面(パスワードとホストで制限) のフォームとかでもhtmlspesialcharsとかかますべき?
>>544 かますべきだと思う(´ω`)
忘れた頃に仕様変更したら変なエラーに悩まされるとかいうことが
あるし。
自分ひとりしかアクセスしなくても、URL見つけられたら・・・という 万が一もあるし
普通認証かけるだろ
いやそもそも認証画面での話だろw
つか管理画面のフォームで何を表示するのかにもよるんじゃ? 質問者はアクセスするページによってXSSの危険性が違うと認識してる? パスワードとホストで制限って書いてるからふとそう思った
551 :
544 :2009/07/06(月) 18:18:24 ID:???
データベースの統計情報みたいなやつとか 昨日何人が登録したとか、1ヶ月以上ログインしていないユーザーを 削除するとか 管理人しか使わない訳だし、例えばワード検索で自演XSSやSQLインジェクションができてもいいのかなと やるには自分で不正コード打ち込まないといけないじゃない?
打ち込まなきゃいいじゃない?
553 :
544 :2009/07/06(月) 18:23:36 ID:???
だからいらないんじゃないのって
じゃそれでいいんじゃないのって
555 :
nobodyさん :2009/07/06(月) 18:47:29 ID:Cz5ZS8nJ
PHP初心者でsmartyも無知ですが アドバイスを頂けたらと思っております <!--{assign var=test value="`$smarty.const.URL_DIR`listblock/list[@].html"}--> <!--{if $smarty.server.php_self==$test}--> @のページ時だけ表示 こういう感じでソースを書いてみたら (例えば.html)で成功したのですが @の部分を任意の数字のみで複数指定したいのですが どのようにしてやると宜しいでしょうか? array(1,5,6,8,10 のような感じになるのでしょうか?
in_arrayでよいのでわ?
PHPというかもはや計算の問題なんですが、 $int = 500; if ($int >= 568) { $lv = "Lv9"; } elseif ($int >= 406) { $lv = "Lv8"; } elseif ($int >= 278) { $lv = "Lv7"; } elseif ($int >= 180) { $lv = "Lv6"; } elseif ($int >= 108) { $lv = "Lv5"; }//5*5*2(50)+4*4*2(32)+3*3*2(18)+2*2*2(8) elseif ($int >= 58) { $lv = "Lv4"; }//4*4*2(32)+3*3*2(18)+2*2*2(8) elseif ($int >= 26) { $lv = "Lv3"; }//3*3*2(18)+2*2*2(8) elseif ($int >= 8) { $lv = "Lv2"; }//2*2*2(8) else { $lv = "Lv1"; }//0 echo "{$lv}<br>"; というソースを実行するとLv8<br>が出力されます。 これを $lv = $int / (ごにょごにょ演算); 的な感じで1行(もしくは数行)にしたいのですが、計算式がわかりません… $intと比較する数字はコメント部分の通りです。 どなたか教えていただけるとありがたいです。 アホな質問ですいません。
無理に短くしないで関数にすればいいだけじゃん。 ロジックを整理するならともかく、書き方で短くするだけだと あとで条件変更しにくくなるよ。 あと、個人的には、$int という変数名はinteger 一般みたい で抵抗がある。
forで引いていけばいいじゃん
switchではダメなん?
>>557 $int = 500;
$lv = levelcheck($int);
echo "{$lv}<br>";
function levelcheck($int){
if ($int >= 568) { $lv = "Lv9"; }
elseif ($int >= 406) { $lv = "Lv8"; }
elseif ($int >= 278) { $lv = "Lv7"; }
elseif ($int >= 180) { $lv = "Lv6"; }
elseif ($int >= 108) { $lv = "Lv5"; }//5*5*2(50)+4*4*2(32)+3*3*2(18)+2*2*2(8)
elseif ($int >= 58) { $lv = "Lv4"; }//4*4*2(32)+3*3*2(18)+2*2*2(8)
elseif ($int >= 26) { $lv = "Lv3"; }//3*3*2(18)+2*2*2(8)
elseif ($int >= 8) { $lv = "Lv2"; }//2*2*2(8)
else { $lv = "Lv1"; }//0
return $lv;
}
一つの公式作ってそれだけで同じ種類のあらゆる計算に当てはめるって、 誰もが一度はやってみるよなw 数学の世界ならいいけど、コンピュータだと演算方法が限られてるから、 そんなことやっても誰も得しないという。
for ($i = 1; $i < 10; $i++) { print level($i)." "; } function level($level) { for ($i = 1; $i <= $level; $i++) { $return += (1 + $i) * (1 + $i) * 2; } return $return; }
567 :
557 :2009/07/07(火) 23:09:14 ID:???
みなさんレスありがとうございます。
一応求めていたのは
>>563 さんのものだったのですが、
アホなので理解できませんでしたw
$lvが増えていくと処理が遅くなりそうですが、
とりあえず現状は9までで間に合うので
>>566 さんので妥協しようかと思います。
ありがとうございました。
つ変数の初期化 つpow てか今の経験値で到達するレベルじゃなくて、今のレベルに必要な経験値を求める関数でいいの?
569 :
nobodyさん :2009/07/08(水) 08:58:54 ID:szsLUg6E
>>568 今の経験値からLvがいくつかなのを求めるということでしょ。
あげちゃったすまそ
だからそのために1〜99まで毎回ループして比較するわけ?って言ってんの
その関数で配列作っておいて 配列スキャンするのがいいんじゃないかな。
99回のループが問題になるって、どんなんだよw それに、3次の解の公式の方が重たいだろ、複素数出てくるし3乗根出てくるし。
お前頭悪いだろ
この一連の流れがまったくわかってない人がいるね
577 :
nobodyさん :2009/07/08(水) 18:11:27 ID:m/DVsNfk
そのくらいで迷うなら本とバージョンもあわせたほうがいいかもね。 php.ini-development や php.ini-production の中見てみた? あと一緒に添付されてるinstall.txtとかも読もうぜ
応用の利かなさっぷりがすごいな…
>>576 こうだろ。
568==571<今のレベルと次のレベルの経験値を保存しとけばいいだろ。
573<毎回99回のループで計算してなにか問題でも?
572 でいいと思うのだが
572でいいな。
俺も>572のようにLvと総経験値の対応テーブルを持っておくに一票。 ・計算式の変更が起きる可能性は高いだろうから、簡単に差し替えられるようにした方が便利 ・また、変更があった際に、Lv10とLv2で同じ計算式になるって保証もないので、式の一般化はしない方が便利 ・毎回算出しても問題になるような量の計算でもないが、無駄な計算を回避できるに越した事はない >563 のような式そのものをコードの中に組み込むのは ・後でどういう式で計算してるのか分かるように、ロジックをソースコードの中に書いておきたい ・「ルチ将軍のLvは1300だ」とか「私の戦闘力は53万です」とか、データ量が多すぎで一覧表にしてられない 場合とかかな。
ワンチップマイコンでもあるまいし今の時代に ソースサイズ必死で小さくする理由があるんかねw
そもそもPHPが毎回起動すんだろ。 IF文が200個くらい増えたところで、 起動プロセスよりはるかに軽い。
PHP毎回起動とか何時代のインフラだよ
Apacheのプロセスでは?
>>583 は「構造化のススメ」かな?
ソース分けて関数にするだけで
>>583 のような心配は無くなる。
あとは関数の中身を自分の解りやすいように書けばいい。
どういう関数にして実際のスクリプトではそれをどう利用すると?
CG やアクションでも、計算量多いのは予め計算済みの値を配列(テーブル)に入れるのが定石。 function is_next_level($current_level, $current_exp) { $level_table = array( '1'=>'8', '2'=>'26', '3'=>'58', '4'=>'108', '5'=>'180', '6'=>'278', '7'=>'406', '8'=>'568', '9'=>'768', ); $next_level = $current_level + 1; if ($level_table[$next_level] < $current_exp) { return true; } else { return false; } } $level = 54; $exp = 2000; if (is_next_level($level, $exp)) { print 'レベルがあがった。再帰でも使って何レベル上がったか返す関数は自分で書け'; }
学校の課題とかでスマートに書きたいんじゃね?
593 :
nobodyさん :2009/07/09(木) 15:05:13 ID:9xva5nyV
俺なら手っ取り早くDBに入れるけどなあ SELECT MIN(level) AS level WHERE exp > 2000 こんなかんじ?
わざわざDBに計算してもらうの?(驚愕
経験値取得の度に DB アクセス…
ソース書く人と仕様を決める人が同じオナニープログラムなら
>>566 みたいなのでいいかもしれんが
将来的に拡張される可能性があるなら配列に入れるのが手っ取り早いね
もちろん、いずれは膨大な数になるとかならDBでもいいけど
高々10個足らずの整数値しか取らない変数にDBはありえないでしょ
572 でいいと思うのだが
質問者不在の議論が続く…
599 :
nobodyさん :2009/07/09(木) 20:52:57 ID:lMkQZB1Q
おしえてください。
PHPで自動的にメールを送って、メルモというメールマガジンにまかせて配布…ということを考えているのですが、うまくいきません。
メールの内容は以下のような内容で文法はあっているでしょうか。
MIME-Version: 1.0
Content-Type: text/plain;charset=ISO-2022-JP
Content-Transfer-Encoding: base64
From: xxxxxxxxxxx@xxxxxxx
To:
[email protected] subject: =?ISO-2022-JP?B?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==?=
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
実際の送信の部分は以下のように。
mb_internal_encoding('ISO-2022-JP');
$subject =mb_encode_mimeheader(mb_convert_encoding($subject,'ISO-2022-JP','UTF-8'));
$text=mb_convert_encoding($text,'ISO-2022-JP','UTF-8');
$text=base64_encode($text);
$text=chunk_split($text);
mail($to,$subject,$body,$header)
以下のことは既に確認したのですがいまだにうまくいきません。
・メールアドレスを自分のものにすればYahooメールには届いて、本文が読める。
・受信者・送信者は間違っていない。
あとは、おそらくメルモ側が「管理者からのメールのみ送信する」という設定なので
Fromを正しく認識さしてあげてないのかな…と思うのですが。
$textはどこいった? mail()に渡してないようだけど
601 :
599 :2009/07/09(木) 22:17:58 ID:???
ぐぁ…すいません、改行制限と戦ってるうちに書き換わってましたが、body→textです。 toだけ書き換えればメール本文は届くことは確認しました。
そのメルモっていうサービスは ・Content-Transfer-Encoding: base64 を食ってくれるの? ・envelope from と From が違っても受け取ってくれるの? という辺りが気になった。
603 :
nobodyさん :2009/07/09(木) 22:39:45 ID:mlTLaiQM
すみません、教えてください。 言語というよりはインフラの質問です。 Windows 2000 Server, Apache2.2 で PHP4 は動作しましたが、 ibase_connect() がどうやっても Undefined function になってしまいます。 もちろん ext のパスを php.ini の extension_dir に記述しています。 ext に php_interbase.dll もあります。extension も ; コメントをはずしています。 GDS32.dll が必要との事だったので、firebird server/client をインストールして、 GDS32.dll を windows, system32 フォルダにともにコピーしました。 php.ini をしっかり見ているかの確認はしました。 ただ、extension のファイル名を適当なものにしてもエラーにならないのが 少し気になりましたが・・・ どんな些細なことでも良いです。なにか解決の糸口を教えてください。
apache再起動
php.iniは複数あるからどれを見てるか・・
>>604 php.ini を変えるたびに再起動しました。
何度やってもだめなので OS も 4〜5 回再起動しました。
でもだめですた・・・
>>605 そう思って、extension_dir や include_dir を適当なやつにしてみて、
エラーになるところまで確認しました。
向き先は間違っていないと思います・・・orz
phpinfo()
608 :
599 :2009/07/10(金) 01:08:50 ID:???
ありがとうございます。なるほど… エンコード方法考えてまた試して見ます。
609 :
603 :2009/07/10(金) 01:13:26 ID:???
>>607 phpinfo() には interbase の出力はありません。
単純に dll が読み込めていないんだと思います。
でも、なぜ読み込めないのかが分かりません。。
>>609 phpinfo()の出力結果で、Loaded Configuration Fileはどこになってる?
自分が呼んでほしいところになってる?
問題なければ、次にコマンドラインから
php -m -c (php.iniへのフルパス)
を実行したらどうなる?
エラー出る?出ない?
interbaseの拡張モジュールは表示される?
これらの結果がどうなるか教えて
611 :
nobodyさん :2009/07/10(金) 01:56:05 ID:dQkRWDmk
>>611 そのバーに出てるアドレス(追記前)を書いてみましょう。
>>611 (1)アパッチ起動してる?
(2)urlにはlocalhostって入力してる?
phpファイルをダブクリでは動かないよ
どうも。
>>612 file:///C:/php5/hajimete_php5/07-03_01.php?text1=〜
です(『〜』が追記部分)
>>613 アパッチは起動してますが、「urlにはlocalhostって入力してる?」の意味が分かりません。
PHPはプログラム選択で起動させています。
>>614 ブラウザを開いて、
URL欄に、
localhost
って入れないとダメなのよ。
URLとWebサーバーのメカニズムを勉強しよう。
まず、URLの記述。 file:// で始まるURLは、HTTPによる
通信を伴わないファイル本体の参照だよ。つまり、Explorer
でファイルを開くのと同じこと。だからソースが表示される。
http:// で始まるURLは、HTTPというプロトコルを通して、
通信先のWebサーバーに接続、それ以降の記述によって、
得るデータは、Webサーバーの処理の任せるということなんだ。
http://www.yahoo.co.jp:8080/movie/ ~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~
@ A B
@がプロトコル。 Aがホスト名(:がついてるとポート番号指定)
B以降は、Webサーバー側が勝手に解釈する。
上のレスで localhost 、というのは、同じマシンの中のApacheを
参照するときのホスト名だよ。なので、まずは
http://localhost と書かないと、Webサーバー経由のアクセスにならない。
それから、PHPのメカニズム。
url で、xxxx.php で終わるものをApacheが受け取ると、Apache
は、自分が参照できるPHPファイルを開き、PHPで処理してから
ブラウザに結果を渡すんだ。なので、ソースとは違う表現になる。
1) 自分のコンピュータで正しくApacheが構成されているか確認
しよう。(http;//localhost:xxx/で確認できる)
2)問題なかったら再度、自分の設置したPHPファイルをApache
経由で見ることができるか確認しよう。
問題の解決の糸口はここからだ。 たぶん。
>>617 前提知識を書いてないのは確かに親切じゃないけど、
http と、http サーバーのメカニズムはWebプログラム
をするなら前提として知っておく必要があると思うぞ。
書いてないわけないだろ。なんていう書籍?
>>619 はじめてのPHPプログラミング基本編 5.3対応 (TECHNICAL MASTER)
です。
localhostに関しては、スクリーンショット図内のURL欄に小さく印刷しているだけです。
amazonでも説明不足っていう評価だね
第一章に 01-01 PHPの世界へようこそ [PHPって?] 01-02 PHPが動作する環境を準備しよう [PHPのインストールと設定] 01-03 PHPの動作確認 [PHPの動作確認] とあるけど俺の幻覚なんだろうか。
>>624 Chapter07に来るまで apache が出て来ないから
そこからずーっとCLIで練習させる本なのかなと思い込んでみた。
>>626 関係ないけど、最近の尼はすごいな!
感動した。
>>611 だめだぜ。
ちゃんとした本を買わないと。
今すぐそんな本を捨てて
新しい本とマニュアルを読みなさい。
後秀和さんの本はあんまりよくないから
PHPの本読みまくってたら、 ついに読む本がなくなってきた。 25冊は読んだ。
自分で本を書け
自分で本を書くのってどうやるのかな? はじめに出版社に話をするの?
PHPのプロの方ですか?
最近始めた初心者です。 ネットを頼りに独学でやってるのですが、行き詰ってしまいました。 2つ質問させて下さい。 1.formからの入力内容をtxtファイルに書き込む時、ファイルの先頭に追加書き込みする方法を教えて下さい。 2.for文の中で同一の名前の末尾に連番を加えた変数名を作る方法を教えて下さい。$hensu1、$hensu2みたいな感じです。 1に関しては、今はtxtファイルを開くときに、 $fp = fopen($data_file, "a"); としているので、ファイルの最後に追加書き込みされてしまいます。 ファイルを開いた後に rewind($fp); と記述してみましたが、意味は無かったみたいです。 2に関しては、 for($i=1; !feof($fp); $i++) {//ファイル最後まで読み込む $fline = fgets($fp);//1行読み込む //3パターンどれか当たれ! $hensu.$i = explode(",",$fline); $hensu[i] = explode(",",$fline); $hensu[$i] = explode(",",$fline); } 上の3パターンを試してみましたがダメでした。 すいませんが、ご教授お願いします。
>>634 1)$data_fileの中身を別ファイルなりメモリ上なりに退避させて、
新規でform内容を書き込んでから、退避しておいたデータを追記する。
2)$hensu1 = '1だよ';
$i = '1';
$hensumei = "hensu".$i;
echo $$hensumei;
636 :
634 :2009/07/15(水) 14:23:24 ID:???
>>635 さん
ありがとうございます。
なるほど!1の考え方は思いつきませんでした。
後で試してみます。
2なんですけど、すいません、私の説明がよくなかったですね。
ご教授頂いた方法をforに組み込むと、$hensumeiの中身が「1だよ」〜「5だよ」
と増やせそうですね。
ですが今回やりたいのは、「変数名」の番号を増やしたいんです。
例えば、ループ後に記述された
echo("変数1の中身=". $hensu1 ."<br />\n");
echo("変数2の中身=". $hensu2 ."<br />\n");
echo("変数3の中身=". $hensu3 ."<br />\n");
の結果が、
変数1の中身=犬
変数2の中身=猫
変数3の中身=鳥
といった答えになるようにしたいです。
せっかくご教授頂いたのに、申し訳ありません。
でもそのやり方は、何か別の機会に使わせてもらおうと思います。
637 :
635 :2009/07/15(水) 14:37:09 ID:???
>>634 よく見てご覧。
$iを増やすと、$$hensumeiが「$hensu1」「$hensu2」「$hensu3」に変わっていくんだよ。
なんで3行目ダブルクオーテーション?
639 :
635 :2009/07/15(水) 18:45:54 ID:???
>>638 ははは・・・
最初は
$hensumei = "hensu{$i}";
って書こうとしたんだけど、混乱させると思って書き直した。
その名残だわ。
小さいことは気にしない、それ♪
640 :
634 :2009/07/16(木) 19:16:32 ID:???
>>635 さん
出来た!出来ましたよ!
すごい!ありがとうございます!
お礼が遅くなってしまい、申し訳ありません。
分かりやすい書き方も助かりました。
正直、639の書き方でしたら、まだ理解出来てなかったかもしれません。
まぁ実際には何回か実験→失敗を繰り返してしまいましたが、
仕組みもなんとなく理解して来ました。
それにしてもPHPは楽しいですね。
手品やパズルみたい。
解き方が分かれば、なるほど〜って納得するけど、解き方を見つけるのが難しい。
先週末もそうだったんですが、今週末も家にこもりっきりになりそうです。
>>640 なあなあ君、初心者だろ?
それ、「可変変数」っていうんだけど初心者が使うもんじゃないよ。
ある程度慣れた人がちょっと技巧的に書く時に使うの。
配列使っとくのがおすすめだよ。
解決したのでもう結構です
>>642 =
>>640 ?
こういう eval 系処理は初心者に絶対覚えさせたくないよな・・・
>>641 にあるように、配列を使え。java も c++ もできない糞プログラマになるぞ。
いや、PHP 以外、と言ったほうが正しいか。
専用のロジックを使え。たいていの場合、そっちのほうが高速だ。
行く末を心配する程の有望な新人でない限り、ほっとくのが吉。
初歩的なことだと思うのですが教えて下さい 変数iに<form method="POST" action="toiawase3.php">を 代入したいのですが <?php $i='<form method="POST" action="toiawase3.php">'; echo $i; ?> とやると空白しか入ってくれません どなたか入れ方を教えて下さい
var_dump($i);
647 :
634 :2009/07/18(土) 20:33:15 ID:???
642は私じゃないですよ。 そんな自己中じゃないですw あれから、635さんに教わったやり方で、変数名を連番化する事は出来たのですが、今度はその変数を表示させる部分でつまづきました。 上手く言葉で表せないので、ソース載せます。 for($i=1; !feof($fp); $i++){//$$の実験 $fline = fgets($fp);//1行読み込む $hensumei = "hensu".$i; $$hensumei = explode(",",$fline); } echo "jjの実験=". $hensu2[0] ."<br />\n"; この書き方ですと、$hensu2[0] は期待通りに表示されますが、本当は最後のechoでの$hensu「2」の部分を変数化して、例えば $hensu.$i[0] みたいな感じにしたかったのです。 色々試しましたが、残念ながら上手くいきませんでした。 というより、$$の仕組みがよく理解出来てないみたい…。
648 :
634 :2009/07/18(土) 20:34:10 ID:???
(つづき) そこで皆さんがおっしゃっている、配列でのやり方を考えました。 そしたら、そもそもの仕様が間違っていた事に気付いてしまいました。 今回やりたいのは、テキストの上から順に1行読みとった内容を「,」で区切り、 それをその順番のまま表示させるというものですので、以下のソースで対応出来ました。 for($i=1; !feof($fp); $i++){//配列での実験 $fline = fgets($fp); list($naka1,$naka2,$naka3) = explode(",",$fline); echo "配列での実験 中身1=". $naka1 ."<br />\n"; echo "配列での実験 中身2=". $naka2 ."<br />\n"; echo "配列での実験 中身3=". $naka3 ."<br />\n"; } もちろん$$を使ったやり方でも出来るのでしょうが、私にはまだ早かったみたいです。 それにしても、解決方法にも、色々なやり方があるんですね。 配列を使った方法に気付けたのも、みなさんのおかげです。 ありがとうございました! そして今日もPHPが楽しい!
>645 ブラウザに出力した時点で、それはタグと見なされます。
while (!feof($fp)) { $fline = fgets($fp); $naka = explode(",",$fline); foreach ($naka as $i => $value) { echo "配列での実験 中身{$i}={$value}<br />\n"; } }
while (!feof($fp)) { foreach (explode(",",fgets($fp)) as $i => $value) { echo "配列での実験 中身{$i}={$value}<br />\n"; } }
switch文で1つのcaseに2つの条件としたいのですが、うまくいきません。 $tL $init $tLvとあり、if文の場合は if(($tL == init->a) && ($tLv == 0)) { ・・・ } これをswitch文で表すにはどうすればいいでしょうか? switch($tL) { case ($init->a && $tLv == 0) : ・・・ } } などとしましたが、うまくいきませんでした。お願いします。
またブラウザーゲーかw switch(true) とすればできるけどあまりお勧めはしない
>> switch文で1つのcaseに2つの条件としたい ここがまちがいだときづけ。 できるできないのもんだいではない。
知らんやつがPHPコード送ってきた場合、 それを安全に見るにはどうしたらいいの? エディターで見るのは多分安全だと思う。 いきなりアパッチ起動して、ブラウザで見るのは危険? なぜなら、ファイルを削除されたりするから。
知らんやつがPHPコード送ってくる状況がないからわからん スパムで送ってきたの?
いや、子分。 知らんヤツという言い方は悪かった。 ようは自分以外が書いたコードを 安全に見る方法が知りたいの。
なにかあっても損害賠償請求できる範囲の人間ならいきなりブラウザで見てもいいんじゃない? ソースが読めるならその限りではないけど
子分から恨みを買ってるかどうかぐらいエディタで見ればいいじゃない。
エディタでみてみた。 実行するといきなりmailコマンドを実行 するようなソースだった。 ここをコメントアウトしてから実行しないと そこのメールアドレスにメール飛んじゃう><
661 :
635 :2009/07/19(日) 10:55:01 ID:???
いままで参考書とか解説サイトとかで コードを発見した場合、 中味を見ずにいきなり コピペで実行してたんですが、 (なぜなら安心だから) こんどからは、まずエディターでじっくり ソースを眺めて、安全かどうかを確認して、 もし安全でない部分があったらコメントアウトするなり 対処して、それからブラウザで実行、ってしないと ヤバイ、ってことに気付きました。 他人のコードをさわるってこういうことなのね。
>662 普通、そうしないか・・・? 自分で書いたコードでさえ、ブラウザで実行する前には一応目を通すのに。
PHPの勉強なのにソース読まないでまず実行して何が勉強になるんだ・・・?
PEARのエラー制御ですが、 エラーレベルを最強にしてPEARを実行すると、エラーが たくさん出まくるので、 (1)エラーレベル0にする (2)PEAR読み込む (3)エラーレベル最強にする (4)本体のコード書く こういう順番にすればいいんじゃないか? っておもったのですが 、これであってますか?
オレ竜は、エラー警告レベル最強にしたぐらいで出まくるのは使わないことにしてる
エラー出まくるのは開発理念がおかしいので許容できないなら使わない
668 :
nobodyさん :2009/07/22(水) 13:08:49 ID:p7cs3Pfv
受信してきた画像ファイルを保存したいのですが バイナリに戻したデータを単純に保存すると ヌルバイトの部分が5c80に変えられてしまいます どうしたらうまく保存できますか?
その部分のソースかけよ
「ひとり用wiki」ってソフトがあって、 それの書き込みデーターを、 ノートンが間違ってウイルスと誤認して、 データーを全部削除してしまうという 事件が以前、ありました。 このような事故を防ぐためには、 どのような対策を取ったら いいのでしょうか?
それほんとにワームか何か入ってたんだろ
ノートンの誤認です。 有名な事件です。
それPHP関係あんの?
スタンドアローンにしてノートン入れない方法があります
データーの保存をMySQLにしたPHPアプリの場合、という 意味です
そういう意味だったのか。
;セミコロン を出力するのって、どうやるの?
678 :
677 :2009/07/23(木) 14:19:27 ID:???
わかったから もういいです。
普通に出せないか?
php5.3ってimagejpeg使える?
print ";";
683 :
nobodyさん :2009/07/23(木) 16:11:36 ID:WhUpMqXo
数値が120,121,122,123,124の時は120を、 数値が125,126,127,128,129の時は125を返したい (5の倍数に切り下げる)場合は、ドウすれば良いのか? エクセルでは=FLOOR(数値,5)とすればスグに決着が付くンだが・・・
人に物を聞く時の態度を先に学びましょう
なんか特別な関数があるかもしれんが $n = 124; print $n - ($n % 5);
686 :
nobodyさん :2009/07/23(木) 16:49:36 ID:WhUpMqXo
数値を5で割った余りを数値から引く、ということですね。 >なんか特別な関数があるかもしれんが ありそうですね・・・色々探したのですが。。。
687 :
635 :2009/07/23(木) 20:21:37 ID:???
普通にfloor()じゃだめなのか?
688 :
687 :2009/07/23(木) 20:24:42 ID:???
忘れてくれ。orz
roundがあるだろうんぽ
round でできるならやってみてくれ
自演乙
わかったから もういいです。
俺の嫁
ブサイクって
生きてる意味ないよね
でも名器
Q.あなたならどっち? 1.美人でガバガバ。 2.ブスでミミズ千匹。
1に握りこぶしでも埋めてやる。
言いたいことも言えないこんな世のなんちゃらって隆が言ってたよ
下のような感じで、sessionでtime()を使って経過時間を出したいんですが(分・秒などへの 変換は省略してます)、sessionではtime()は最後のスタンプしか取れない(残らない)ようで、 "time1"の情報が消えて、"time2"の方の値しかとれず、計算できません。 どうしたらいいでしょうか? $_SESSION["time1"] = time(); $_SESSION["time2"] = time(); $keika = $_SESSION["time2"] - $_SESSION["time1"];
time1の結果が取れないってどう確認したの?
1行目と2行目の間でセッションをまたいでるなら、session_start()が抜けてるとかの初歩的なセッションの使い方ミス。
>>704 var_dumpでみました(null)。
あと、開始時刻を日時表示すると1970/01/01 09:00:00となります。
>>706 ビンゴでした。
session_start()の位置が悪かったようです。
<html>より上に移動させれば期待通り動きました。
お二方ともありがとうございました。
<?php $a=0; if($a){ ?> <p>hello</p> <?php } else { ?> <p>bye</p> <?php } ?> -------------------------------------- こういうコードって普通なの?
多く使われてるかどうかは知らん。 けど、PHPの使い方の一つではある。
普通はテンプレートエンジン
時間が無いときにたまに使う。 間に入るテキストの量によるかな。
713 :
nobodyさん :2009/07/31(金) 13:13:32 ID:VVW/5zpY
お願いだから俺と作業する時はこっちで頼むね <?php if($a): ?> <p>Hello</p> <?php else: ?> <p>Bye</p> <?php endif; ?>
お願いだから私と作業する時はこっちで頼むね <?php $greeting = $a ? 'Hello' : 'Bye'; ?> <p>{$greeting}</p>
715 :
714 :2009/07/31(金) 13:47:26 ID:???
あ。バグった。これで。 <?php $greeting = $a ? 'Hello' : 'Bye'; print <<<_HTML_ <p>{$greeting}</p> _HTML_;
絶対一緒に作業したくないなw
717 :
nobodyさん :2009/07/31(金) 19:14:57 ID:gwmKk+1i
正規表現がよくわかりません。 mb_ereg_match( "[^a-zA-Z\!-\@\:\-\,\.\s]{2,}", $str ) ↑ 文字列に英数字記号以外の文字が2回以上連続しているのが 含まれているかどうかを判定したいんですが、これじゃダメなようです。 どこが間違っているんでしょう? 内部エンコーディングはUTF-8、デフォルト言語はニュートラルです。
718 :
nobodyさん :2009/07/31(金) 20:50:38 ID:420G9Lso
ダブルクォーテーション("")、シングルクォーテーション('')で処理速度に違いはありますか? ダブルの方は変数を認識するようなので、同じ文字列だとシングルの方が実行速度が速い気がするのですが もちろん普通なら人間じゃ体感できない違いなんでしょうが、気になるので教えてください!
720 :
nobodyさん :2009/07/31(金) 21:15:49 ID:420G9Lso
>>719 めっちゃ参考になります!ありがとうございます!
722 :
nobodyさん :2009/08/01(土) 01:23:40 ID:sEcc+VNI
連想配列のインデックス部分だけimplode()みたいなことしたいんだけど どうしたらよい?
>>722 implode( "", array_keys( $a ) );
724 :
nobodyさん :2009/08/01(土) 07:05:49 ID:RvN4vKjq
<?php
$req="
http://api.rakuten.co.jp/rws/2.0/rest?operation=ItemRanking&version=2009-04-15&developerId=&affiliateId=&genreId=409365 ";
$string = preg_replace('/:/','_',file_get_contents($req));
$xml = simplexml_load_string($string) or die("XMLパースエラー");
$output = "<table>n";
foreach ($xml->Body->itemRanking_ItemRanking->Item as $item) {
$output.= "<tr><td><img src='" . preg_replace('/http_/','http:',$item->smallImageUrl) . "'></td>";
$output.= "<td>商品名:".$item->itemName</td></tr>"; //エラー出る場所です
}
$output .= "</table>n";
echo $output;
?>
エラーが出る場所はわかっているのですがなぜエラーが出るのかがわかりません
楽天APIのXMLをphpで表示したいと考えています
ご教授願います
>>724 >$output.= "<td>商品名:".$item->itemName</td></tr>";
”の数があってないとか・・・
$output.= "<td>商品名:".$item->itemName."</td></tr>";
726 :
724 :2009/08/01(土) 07:25:36 ID:RvN4vKjq
>>725 まさにその通りでした
当方の質問にお応え頂き誠に有り難う御座います
727 :
nobodyさん :2009/08/04(火) 03:11:34 ID:bt+0qZLb
PHPで時刻の差分って出せないんですかね? 8:00 - 0:45 = 7:15 みたいな計算するにはどうしたらいいんでしょう?
タイムスタンプについてまず知りなさい。
>>727 echo date('H:i', strtotime('08:00 -45 min'));
730 :
nobodyさん :2009/08/04(火) 03:38:20 ID:bt+0qZLb
>>729 じゃあ
8:00 - 6:45 だったら?
結局自分で何時間何分か出して、引かないといけないみたいですね・・・
インターバル計算できないのか・・・
731 :
nobodyさん :2009/08/04(火) 03:40:39 ID:bt+0qZLb
date("H:i", strtotime(strtotime("01:00") - strtotime("00:30"))) ってやったら、18:00 ってどういうことなんだ・・・・
元の時間をunixタイムで計算してください それで計算したのを元の時間にもどせばよい
734 :
nobodyさん :2009/08/04(火) 10:31:32 ID:bt+0qZLb
>>733 たしかに、strtotime()で、unixタイムは出るので、それ同士を引けば、秒の差分は出たんですけど、
それをどうやって、date("H:i", )みたいに整形して表したらいいのかがわからないんです・・・・
便乗質問。
>>731 strtotimeの戻り値をstrtotimeに入れてもいいんですか?
お前は何を言ってるんだ?
strtorime(strtotime())ってことでしょ やってみりゃいいじゃないって話だけど
738 :
734 :2009/08/04(火) 12:12:15 ID:bt+0qZLb
自己解決しました
僕の夏休み
花火、すいか割り、プール、絵日記…
741 :
nobodyさん :2009/08/04(火) 22:06:13 ID:RR0r5hKi
Aという時間がある Bという時間がある。 Aをタイムスタンプに直す。 Bをタイムスタンプに直す。 A-Bを計算する。 差分を、好きな形式に変換しなおす。
タイムスタンプなんかに直さなくていいだろ
長々と書いているが、 if(1) これと同じってことだろ? 説明が長いやつはたいてい、レベルが低い。 よくわかってる人ほど、短く、適切な説明をする。
PHPで多人数で開発するときでも、 OOP使いまくり、インターフェースで 多重継承使いまくり、にすれば 問題ないんだよね?
なんでこいつはケンカ腰なの?ストレス溜まってんの? ストレスのはけ口にされると迷惑ですよ
748 :
nobodyさん :2009/08/04(火) 22:30:48 ID:RR0r5hKi
>>745 この場合は1じゃなくてif(true)だよ
751 :
744 :2009/08/04(火) 22:53:59 ID:???
>>744 >つまり$this->今日は話したは
>$this->今日は話した == trueという意味をもっている
このつまりってのはいらなかったな
phpってこれから先ずっとあるの?
WEBアプリはしばらく続くだろうけど、phpはどうなんだろね バージョン6が出るかどうかだろうか? スクリプト言語のバージョン6は、出ないことが運命づけられてる気がするので心配だ
もう出てるじゃん
PHPはそれなりに長続きすると思う。
756 :
nobodyさん :2009/08/05(水) 09:47:24 ID:gQxriDt5
PHPをバカにしていたが、使いこなせるようになると、 手放したくなくなるな
使いもせずに評価してたのか
>>756 そのとおり
で、サイト内に自由に吐き出したい部分だけを
持ってくる
これができるようになると、もっと実感できますぞ
760 :
nobodyさん :2009/08/05(水) 16:45:34 ID:Oexv7raq
.mailfilterに属性600、改行\nで to "| /usr/local/bin/php /home/アカ名/www/test.php" と記入し、メール受信でPHPを起動するようにしたのですが 通常はちゃんと起動するのですが PHPに require_once 'Mail/mimeDecode.php'; を書くとメールを送っても Returned mail: see transcript for details が返信されて起動しません php.iniのインクルードは include_path = ".:/home/アカ名/pear/PEAR" で、実際にPEAR以下にMail/mimeDecode.phpは存在しています メール送信からこれを起動させるにはどうすればよいのでしょうか?
>>760 CLIでphp.ini参照先が違うとか
PHPによるECサイトプログラミング~ショッピングカートから決済まで ―MySQLのデータベース設計とPHPセッション管理の作法 大角清美 PHPの勉強しようと本屋にいったら「ひろゆき推薦とかいう」すごい本を見つけた・・・ 本を開いたときにデスクリムゾンをはじめてみた時のような衝撃を受けた・・・ アマゾンでどんなレビューされてるかと思ったらアマゾンのレビューの 信憑性のうわさは本当だとわかった・・・
もとがアンサイクロペディアか・・・ どこからネタなのか判断不能だな。
>752 書いたものをこの先ずっと使いたい、というならJavaかPerlをオススメする。 PHPやRuby, Pythonなんかは後方互換性をあまり重視しない言語。 分かりやすくいえば、今PHP5で普通に書いたコードが、PHP6で動かなくなる可能性というのが、それなりに高い。
自動的にphp5のコードを6に書き換えるソフトってないの?
すぐにボツになりそうな組み込み関数とか使わないようにすればいいだけ
例えば?
>>764 それは Perl6 は出ないから、という高度な皮肉か?
769 :
nobodyさん :2009/08/06(木) 09:53:56 ID:h+wjIr1t
Perlって終わった言語じゃないのか? これからはPHP
後方互換捨てた Python 3, Ruby 1.9.1 が出たことで Python, Ruby は数年は互換性は気にしなくてよさそう。 Perl は Per5 に不満を持っていないから Perl6 が出てもずっと Perl5 を使いそう。 PHP は x.y.z の z ですら互換性がなくなったり goto が追加されたりと目が離せません><
zって何?
772 :
nobodyさん :2009/08/06(木) 10:06:16 ID:w20GGpoy
簡単なアップロードスクリプトを作成しました。 <h3>ファイルアップロード</h3> <?php // ファイルを保存するディレクトリ $save_dir = "./"; $enc_disp = "EUC-JP"; // ブラウザ表示文字コード $enc_file = "SJIS"; // 保存ファイル名文字コード // ファイルがアップロードされたものなら処理をする if (is_uploaded_file(@$_FILES["upfile"]["tmp_name"])) { // ファイル名の文字コードを変換する $file_name = $save_dir.$_FILES["upfile"]["name"]; $det_enc = mb_detect_encoding($string, $enc_disp . ", " . $enc_file); if ($det_enc and $det_enc != $enc_file) { $file_name = mb_convert_encoding($file_name, $enc_file, $det_enc); } // テンポラリファイルを保存ディレクトリにコピー copy($_FILES["upfile"]["tmp_name"], $file_name); echo "<p>ファイルアップロード完了"; echo "<p>ファイル名:".$_FILES["upfile"]["name"]; } ?> <form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]?>" method="post"> <input type="file" name="upfile"> <input type="submit" value="アップロードする"> </form> 実際に使うとアップロードされましたと表示されるのですが、フォルダ内にはファイルが特にありません。 どこが問題で何が原因なのかわからない状態です。 くだらない質問ですがどなたかアドバイスいただけると助かります。
>そりゃ何も判定してないで「アップロード完了」をただechoしてるだけじゃん なんか吹いたわ
775 :
772 :2009/08/06(木) 11:37:21 ID:w20GGpoy
>>773 すいません。
ご指摘の通りですね。
改良して問題なく動くようになりました。
ありがとうございます。
776 :
nobodyさん :2009/08/06(木) 11:53:52 ID:oShIeqJ9
>>761 CLIを調べてみましたが、レンタル鯖では設定できないようなので
PHPに直接インクルード指定でできました
ありがとうございました
フォームからPOSTしたパラメータをdBug.phpで見ると、 x, y ってのが入ってるんだけど、何これ?
dBug.phpで見なくても入ってるだろ?
ボタンを押した座標。
>>779 あ、そうなの?知らなかった。
ボタン上の相対座標かな?
783 :
nobodyさん :2009/08/07(金) 23:58:02 ID:Q5392INl
質問させてください。 プログラミング超初心者です。 下のコードの、ユーザー定義関数の作成部分で、 いきなり、$in_key とか $in_list とか 急に "$in_"というようになるのが理解できません。 なぜ、$key が$in_key となるのでしょうか。 <?php $key = "バナナ"; $list[0] = "りんご"; $list[1] = "みかん"; $list[2] = "イチゴ"; $list[3] = "バナナ"; $list[4] = "ぶどう"; $flg = check_proc($key,$list); if ($flg) { print "「".$key."」に該当するデータが見つかりました。\n"; } function check_proc($in_key,$in_list) { $ret = false; foreach($in_list as $key) { if ($key == $in_key) { $ret = true; break; } } return $ret; } ?>
関数の引数とグローバル変数が一致したらまずいだろ。
>>784 即レスありがとうございます。
ただ、学習不足のため、いまいち飲み込めません。
"$in_ "というのは、こういう構文の場合に付けるもんだと
理解しておけば良いのでしょうか。
>>785 半分正解。
"$in_"とか"$tmp_" "$cash_" "$hoge"など、これら関数の名前付けは
機能(処理内容)や個人の趣味。
>>786 ありがとうございます。
なんとなくですが、わかりました。
hoge とかと同じ感じなのですね。
学習を始めたばかりで、ここでつまづいて困ってました。
ありがとうございました。
in_array($key, $list)でいいような
>783 function check_proc($in_key,$in_list) と定義した関数を check_proc($key,$list) と呼び出すと、呼び出した時点での$key, $listの値が、check_proc()の$in_key, $in_listのところに入った処理が実行される。 つまり、$in_keyと$in_listは、keyやlistとはまったく無関係な別の名前でも問題ない。 function check_proc($in_key,$in_list) の$in_key,$in_listと、その後の関数内の$in_key,$in_listをセットで別のものに置換しても問題なく動く。 関数の中で使う変数名は、外の変数名とは一切関係ない。 ちなみに>784は大嘘をこいてるが、別に一致してても問題ない。 人によっては多少読みづらくなる、というだけ。特に初心者には意味が分かりづらくなるだろうな。
参照渡しじゃなくて値渡しだよの一言で済むような
>>786 "$in_key,$in_list" を
"$x,$y" として、実行してみたら、同じ結果が得られました。
構文の意味自体は、まだ飲み込めないのですが、こういうことなのですね。
>>788 まだ基礎の基礎の段階なので、応用はちょっと。。
8月から始めたので、まだチンプンカンプンです。
>>789 >>790 とてもわかり易い解説ありがとうございます。
ちゃんと意味まで理解できました。(多分ですが)
「ユーザー定義関数に戻り値を指定して、呼び出し元の変数の値を変更する」
とテキストに書いてあるのですが、
>>789 さんが言っていることですね。
つまり、$key と$in_key は、全く別で構わない。
だから、"$in_"を$x,$yに変更しても同じ結果を表示したのですね。
$key と$in_keyが似ていたので、かえって混乱してしまったようです。
ありがとうございました。
自分でよく分からないコード書く前にマニュアルを一読することをオススメするよ
スレタイが「超初心者」なんだからかまわんだろ。
超初心者だからマニュアルを読まなくていいという考えは良くないよ
読めには同意、しかし、読んでもなんのことだかじぇんじぇん解らないだろうな、とも思う。
じゃ解るようになるにはどうすればいいの?
関数や変数の概念や書式なんてそれこそ「猛禽類でも分かるPHP」みたいな本が 一番力入れて書いてるところだろ。
そういや、プログラム始めたての頃、 変数名は自分で決めるんだって気がつくのに、ちょっとかかったなぁ・・・
変数名決めるのに和英辞書はかかせませんね! PHP7とかなったら変数名に2バイト文字が使えるようになったり・・・して・・・
相当前から使えるが
$名前 = '山田太郎';
$人物 = array( "名前" => "山田太郎", "趣味" => "女装" );
TBS 春の番組改編以来 最高視聴率!!!! やっぱり事件ほどおいしいものはない@TBS
連想配列って、 $pg = array( 'This is a' => 'pen.', 'I am a' => 'boy.', … みたいに、スペース入ったらいかんの?
そのくらい自分で試せるだろ
>>805 こっちのパソコンで試してみたが、
特にエラーは出なかった。
808 :
php :2009/08/09(日) 01:25:12 ID:???
画像がアップロードされたら、その画像の保存とはまた別に 画像のファイルサイズを圧縮した画像も別ディレクトリに保存する にはどうすれば良いでしょうか? 例えば、 test.jpg ファイルがアップロードされた場合 1) img/test.jpg 2) img2/test_assyuku.jpg という風に自動で保存したいと思っています。
圧縮ってのがどういう事かわからないけど、画像の大きさを変更して保存なら GD使うなりImagick使うなりすればOK PHP4ならGD、PHP5ならImagickかな。どっちにしてもモジュールが入ってないとダメだから レン鯖ならphpinfoで確かめてみるとよろし
810 :
808 :2009/08/09(日) 02:11:10 ID:???
>>809 ありがとうございます。
因みにサクラ鯖上に乗せたいと思っています。
PHP5を使用しておりますのでgoogleでImagickを調べて試してみようと思います。
PHPの閉じタグについての質問なんですが、 余計な空白や改行が出力されないように、ファイルの最後の ?> を書かないようにした方が良いのか、 return; で戻った方が良いのか、一番安全な方法はどちらかあるいは他の方法でありますでしょうか。 バージョンや環境によらず、両方ともいつでも使えるでしょうか?
813 :
nobodyさん :2009/08/09(日) 14:20:42
神 ID:???
( ̄ー ̄)ニヤリッ(わっ)
816 :
nobodyさん :2009/08/10(月) 18:20:12
神 ID:???
phpで2証スクリプトは作れますか?
作ってください
いいよ
どうやって作るの?
>>820 つかったことないんだけど、
どんな仕様のプログラムですか?
全然わかんない。
>>811 ありがとうございます。
因みに自分でアップローダを作ってみたのですが、
どうもクラックされたっぽいです。
(クラックっていうか侵入されたかも)
現在、自分の運営しているサイトのアップローダは何かファイルがアップロードされた場合
ファイルの種類や投稿者の情報とか色々と記憶しているのですが、
昨夜(2:00過ぎ)にそのアップロードされたファイルの一覧ページを見てみたところ
確かに「Explorer.php」というファイルがアップロードされていました。
一番気がかりなのは、もう一度ページをリロードすると消えていました。
DBへのアクセス権ものっとられていたりするのでしょうか?
非常に心配です。
824 :
823 :2009/08/11(火) 01:29:03 ID:???
あと、現在サクラ鯖をレンタルしphpを動かしているのですが、 アップロードされた場合に弾くべきファイルとして、 *.php *.en *.ja を禁止していたのですが perl(触った事が無いですが)とかも アップロードされると外部から実行されてしまいますよね? その場合にperlのアップロードを弾く場合にはどうすればよいでしょか? perlの拡張子は *.pl なので *.pl.ja 等を弾けば良いでしょうか?
>>824 「特定のファイル形式を弾く」よりも、「特定のファイル形式以外拒否」の方がよくねか?
>>825 おおぉー。。。。
そうですね。。。
ご名答です。
因みに一時的にphpスクリプトをアップロードされ、次の瞬間にそのファイルが無くなったということは
侵入された可能性はありますか?
不安ならホストアドレス、あるいはIPを制限すればいいと思います
>>827 串さしてホストを変えながら攻撃されてます。
プロクシー経由を弾けばいいんじゃね?
簡単に串経由かどうかを判定する方法はありますか? あと、Torとか使ってくる奴もいてうざくてしょうがないです。
>>826 アップロードディレクトリでスクリプト実行できないようにしなよ
今のセキュリティホール全開な仕様が異常だと認識したほうがいい
>侵入された可能性はありますか?
スクリプト実行と侵入は違う気がするが
suexecが有効ならサーバ内のファイル構成を見られたりファイル消されたりする可能性はある
とにかくPHP周りを強化するよりサーバ周りの設定を強化したほうがいい
>>831 >アップロードディレクトリでスクリプト実行できないようにしなよ
ディレクトリに設定する権限は755に設定していますが、
これでは駄目なのでしょうか?
因みにファイル構成を見られる分には別にいいのですが
phpスクリプトのコードまで見られた可能性はありますか?
あと、ちょっと原始的かもしれませんが *.php *.PHP *.pl *.PL *.cgi *.CGI を
全てアップロード付加にしました。
取り合えずこれでアップローダからの侵入は防げるかなと思ってますが、
ベテランの方もし穴があるとすればご指摘願います。
> 簡単に串経由かどうかを判定する方法はありますか? ちっとはてめえで調べろよ、横着野郎。
>>832 755じゃ実行されるでしょ
ていうか権限の問題じゃない
一番簡単なのはAddTypeハンドラでtextとして実行するようにする
他にもルール作って特定拡張子へのアクセス防いだりなど
htaccessを用いていろいろ対策は可能
>>835 今日帰って来たら色々とapacheがらみを勉強してみようと思います。
※上でも書いた様に *.php *.pl 等の実行形式のファイル自体はアップロードさせない様に判定ロジックを
組み込みました。
取合えずこれで少しは穴は塞げた(???)と思いましたのでもう寝ます。
ご回答くださった方々ありがとうございました。
PHPのセキュリティの攻撃となんちゃらの実際 とかって本を読めば?
839 :
nobodyさん :2009/08/12(水) 18:14:55 ID:XtZqM+tg
フォームで受け取った$pass(値はhoge)と 同じくフォームで受け取った$idをファイル名に含んだファイルの二行目をfile()で読み込んで $data[1](値はhoge)に代入して if($pass==$data[1]){ print"値は同じです".$pass"==".$data[1]; } else{ print"値は違います".$pass"==".$data[1]; } を実行すると 「値は違います hoge==hoge」 と表示されるのですが「値は同じです」と表示させるにはどうしたらいいですか?
var_dumpしてみそ
841 :
nobodyさん :2009/08/12(水) 18:43:49 ID:XtZqM+tg
Var_dumpしてみたら@dataの値全部の最後尾に半角スペースがあったんだけど ファイルを見てみると hoge hoge hoge で半角スペースなんてないんだけどこれって別のところに原因がある? 代入は$data=file("$filepath");ってやってるんだけど。
> print"値は違います".$pass"==".$data[1]; print"値は違います" . $pass . "==" . $data[1]; ではないのか?
書き込みはドット抜けてたけどソースにはかいてある。
file()で読み込んだら行末に改行コードが入ると思うが。
>844 が正解。trim()かrtrim()する必要がある
PHPサイバーテロの技法 攻撃と防御の実際 、、、だった。
>>847 何言ってんだよ、$passに改行コードをつけてからコンペアすりゃいいだろw
Debian lennyのPHP5でPDO+sqlite3を使いたいのですが どうすればPDOドライバが使えるようになりますか?
compareをコンペアと発音する若い連中
>>849 php.iniのPDOの行がコメントアウトされてるから、
コメントアウト;をはずして、
上書き保存して、
アパッチ再起動かな?
>>851 vimでphp.ini開いて/pdoやってみたけどnot foundって出てきましたorz
じゃ書いとけばいいんじゃね
アパッチの設定ファイルのほうだったかな? httpd.confとか。
コンボボックスより選択された値をhidden項目に設定し、 その状態で自画面(TestAction)のPHP部分に引き渡したす 為に、次のコードを書いたのですが、エラーが発生してしまいます。 いずれも、*.submit();の実行時にエラーが発生してしまうのですが どうすればよいでしょか? function TestSelect(iSelect) { document.getElementById("id_value_set").value = iSelect; //■方法@ document.name_select_page.submit(); //■方法A obj = document.forms["name_select_page"]; obj.action="TestAction.php" obj.submit(); } <form name="name_select_page" action="TestAction.php" method="POST"> <input id="id_value_set" type="hidden" value=""/> <select onchange="TestSelect(this.options[this.selectedIndex].value)"> <option selected >1</option> <option>2</option> <option>3</option> </select> </form>
value無くね?
$a[0] = "password=zdrup91="; $s = explode( "=", $a[0] ); こうやると $a[0]の最後の = も消えちゃうけど、 消さずに分離するにはどうしたらよい?
>>858 そりゃ消えるだろ
デリミタを変えろとしか言いようがない
正規表現で ([^=]+)=(.*) とかで切り出したら
もしpassword=が固定ならそれ消すだけでいいし
>>860 d。でもその正規表現でpreg_split() やったら = だけ切り出されたよ…
正規表現ならシンプルに下記でいいんじゃない /^password=(.+)$/
preg_matchでいいだろ
865 :
858 :2009/08/13(木) 16:52:21 ID:???
みんな、ありがとう。 ↓これでいけた。 $s = preg_split( "/=/", $a[0], 2 );
"France '40" を urlencode() した "France+%2740" を渡して 受け側でGETすると "France+%5C%2740" とかバックスラッシュが 入ってるのはなぜ?
つmagic_quotes_gpc = Off
最近magic_quotesの事を知らない人が多いような気がする。 自分もそうだったけど、ハマるとなかなか難しいよね。
最近はデフォルトでOffじゃないのか? 6ではもう削除されるし
> 最近magic_quotesの事を知らない人が多いような気がする。 ( ´,_ゝ`)プッ
871 :
nobodyさん :2009/08/14(金) 20:37:22 ID:WKlKHJBl
""や''の中で使われている{}ってどういう意味なんでしょうか?
''の中では無いでしょう
$a=1; $aa=2; こんなとき、もし print $aaa; とかってあったら、PHP君は、 「これって、$aなのかなぁ?$aaなのかなあ?$aaaなのかなぁ?」 って、わけわかんなくなって、 「下半身のクスリなので見せられない」 とかってふぁびょって、逃亡してしまうのです。 それを防ぐための{}です。
それじゃ$aaaしか解釈されねーよ
それじゃあ$aや$aaを使いたいときにはどうすんだよ、って話だろ どんだけ脳味噌腐ってるんだ 機械なんだから、最終的には1通りに決定するに決まってんだろ
$aか$bのどちらかにカタカナの「ア」が含まれているかどうか判定するのに if ( mb_ereg( "/ア/", $a . $b ) ) こんな風に書いたら正常に動作しないんだけど、なぜ?
if( mb_ereg( "[ア]", $a . $b ) )
>>877 つmb_strpos($a . $b, 'ア');
>>876 $aaaしか解釈されない話を書いておいて、
>それじゃあ$aや$aaを使いたいときにはどうすんだよ
という話に結びつくわけねーだろアホが
結びつけたいなら例示が誤り
884 :
nobodyさん :2009/08/15(土) 10:47:55 ID:kMv36QGK
date()でタイムゾーンの Z ってどういう風に指定するの? date("y/m/d H:i:sZ32400",time()) とかやったらダメだった…
ん?こっちの環境で実行してみたらちゃんとZの所に32400が表示されるけど?
>>886 ごめん、聞き方が悪かったというか勘違いしていた。
西海岸の鯖を借りていて、time()で取った時間を記録しているんだけど、
それを日本時間で表示したかったの。
夏時間なんかもあるし、他の鯖に引っ越したときのことも考えると
単純に時差を足すのもダメなんで悩んでます。
タイムゾーン設定すればいいと思うが
889 :
nobodyさん :2009/08/15(土) 21:50:12 ID:lF+0GJeW
PHPって単体テストやるんですか? やるとしたらどうやるんでしょうか?
やるかどうかはその人次第 ちなみにPHPコアはロクなテストをしていない気がする ハーネスは普通にPHPUnitがある
891 :
nobodyさん :2009/08/15(土) 22:16:04 ID:lF+0GJeW
その人次第ってことは業務でも強制されないってことですか?
>>887 date()の代わりにgmdate()を使って、9時間分の秒数を足せばいいと思う。
会社による。
php.iniなりdate_default_timezone_set()なりで設定するのがベストでしょ?
time()で取得したデータがあるのに今さら変えてどうなる?w
php.iniて、そろそろxmlにならないの?
なんで?
だいぶ前にPerl本当にちょっとだけやって最近PHP始めたんだけど Perlだとユーザー定義関数内でユーザー定義関数外の変数が使えたような気がするんだけど PHPだとできない?ファイルごとにかいてrequireするしかないのかな?
900 :
nobodyさん :2009/08/16(日) 17:48:09 ID:r7x0SQCa
globalは知ってたんだけどglobalの意味をなんかはき違えてたみたいです。ありがとうございました
>896 現状レベルの設定項目ならXML化など必要ない。 XMLが必須になるような複雑な設定が必要ならば、それは環境依存バグの温床でしかない。 「設定が原因」って問題が、現状ですらこのスレの質問の何割ってレベルに達してる。複雑化させようとか脳味噌涌いてる。 むしろphp.iniっていつになったら削除するの?と言いたい。
コンフィグの類をXMLにしたがるのって、XMLって言ってみたかっただけだよね? と思ってしまう。
ゆとりC#ユーザなんですよ 察してやれ
いわゆる「全角の法則」ってやつですね。
PHP始めたくて環境整えたいんですけど、 うちのPCは容量不足でした。 で、ネカフェで一度試そうと思うんですけど、 環境整えるのに30分もかかりませんか?
使う環境が無ければ始める必要はないのでは。
Apache+PHPが入らないほど容量が逼迫してるPCってどんだけ
すいません。容量減らしてみます。 で、30分はかかりませんかね?
君だとかかりそう
普通の人なら30分以下ってことですね? ありがとうございました。
ネカフェのPCって無法地帯なんですね
ネカフェのPCは再起動をすると、インストールしたものやダウンロードしたものはすべて消去されるからね。
913 :
nobodyさん :2009/08/17(月) 16:03:58 ID:a1cwuPd+
phpで容量不足って
流行りのミニノートを手に入れてよぉしWEBデザインにもチャレンジとかか
915 :
nobodyさん :2009/08/17(月) 16:52:26 ID:qzrG2BQb
いきなり質問して悪いんだが $a = "abcde"; var_dump($a); $a = htmlspecialchars($a,ENT_QUOTERS); var_dump($a); とすると htmlspecialchars() expects parameter 2 to be long, string ってエラーが出るんだが 誰か助けてくださいお願いします
ENT_QUOTES
917 :
nobodyさん :2009/08/17(月) 16:56:27 ID:qzrG2BQb
>916 死にたい
これに懲りたらIDE使おうな
919 :
nobodyさん :2009/08/17(月) 17:40:59 ID:qzrG2BQb
すみません915ですがもう一度質問いいですか クエリの処理で function query($sql){ $this->m_Rows = mysql_query($sql,$this->m_con); if(!$this->m_Rows){ die("error L50 <br><br>{$sql}</b><br>".mysql_error()."".mysql_error()); } return $this-m_Rows; っていう関数があるんですがDBにデータを一個追加しようとすると You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DB VALUES a,'b','c','d')' at line 1 ってエラーが出て上の関数で引っかかってるみたいなんです 超初心者な質問ですみませんが教えてください
クエリのエラーだよ SQL文貼ってみ
921 :
nobodyさん :2009/08/17(月) 17:47:40 ID:qzrG2BQb
>>920 すみませんSQL文って何ですか?
INSERT INFO DB VALUES(a,'b','c','d')
これでいいんでしょうか
>>921 INTOじゃなくてINFOになってるけど?
923 :
nobodyさん :2009/08/17(月) 17:59:09 ID:qzrG2BQb
>923 デバッグでただの入力ミスだったら死にたくなりますね 死にたいです どうもありがとうございました
もそっとモチつけ
925 :
代理レス :2009/08/17(月) 20:11:45 ID:???
windows xp sp3 + php 5.2.10 です。
rarを扱いたいのですが、pecl -v install rar を実行すると
ERROR: The DSP rar.dsp does not exist.
となりインストールできません。
ttp://phpspot.net/php/man/php/ref.rar.html に載っている
php_rar.dll も見つかりません(archive.orgにもありません)。
インストール方法をご教示ください。
PHPでプロセスに対してSIGUSR1って飛ばせますか?
HTMLのソースにPHPを埋め込むとき、 ドキュメントタイプより上に書いても大丈夫なのでしょうか 普通はbodyの中に書くのが一般的でしょうか 初心者ですみませんがよろしくお願いします
どっちでもおkだよ ただし出力には気をつけてな
>>928 そんなことよりHTMLのcharsetとPHPの内部エンコーディングを気にしろ。
> HTMLのソースにPHPを埋め込むとき 拡張子は.htmlなのか?w
特殊文字?について、 a?bという表現は、「ab」もしくは「b」にマッチするというのは合ってますか? 合ってるとしたら、?は前の文字を0回か1回という考え方でいいのでしょうか?
>>933 直前の文字があってもなくてもいいという考え方
メジャーなとこだとURLの正規表現で
https?から始まる書き方するね
935?933
937 :
nobodyさん :2009/08/19(水) 14:19:38 ID:lH3P7pqc
if ($_SERVER["REQUEST_METHOD"] == "POST")という記述を行うと syntax error, unexpected $end in C:\Program Files\Apache Group\Apache2\htdocs\login.php on line 69 というエラーが出るんですが最後の行がL68までしかないんですが? 対処方法教えてください お願いします
閉じ括弧やendifやヒアドキュメントの終了タグなどがないんでは?
?> が無いんだろう
?> は要りません
?>が無いと、syntax error, unexpected $end in・・・のエラーが出たけどな
ちなみに、if文がまともに終わってない時の話だよ if文がちゃんと終わって無くても、?>があればエラーは出ない
943 :
nobodyさん :2009/08/19(水) 14:53:41 ID:lH3P7pqc
閉じ括弧のミスがわからんから全部消して書き直したら出来ました よくわからかったけどありがとうございます
if文がちゃんと終わってなかったら?>があってもエラー出るだろアホか
どっちにしてもカッコ悪い話だなw
warning無視すか。
>>946 if (1) {
?>
Parse error: parse error in test.php on line 4
949 :
nobodyさん :2009/08/19(水) 18:05:26 ID:lH3P7pqc
すみませんまた質問失礼します フォームを作っているんですが ボタンを押すと。。。みたいな動作を記述するとき if(isset($_POST["sumbit"])) echo 〜 って書いてもデータが反映されないんです 上の条件を消すと通るんですが、これはフォームタグの <input type="submit" name="submit" value="login"> にどこかミスがあるんでしょうか??
formのタイプはちゃんとPOSTにしてる?
951 :
nobodyさん :2009/08/19(水) 18:13:25 ID:lH3P7pqc
>>950 <form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
ってしてますけど間違ってますか??
つーかあー if(isset($_POST["sumbit"])) echo 〜 ^^
953 :
nobodyさん :2009/08/19(水) 18:26:01 ID:lH3P7pqc
>>952 ちょっと新しい眼鏡買ってくる
ありがとうございました
>>951 余談だけど「PHP_SELF」はやめときなさい。
「SCRIPT_NAME」を使おうね。
SELFだとGETリクエストを紛れ込ませられるんだっけ?
> このスレッドは、他のスレッドでは書き込めない超低レベル、 > もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
自分に送るなら空白が吉
php,mysql に関する質問です。 引数でテーブル名を受け取って、そのままテーブル(行)内容を出力するのはどうすればいい? function db_print($table) { // db接続部分は略 $sql = "select * from $table"; foreach ($dbh->query($sql) as $row) { // print ($row['name']); //列名を指定すれば出来る } }
mysql_num_fields と mysql_field_name だぁね
963 :
959 :2009/08/20(木) 12:24:03 ID:???
>>960-961 ありがとう。試行錯誤してみる。
ただ、できれば PDO 関数群でやってみたかった。
現状だと print_r でとりあえず出力出来ると分かったけど、
これだと出力形式が固定される気がしたので、質問してみたんだ。
うーん、質問が悪い気がするので取り下げます。
初心者過ぎたな。悪い。
とか書いてたら、
>>962 ありがとう。
拡張子を.htm、.htmlのままでphp動かせる?
Apacheで設定汁
リンク貼るだけかよw
<script type="text/javascript" src="xxx.php"></script> これで池。
PHP入門書の中に条件式としてis_int($channel)とあったんですが、 これってどういう意味なんでしょうか・・・ // チャンネルを変える public function channel($channel) { if (is_int($channel)) { $this->channel = (int)$channel; echo "チャンネルを{$this->channel}に変えました\n"; こういった文です・・・
oopの入門コードだなw
>>969 無駄の多い書き方だね
intをわざわざintにキャストしてるとこも謎だね
PHPは型が曖昧だから引数に違う型いれられても
自分で判定ロジック書かないといけないってことじゃないかな?
OOPで書いといてなぜException使わないのかと問い詰めたいけど
まぁその入門者は破り捨てていいよ
たしかにw intであるのを確認した後でintにキャストってのがなんとも…
アホな本が多すぎるのが、PHPの困ったところだ。
あとは検索上位のサイトが平気で嘘を書くのも。
976 :
969 :2009/08/21(金) 16:08:24 ID:???
入門書に対する書き込み多くてかなり焦っております。 信頼できる本やサイトがあればご教授願いたいところです・・・
関数内の配列をGlobalにしたいんですがどうすればできますか? 変数と同じ方法じゃできませんでした。
まずは試してみたソースを曝すべし
function MONSTERREAD() { while(${no}<9){ ${no}++; $fp = fopen("nightwish/".$_SESSION{'id'}."".${no}.".dat", 'r'); $hensu="unit"; $hensu.="${no}"; while (!feof($fp)) { print $hensu; global ${$hensu}; ${$hensu}['$i'] = fgets($fp); $i++; } } } $_SESSION{'id'}=dada; MONSTERREAD(); $i++; print $unit1[1]; これを実行するとunit1が行数文出力されてunit2unit3unit4…と続いてunit9で終わってunit1[1]の分が出力されません
変数は初期化しろ。 ファイルはクローズしろ。
なんかVBを思い出した
<?php function MONSTERREAD($id) { $return = array(); for($no=1;$no<9;$no++){ $fp = fopen("nightwish/".$id.$no.".dat", 'r'); $hensu = "unit" . $no; $lines = array(); while (!feof($fp)) { $lines[] = rtrim(fgets($fp)); } fclose($fp); $return[$hensu] = $lines; } return $return; } $var = MONSTERREAD("dada"); extract($var); var_dump($unit1); var_dump($unit2);
985 :
984 :2009/08/22(土) 01:20:11 ID:???
その糞コードのどこが間違ってるかは調べるだけ時間の無駄なので調べていない。 ・関数は「値を受け取り、値を返すもの」だ。 関数内で使う変数は、全て引数として渡せ。 外で使う値は、常に返り値として返せ。一度で返しきれないなら関数を分けろ。 ・変数名に数字を持たせるな。 1-8までの数字を変数名に持つ、という事は、そいつは論理的には配列として扱うべき変数だ。 ・変数名を文字列として扱うな。 吐き気を催しつつ書いたが、extractはせず$varのまま使うほうが百万倍正しい。 unit1...unit8となっている配列キーは、1...8の数値になるのが正しい。 ・てめぇにオリジナルのプログラムは無理だ。出直せ。
$hensuの時点で萎える
$lineindex[$disptree] こう言う風に書かれた変数はどういう意味になるのでしょうか?
配列$lineindexのキーが$disptreeのところ
$lineindex[0]こう言う風に書くと配列の最初の内容を表しますが 0という入れ物の名前が$disptreeに変わっただけなのですね。
PHPを使用して指定したWEBページの全てを取得し、保存するにはどうすればよいでしょか?
例:
http://google.co.jp とtextbox項目に入力し、保存ボタンをクリックすると
そのページで使用している画像等も全て
data/googleIndex.html として保存したいです。
また、画像を保存する・しないも切り替えられる様にしたいのですが
どうすればよいでしょか?
ヒントをお願い致します。
PHPで携帯サイトを作っています。 例えばindex.phpが30KBあり、includeするPHPファイルが100KBあるとします。 PHPから吐き出されるHTMLが10KBの場合、携帯で発生するパケットを10KBと考えていいのでしょうか?
>>990 file_get_contents( $url ) でhtmlファイルを取得したのち、
htmlを解析して、インクルードしてる各種ファイルを取得、CSSファイルがあればさらにそれも解析して使ってる画像を取得、
イメージタグから画像のパスを取得して画像ファイルを取得。
インラインのスタイルを使っているかもしれないからそれも何とかして解析して画像へのパスを取得。
flashもあるかもしれない。javascriptの解析から、使ってるファイルとか画像を取得するのが面倒だな。
ちゃんとしたの作ってくれれば喜ぶ人がいると思うよ。頑張ってね。
>>991 実際のパケット量見てみれば分かることじゃない。
>>990 HTMLを全てトレースしてimg srcを見つけたら保存でいいじゃん。
それをON/OFFすりゃいいだろ。
言われたとおりにしたらできましたありがとうございました
998
999
このスレは1000の風になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。