トップページ⇒php
1001コメント296KB

くだすれPHP(超初心者用)6

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/05(日) 22:04:26ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
ttp://www.php.net/
ttp://jp.php.net/

前スレ
くだすれPHP(超初心者用)5
http://pc11.2ch.net/test/read.cgi/php/1227303362/

関連スレ
PHP総合雑談スレ
http://pc11.2ch.net/test/read.cgi/php/1200314111/
PHP初心者勉強会やらんかね!
http://pc11.2ch.net/test/read.cgi/php/1209137730/
0455nobodyさん2009/06/30(火) 20:38:28ID:???
本当に要エスパーな質問過ぎてどうにもならんw
0456nobodyさん2009/06/30(火) 20:39:56ID:???
Postgresのバージョンや設定が変わったとかいうオチじゃあるまいな
0457nobodyさん2009/06/30(火) 20:40:54ID:???
追加情報です。
移行前は、PostgreSQLのバージョンが 7.3.4で
移行後は 8.1.10に変わっていました。

これってマズイでしょうか・・?
0458nobodyさん2009/06/30(火) 20:45:17ID:???
>>456
やはりマズイですか。。。
ちなみに、Webサイトのアクセスログとして利用しているテーブルには
ちゃんとアクセスが溜まっていっているので、とくに問題ないかと思ったのですが・・。
全く接続できなかったりフォーマットが違ったりしたらアクセスログのテーブルにも挿入されないのでは?
0459nobodyさん2009/06/30(火) 20:47:07ID:???
もう1つ追加情報です。
移行前のDBからはCSVとしてエクスポートして、
移行後のDBにアップロードしました。
0460nobodyさん2009/06/30(火) 20:49:48ID:???
phpの設定だとおもうよ
0461nobodyさん2009/06/30(火) 20:53:55ID:???
>>459
なんかお前さん自身が状況整理できてないようだから自分の中で整理つけてから出直して来い。
0462nobodyさん2009/06/30(火) 20:54:48ID:???
まさかエラー非表示にしてるとかないよな
0463nobodyさん2009/06/30(火) 20:57:47ID:???
非表示にしてたとしてもさすがにapacheのログくらいは見てると思いたい
0464nobodyさん2009/06/30(火) 20:59:59ID:???
>>458
「Webサイトのアクセスログとして利用しているテーブル」とか言われても、
そのログ取得のシステムとショッピングカートの関連とか全く開示されて無い俺らに
どんな回答しろって言うんだお前は。
0465nobodyさん2009/06/30(火) 22:15:40ID:???
ま、多分、さっきのレスで出たregister_globalsだと思われりゅ
0466nobodyさん2009/06/30(火) 22:18:09ID:ToOf0Y/8
初心者なのですがどなたか教えてくれまいか

<?php
$number = 100;
echo "<p>変数の値は $number です";
echo '<p>変数名は $number です';

?>

変数の値は や 変数名は ってやつがうまく表示してもらえないのだが
なぜですか??
0467nobodyさん2009/06/30(火) 22:45:05ID:???
文字コードの設定をした記憶がなければそれが原因
0468nobodyさん2009/06/30(火) 22:54:12ID:???
>>462
エラーは表示にしています。
が、注文完了まで全くエラーが出ません
error_logでメールの内容を直前に吐き出すと変数が空になっています。
その変数はというと、
$sql = "select * from tx where id=$id";

$result = pg_query($conn, $sql);

$name = pg_fetch_result($result, 0, "name");
こんな感じで取ってきているので、やはりPostgreSQLからデータを取ってこれていないようです。
0469nobodyさん2009/06/30(火) 23:33:10ID:???
>>466
マルチ乙
ここの住民は他の質問スレもみてるよ
0470nobodyさん2009/07/01(水) 00:06:41ID:z3HhO0nd
初心者というか、PHPを全く理解していない者なので、
ここで質問していいのやら分かりませんが、困っています。

WordPressで複数のブログサイトを制作してるんですが、
本日各サイトを巡回してみると、あるサイトだけ突然見れなくなっていました。
IEでは反応なし、Firefoxでは「自動転送がループしています」と言われ、
突然の出来事にイミフです。

さらに今まで使っていた管理画面のURLを入力すると、
なぜか「wp-admin/install.php」に飛ばされ、インストール画面になります。
ドメインを変えてみても、トップ・管理画面ともに結果は同じでした。

他のブログもサーバ含めて全く同じ構成・設定なんですが、そのサイトだけ見れない状態です。
ちなみにそのサイトは一週間ほど放置していて、昨日は普通に見れてましたので、
何かを触ったわけでもありません。
これは一体何が原因なんでしょうか…
もし何かお分かりの方がいらっしゃいましたら、ご教示ください。
0471nobodyさん2009/07/01(水) 00:13:03ID:???
>>470

・wpがハックされて設定含めて消し飛んだ。
・借りてる鯖のDBが何かしらの原因で吹っ飛んだ。

どっちにしろその情報だけじゃこれくらいしか想像できん。
04724702009/07/01(水) 00:41:19ID:z3HhO0nd
>>471
まじすか…
そんなことがあるんですね…
DBのバックアップはあるので、何とか再インストールやってみます。
レスありがとうございました。
0473nobodyさん2009/07/01(水) 01:01:16ID:???
>>468
じゃDBに該当データがないのでは?
0474nobodyさん2009/07/01(水) 06:03:34ID:RWA+xdxu
>>454です
まだ解決できません・・・
PostgreSQLのバージョンが変わったっていうのはあまり大きな問題ではないのでしょうか?
7.3.4から8.1.10に変わるとプログラムも全部改修しなければいけないですか?
0475nobodyさん2009/07/01(水) 07:14:36ID:???
>>474
もとの作り方次第
バージョンによる違いの可能性もあるけど、
おそらく文字コードなどの設定かデータを正しく移行できていない
0476nobodyさん2009/07/01(水) 07:38:47ID:RWA+xdxu
これが関係しているっぽいです・・・

http://php.benscom.com/manual/ja/function.pg-last-oid.php
> OID フィールドは PostgreSQL 7.2 からはオプションとなり、 PostgreSQL 8.1 ではデフォルトで存在しません。

このpg_last_oidで前回挿入したレコードを取得しているみたいなんですが、
ここで$oidが取れずにSQLの文法エラーが起きていたようです。

しかし解決法がまだわからず。。。調べ中です。
わかる方は助けてください
0477nobodyさん2009/07/01(水) 08:10:08ID:RWA+xdxu
わかったぞ!
前バージョンでは
default_with_oidsというPostgresの変数が無くて(デフォルトでOn)
現バージョンでは、
default_with_oids = Off
になっていた。

しかしレンサバを使っているので、Postgresql.confは編集できない模様・・・
PHPからOnにできないですかね?
0478nobodyさん2009/07/01(水) 08:23:50ID:???
WITH oids を指定してテーブルを作り直したら?
どっちにしろoidの使用は推奨されていないという事だろうからテーブルの構成自体をやり直したほうがいいと思うけど・・・
0479nobodyさん2009/07/01(水) 08:39:05ID:RWA+xdxu
WITH oid でつくりなおしたんだけど、変わらない・・・
$oid = pg_last_oid($result);
ここで$oidに値が入ってくれないみたいです
0480nobodyさん2009/07/01(水) 08:39:52ID:RWA+xdxu
WITH oidsの間違いです
0481nobodyさん2009/07/01(水) 10:47:39ID:RWA+xdxu
WITH oidsにてCREATEして解決いたしました。
助言をくれた皆様ありがとうございます。
0482nobodyさん2009/07/01(水) 10:50:59ID:???
一番正しい助言は oids を使わないことだと思った
0483nobodyさん2009/07/01(水) 15:02:23ID:???
大文字の4や9を小文字に変換して演算させたいのですが、変換する方法が分かりません。
教えて下さい
0484nobodyさん2009/07/01(水) 15:04:27ID:???
>>483
mb_convert_kana
0485nobodyさん2009/07/01(水) 15:04:44ID:???
翻訳いたします

全角数字を半角に変換する方法を教えて下さい
0486nobodyさん2009/07/01(水) 15:19:18ID:???
>>485
mb_convert_kana
04874832009/07/01(水) 15:46:50ID:???
>>484-486
ありがとー!
出来ました!
0488nobodyさん2009/07/01(水) 20:12:35ID:qb2GZerK
phpのstring型って最大1024byteまでの文字列しか格納できないっぽいんですが、
最大許容量の変更ってできるのでしょうか?

今現在、1024byte以上入るであろうDBからの値をどのように取り出そうか思案中です。
0489nobodyさん2009/07/01(水) 21:29:11ID:???
それはllSayの制限で、phpの制限ではありません。
0490nobodyさん2009/07/01(水) 21:52:39ID:???
>>489
llSayが良くわからないですけど、要するに1024byte制約はしょうがないということになるのでしょうか?
0491nobodyさん2009/07/01(水) 22:18:49ID:vUu+Pn00
なんでそうなるんだw
0492nobodyさん2009/07/01(水) 22:22:45ID:???
>>488
>phpのstring型って最大1024byteまでの文字列しか格納できない
ソースぷりーず。
0493nobodyさん2009/07/01(水) 23:06:52ID:???
>488
ガタガタ抜かす前に試せばいいじゃん。
何十万文字程度なら余裕で入るぜ。
04944882009/07/02(木) 08:53:38ID:???
>>491
>>492
>>493
確かに、サンプルソースとまでいかないまでも、ソースイメージを示せなかったのは申し訳ないです。
下記のソースイメージでも半角英数字1000文字程度で文字列をくっつけられなくなります。

$sql = ' select * from hogehoge '
$sql .= ' where foo.bar = 1 '
for () {
// ここで$sqlに文字列appendしまくり
}
・・・
というだけの単純にsql文をくっつけまくりソースです。

このことから、string型は1000文字=1024byte制限があるのではないかと勝手に推測してました。

でも、何十万文字も入るのであれば、別の原因が考えられますね。
ちょっとappendしない場合はどうなるか適当に試してみます。
04954882009/07/02(木) 08:54:59ID:???
↑
イメージはわかると思うのでどうでも良いとは思いますが、
$sql = ' select * from hogehoge '
$sql = ' where hohoge.bar = 1 '
の間違いでした。
0496nobodyさん2009/07/02(木) 09:02:17ID:???
わけわからん             アーメン
0497nobodyさん2009/07/02(木) 09:04:31ID:???
>文字列をくっつけられなくなります
どんな症状を見てこう判断したか、それがためのソースだろうになぁ・・・
0498nobodyさん2009/07/02(木) 09:21:03ID:???
以下エスパー的回答

できあがった$sqlの内容がおかしいに10000ペソ。
データベースに投げる前にechoで確認すべし。半角スペースがないとかクォーテーションをエスケープしてないとか。
04994882009/07/02(木) 09:21:26ID:???
みなさん、申し訳ございません。

すごい単純ミスでした。

環境だけの問題でした。

原因は eclipse + xdebug環境において、eclipse上で参照できる変数の最大文字数が1024byte制限があるだけのようです。
sql文(1024byte以上の)を生成した場合、eclipseの変数の値参照では途中で文字が切れているのですが、正しく実行できました。

デバッガが整った環境に慣れすぎてしまった私が問題でした。
デバッガはあくまでもデバッガだと改めて考え直さないと駄目ですね。
0500nobodyさん2009/07/02(木) 10:13:39ID:???
そりゃ親切に省略してくれてるだけだろ
0501nobodyさん2009/07/02(木) 10:15:19ID:???
全部表示されたらえらいことになる場合もあるしなw
0502nobodyさん2009/07/03(金) 11:33:57ID:???
test_image.jpgみたいなファイルネームを。
test_image_**.jpgに読み変えてリクエストしたりしたいんですけど、
どうすればいいですか?
※**はランダムな数値が入ります。
0503nobodyさん2009/07/03(金) 11:35:42ID:???
ttp://www.php.net/manual/ja/function.mt-rand.php
0504nobodyさん2009/07/03(金) 11:35:54ID:???
http://www.php.net/manual/ja/function.pathinfo.php
こういうの使うとファイル名と拡張子に分離できる
0505nobodyさん2009/07/03(金) 11:37:17ID:???
>>504
有難うございます。読んできます。
0506nobodyさん2009/07/03(金) 11:50:05ID:???
>>505
$path_parts['filename']が使いたいけど4.4.8なんでダメポ。。。

拡張子は取れるので最悪、test_image.jpg_**.jpgこんな感じで読むしかないのか・・・
0507nobodyさん2009/07/03(金) 11:50:59ID:???
何のシステムを作ろうとしてんの?
0508nobodyさん2009/07/03(金) 12:02:18ID:???
>>507
普通に1つのアイテムに複数画像がある場合、
ランダム上限値とファイルネームの番号が連動していれば、
管理もsqlリクエストも一発で済むかなと思って。
0はFALSE。
0509nobodyさん2009/07/03(金) 12:20:48ID:6dZpOUUM
http:://hogehoge:[email protected]/hello.php?cmd=add&user=hoge@pass=hoge
のようなことをwgetみたいにphpでやらせたいのですがcurl以外でもっとお手軽な関数ってないですか?
0510nobodyさん2009/07/03(金) 12:45:56ID:???
file()
0511nobodyさん2009/07/03(金) 12:49:03ID:???
basename()とpathinfo()の合わせ技で楽に出来そうなので
そうしてみます。サンクスコ。
05125022009/07/03(金) 16:43:01ID:???
$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みたいにするにはどうすればいいですか?
0513nobodyさん2009/07/03(金) 16:49:17ID:???
自己レス
printf()
0514nobodyさん2009/07/03(金) 16:50:01ID:???
sprintfだろ
0515nobodyさん2009/07/03(金) 17:16:50ID:???
> $chenge_image = '_' . mt_rand(1, $test_chenge_image);
は、こう
$chenge_image = '_' . sprintf($chenge_image . "%0" . 2 . "d", mt_rand(1,$test_chenge_image));
書き換えた。

お前の日記かと怒られそうなので終了。
0516nobodyさん2009/07/03(金) 17:19:43ID:???
いわきりさんのphp_nmz_sample.tar.gz
というものを見てみたいのですがリンクが切れています。
どなたかお持ちではありませんか?

もうnamazuというのは使われていないのでしょうか?
0517nobodyさん2009/07/04(土) 15:06:32ID: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>
になってしまう
0518nobodyさん2009/07/04(土) 15:07:50ID:???
×<a><b>hoge<c>hoge</c>hoge</b></a>
○<a><b>hoge<c>fuga</c>hoge</b></a>
0519nobodyさん2009/07/04(土) 19:24:14ID:???
>>517
SimpleXMLの範囲では出来ないと思う。
タグcを一旦変換するか、後者の両端のタグをストリップするんじゃダメ?
0520nobodyさん2009/07/04(土) 21:30:50ID:bVCHq/G1
>>519
> 後者の両端のタグをストリップするんじゃダメ?
これしかないかなと思いつつも、
もっと直接的な方法がないかなと
タグを変換ってどうやるんでしょうか?
タグbの名前を変換して
<foo>hoge<c>fuga</c>hoge</foo>とするか
hoge→<c>fuga</c>→hoge
と展開したりってのができないかなと
0521nobodyさん2009/07/04(土) 21:39:46ID:???
>>520
例えば<c>→{c}とか、他に出てこない文字列に置き換えてからパースするとか。
あとで{c}→<c>にもどせばおっけ、っていう意味。

どんな場面でどういう事がやりたいのかにもよるけど。
なんか、htmlのパースしたいようにも見えるな。
0522nobodyさん2009/07/05(日) 07:52:14ID:UWotW+RP
スイマセン、風俗店のサイトで
その店の風俗嬢が写メを載せて近況報告をしているようなものや
リアルタイムで店の近況を口語文で書いていて、風俗嬢の画像などが載っている
ものは
すべてブログを埋め込んでいると考えて良いのでしょうか?
0523nobodyさん2009/07/05(日) 08:05:30ID:???
>>521
xmlをパースしてhtmlを吐く場合に
そのxmlのタグ内をhtml風にマークアップしたい場合
どうやって出力すればいいのかなと
0524nobodyさん2009/07/05(日) 09:02:21ID:???
>>522
考え方はそうだが、ブログとか掲示板とか決まったスクリプトではない。
0525nobodyさん2009/07/05(日) 11:37:56ID: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." ;"

?>
0526nobodyさん2009/07/05(日) 11:39:24ID:LafHq5/o
自己解決しました、スレ汚しすいません。
0527nobodyさん2009/07/05(日) 12:49:02ID:???
<?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))." ;"
0528nobodyさん2009/07/05(日) 17:08:52ID:???
?>
0529nobodyさん2009/07/05(日) 19:01:31ID:???
閉じタグはいらんよ
0530nobodyさん2009/07/05(日) 19:05:46ID:???
?> (キリッ
0531nobodyさん2009/07/05(日) 20:12:16ID:???
?><!-- P.S. I love you.... -->
0532nobodyさん2009/07/05(日) 21:00:29ID:???
てか、行がおわってない。
0533nobodyさん2009/07/05(日) 21:04:58ID:???
最後の行は ; がなくてもいいよ
0534nobodyさん2009/07/05(日) 21:09:46ID:???
その場合閉じタグが必要。
0535nobodyさん2009/07/05(日) 21:11:44ID:???
>>528 へ戻って繰り返し。
0536nobodyさん2009/07/05(日) 22:19:50ID:???
." ;" これがほんとに意図した出力かと
0537nobodyさん2009/07/05(日) 23:16:31ID:???
後だしじゃんけん?
0538nobodyさん2009/07/06(月) 12:47:06ID:wMd3vz+Y
PHPのよい練習問題が乗ってるサイトってないですか?
0539nobodyさん2009/07/06(月) 12:48:54ID:???
2ch
0540nobodyさん2009/07/06(月) 13:57:22ID:Zv6if7ao
PHPでできることの限界が知りたいです
何ができて
何ができないのか教えてください
0541nobodyさん2009/07/06(月) 13:58:39ID:???
つマニュアル
0542nobodyさん2009/07/06(月) 14:07:26ID:fHQNm0aa
あああっ!mySQL 、日本語キーボードで使っていると `` が入力しにくいんだよこんちくしょうめ
0543nobodyさん2009/07/06(月) 14:12:39ID:???
右手小指と中指で楽じゃん
0544nobodyさん2009/07/06(月) 16:30:25ID:???
自分一人しかアクセスしない管理画面(パスワードとホストで制限)
のフォームとかでもhtmlspesialcharsとかかますべき?
0545nobodyさん2009/07/06(月) 16:41:11ID:???
>>544
かますべきだと思う(´ω`)
忘れた頃に仕様変更したら変なエラーに悩まされるとかいうことが
あるし。
0546nobodyさん2009/07/06(月) 17:23:03ID:???
自分ひとりしかアクセスしなくても、URL見つけられたら・・・という
万が一もあるし
0547nobodyさん2009/07/06(月) 17:31:46ID:???
普通認証かけるだろ
0548nobodyさん2009/07/06(月) 17:44:20ID:???
いやそもそも認証画面での話だろw
0549nobodyさん2009/07/06(月) 17:51:51ID:???
>>548
それは違うと思う
0550nobodyさん2009/07/06(月) 17:55:18ID:???
つか管理画面のフォームで何を表示するのかにもよるんじゃ?
質問者はアクセスするページによってXSSの危険性が違うと認識してる?
パスワードとホストで制限って書いてるからふとそう思った
05515442009/07/06(月) 18:18:24ID:???
データベースの統計情報みたいなやつとか
昨日何人が登録したとか、1ヶ月以上ログインしていないユーザーを
削除するとか
管理人しか使わない訳だし、例えばワード検索で自演XSSやSQLインジェクションができてもいいのかなと
やるには自分で不正コード打ち込まないといけないじゃない?
0552nobodyさん2009/07/06(月) 18:22:45ID:???
打ち込まなきゃいいじゃない?
05535442009/07/06(月) 18:23:36ID:???
だからいらないんじゃないのって
0554nobodyさん2009/07/06(月) 18:37:20ID:???
じゃそれでいいんじゃないのって
■ このスレッドは過去ログ倉庫に格納されています