くだすれPHP(超初心者用)3
at PHP
[前50を表示]
350:nobodyさん
08/02/05 19:30:27
あぁ、ごめん。逆だった…
bom有りで書いてたぜ。
具体的にどんなエラーが起きるの?
351:nobodyさん
08/02/05 20:27:52
基本的にEUCでbomは知らんかったんで秀丸でUTF-8で保存してみたけど?出ないな。
秀丸だと保存オプションもUTF-8Nとかもないしbom入らないのかな。
メモ帳でUTF-8で保存して実行したら ・ソtest!<br> みたいのは出た。
352:nobodyさん
08/02/05 20:48:26
秀丸でもBOMオプションあるな。
あんまり古いのだとないかもしれんけど。
これはphpが読み込んだときに自動的に削るべきもんかもね。
353:nobodyさん
08/02/05 23:51:41
秀丸、bom有り、bom無し で試してみた。
web 上では見た目上、変化無かったけど、
CLI で実行させたら、bom付きでは頭に 0x81, 0x45, 0xbf の3バイトがくっついてきた。
354:nobodyさん
08/02/06 00:11:29
>>353
そのくっついてくるのがアレ。
BOMつきUTF-8でファイル冒頭に
<?php
header("Content-Type: text/html; charset=UTF-8"); // 例。
なんてのを書くと「ヘッダ送ったあとでヘッダ変えたいとか、無理」と
PHPさんが優しく語りかけてくれる。
355:nobodyさん
08/02/06 00:16:53
なるほど。解ったよ。アンガト
356:354
08/02/06 00:24:06
書いてから気づいた。
> 頭に 0x81, 0x45, 0xbf の3バイト
0xef 0xbb 0xbf の3バイト(>>344参照)、じゃないのね。
357:nobodyさん
08/02/07 16:59:49 d+qc2qYD
チェックボックスでチェックされていたらチェックさせたいです
POSTのデータと一致してるかどうかでforeach書いてるんですけど
なんとなく無駄な感じがしてます…
いい書き方ってありますか?
foreach ( $hoge as $k => $v ) {
$checked = "";
if (isset($_POST['hoge'])) {
foreach ( $_POST['hoge'] as $key ) {
if ($key == $v) {
$checked = " checked=\"checked\"";
}
}
}
echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n";
}
358:nobodyさん
08/02/07 17:42:05
>>357
こーかな?判定は一行にもできるけど逆に見づらいし。
foreach ( $hoge as $k => $v ) {
$checked = "";
if( is_array($_POST['hoge']) && array_search($v, $_POST['hoge']) != FALSE ){
$checked = " checked=\"checked\"";
}
echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n";
}
359:nobodyさん
08/02/07 17:44:38
でも$v素通りはあんまよくないな。
360:357
08/02/08 13:26:21
>>358
array_searchなんてあったんですね!
ありがとうございます
>>359
素通りとは…?
361:nobodyさん
08/02/08 13:37:59
$v を validate しろって事だよ。
359 はクロスサイトスクリプティングの可能性を示唆してるんだろ。
362:357
08/02/08 17:52:07
なるほど。
これは例なのでいれてないだけです。
$vはこっちで作成してる配列なのにな〜と思って。
ちなみに358は
!= FALSE ではなく !== FALSE ですね
363:nobodyさん
08/02/08 18:47:04
それが確実。
364:nobodyさん
08/02/09 01:31:23
つーか何で毎回is_arrayでチェックするんだよ
365:nobodyさん
08/02/10 18:46:39
フォームで入力した内容に " が含まれる場合、
それをそのまま出力したら\"となるのですが、
どうすれば\をつけずに表示や保存できるんですか?
366:nobodyさん
08/02/10 19:57:48
magic_quote_gpcをoffにする
367:nobodyさん
08/02/10 20:08:37
エー
それしか方法ないのですか?
368:nobodyさん
08/02/10 20:10:21
あるよ
369:nobodyさん
08/02/10 20:19:51
お願いします
370:nobodyさん
08/02/10 20:42:46
>>369
URLリンク(jp.php.net)
371:nobodyさん
08/02/10 20:43:34
>>369
URLリンク(jp.php.net)
372:nobodyさん
08/02/10 21:12:31
どうもです!解決しました。
stripcslashes(htmlspecialchars())っていう風につかったんだけどこれでいいのかな
373:nobodyさん
08/02/10 21:21:05
>>372
順序は逆の方が良くないか?
374:nobodyさん
08/02/10 22:06:12
ああ、phpには
"はフォームを通すと\\\"として送られてくるんですね
だから先に勝手につけられたスラッシュを消して
htmlspecialchars(stripcslashes($a, ENT_QUOTES)) とやれば"も'もHTML上できちんと表示できるようになりますね
勉強になりました
375:nobodyさん
08/02/10 22:35:31 rhutwfEM
PHPないにプリントタグを使いたいんですが、
<BODY>
<?php
print <table>
print <tr>
<td>print"値"</td>
<td>print"値2"</td>
<td>print"演算"</td>
<td>print"答"</td>
print </tr>
print </table>
?>
</BODY>
</HTML>
だと、エラーがでます。だれかご教授ください・・・
376:nobodyさん
08/02/10 22:37:08
>>375
参考ページをよく見て
違いを調べろw
377:nobodyさん
08/02/10 22:39:38
ワロタw
378:nobodyさん
08/02/10 22:40:35 rhutwfEM
>>376
すいません、テーブルタグでした。
申し訳ありませんが、参考ページを教えてくれますか?
379:nobodyさん
08/02/10 22:43:46
>>378
どこでもいい。さがせw
380:nobodyさん
08/02/10 22:48:34 rhutwfEM
>>378
わかりました。もう一日考えます。。。
381:nobodyさん
08/02/10 22:48:39
基礎ってレベルじゃねえぞww
382:nobodyさん
08/02/10 23:21:00
糞ってレベルだ
383:nobodyさん
08/02/10 23:54:56
ひょっとしてこういう事がしたいのか?
だとしたら文法根本的に間違えてるだろうに。
<BODY>
<table>
<tr>
<td><?php print"値";?></td>
<td><?php print"値2";?></td>
<td><?php print"演算";?></td>
<td><?php print"答";?></td>
</tr>
</table>
</BODY>
</HTML>
384:nobodyさん
08/02/11 00:20:01
なんというか…wwwwwww
解った後でもう一度このスレに来て自分の書き込み見てみろw
385:nobodyさん
08/02/11 03:49:39
携帯とPCの振り分けをしたく思い
URLリンク(blogn.hustle-user.com)を参考にして、
index.htmlをindex.phpにリネームして、先頭に
<?php
$title="○○";
$page_e='URLリンク(www.)<)○○/m/index.html';
$page_i='URLリンク(www.)○○/m/index.html';
$i=$_SERVER['HTTP_USER_AGENT'];
require_once('agent.txt');
?>
としました。そして携帯からアクセスしたところ無事振り分けることが出来ました。
しかしPCからみたら外部のcssを読み込んでいないようでページレイアウトが崩れてしまいました。
相対パスなのがいけないと思って、
<link href="http://○○/css/global.css" rel="stylesheet" type="text/css" />
と、絶対パスに書き換えましたが改善しませんでした。
そしてさらにわからないことに、ブラウザ(Sleipnir)で何回も読み込んでいると
5回に一階ぐらいきちんと読み込んで表示されるのです。
どういうことなのでしょうか。もしかしてphpの問題じゃなくhtmlの問題でしたら板違い申し訳ありません。
386:nobodyさん
08/02/11 04:14:40
問題の切り分けオヌヌメ
387:nobodyさん
08/02/11 05:29:22
そのコードでどうやったら振り分けられる方が興味あるなw
388:385
08/02/11 05:49:50
>>386
問題の切り分けですか。
まずCSSのパスは間違ってませんでした。
htmlや画像のリンクは相対パスでも問題なく通ってるんで
もしかしたらパスの問題ではないんでしょうか?
となると。。文字コードとかでしょうか・・?
ちなみにphpもcssもS-Jis、改行コードはCR+LFでした。
>>387
ふ、振り分けられないですか?
サイトを参考にしつつやってみたのですが・・
389:nobodyさん
08/02/11 10:01:19
俺は>>387では無いが。
page_e, page_j, page_i 全部URLが一緒な件
390:nobodyさん
08/02/11 11:04:25
>>389
いや、それは別にそういう作り方もあるから別にいいけど
そもそも参考したっていうサイトの内容が突っ込みどころが多すぎて…
391:nobodyさん
08/02/11 11:10:17
URLリンク(blogn.hustle-user.com)
の処理に、腹抱えてワロタ
392:nobodyさん
08/02/11 11:13:06
>>388
そこのサイトのはあんま参考にならんから別の探せw
あと火狐+火虫いれてCSSが適用されてるか確認しろ
393:385
08/02/11 17:22:49
返事が遅くなってしまい申し訳ありません。
>>389
あ、それはケータイのキャリア別に振りわけていないからです。。。
基本はみんなパソコンのメインサイトのindex.phpにアクセスしてもらって
ケータイの人は別のサイトに飛んでもらうってことで。。
なんか参考にしたサイトがまずかったようで。。。
もしおすすめなどあれば教えて頂けると嬉しいです。
>>392
firefoxはいれてないんで、今からいれて確認してみます。
ところで、火虫とは・・・?
394:nobodyさん
08/02/11 17:30:47
> ところで、火虫とは・・・?
水虫のライバル。
395:nobodyさん
08/02/11 17:57:57
火虫=FireBug
396:385
08/02/11 17:59:06
firefoxでみたところ問題なく見れました!
となると、IE側の問題になるのでしょうか?
そして火虫はわかりませんでした><
397:385
08/02/11 18:13:19
firefoxのアドオンでしたか。ありがとうございました。
398:nobodyさん
08/02/11 20:29:28
fopen追記モード('a')で開いたファイルに追記したいとき
どうすれば改行してつなげていけますか?
たとえば
$fh = fopen($file, 'a');
fwrite($fh, "test\n");
としても改行してつないでくれません
399:nobodyさん
08/02/11 20:42:17
改行してつなげるんだから、
fwrite($fh, "\n");
fwrite($fh, "test");
だろw
400:nobodyさん
08/02/11 22:35:00
>>399
それでもできてませんよ
ためしてください
<?
$file = "test.txt";
$fh = fopen($file, 'a');
fwrite($fh, "\n");
fwrite($fh, "test");
fclose($fh);
?>
いやあ納得いきませんね
いちおうtest\nとやって書き込んで、ファイルを見ると最後は改行されている。
なのに書き込むときはなぜ改行されたところから始まらないのですか?
401:nobodyさん
08/02/11 23:06:13
\r\nではどうだい?
もしくは 'ab'
402:nobodyさん
08/02/11 23:07:39
あごめんabは勘違い。
403:nobodyさん
08/02/11 23:17:32
だめですね
404:nobodyさん
08/02/11 23:24:11
あれ、いや
できてました
どうもでした
405:385
08/02/11 23:42:52
解決しました!!
CSSの文字コードをきちんとしていなかったのが問題だったようです。
CSSの先頭に
@charset "shift_jis";
といれると解決しました。
phpじゃなかったですね。申し訳ないです。
406:nobodyさん
08/02/12 03:40:48
>>385,398
,......,___ ___ お前初めてかここは?
{ r-}"''; (,- ,_'',; 力抜けよ
__ノYv"-ァ'=;} ,_、 Y' リ''ー
ヽー-ハ '、 / キ}、 {"ー {⌒
ト ハ } ,. -ー─-- 、___ / ハノ`{ {
! ! !__! ,-、_ ,,( ,  ̄`ー、 /"''ー;ー'"
|___|! !ー-ニー、;、;'""ノ';{ iー ヽ=ニ=),..- '"
K \ヽ !`ーニ'-、{ (e 人 |' ̄ ̄/`ー! | / /⌒
\ヽ !、ヽ, "")ー-'"| ! | | /! |___{,、 / /
\"'ヽ'ー-" _! || } ー─| | / ヽ/ /
ニ=ー- `!!!' ''''ー'"{ | | / /`ー|\/
ーーーー' _ | ./ ヽ__ / | !
407:nobodyさん
08/02/18 19:07:50
すみません下らない質問なのですが
<?php
$mysql=mysql_connect("localhost","user","password");
if(mysql_select_db("dbname", $mysql)){
print "OK";
}else{
print "NG";
}
?>
このようなソースを書いて(user passはサーバーのもの)
PHPとMYSQLがちゃんと動いているのか確認をしようとしたのですが
画面が真っ白になってエラーも帰ってきません。
PHP php-5.1.6-1.6
mysql mysql-5.0.27-1.fc5
FedoraCore5で
php-mbstring php-mysql php-gd php-devel mysql-serverなども全部入れています。
解決方法ご指南ください
408:nobodyさん
08/02/18 21:17:53
>>407
display_errors = on
409:nobodyさん
08/02/18 22:25:40
それとコンソールを試してみて
パスワードが通っていない感じのエラーが出ていました
ただ、パスワードは合っていて
コンソールで mysql -u user -pでログインが出来ている状態です
/etc/hosts にもデータベース名は記述してあり(localhost)
なんで通らないのかわからなくなっています
今まで使っていたときは大丈夫で
突然この状態になってしまいました。
どなたかお願いします…
410:nobodyさん
08/02/19 02:56:13
それだけの情報で聞いたって誰も分からない
411:nobodyさん
08/02/19 10:06:45
すみません、質問です。
PHPには、.NET Framework の ADO.NET のように、自作した csv ファイルに SQL 文で
データを抽出することは可能なのでしょうか。
以下のサイトのような感じで動かす場合です。
URLリンク(park5.wakwak.com)
一般的なテキストファイルを開いたり、書き込んだりする方法とは別という意味です。
こういった方法以外でという意味です。
$fh = fopen("csv.txt", "r");
$line = fgets($fh, 1024);
// ここで$lineの条件を調べる。
fclose($fh);
ヒントとなるキーワードでもいいので、お願いします。
412:nobodyさん
08/02/19 10:26:38
PEAR::Structures_DataGrid_DataSource_CSV ・・か?
413:nobodyさん
08/02/19 12:43:40
>>410
よく情報が足りないといわれるのですが
どこら辺が足りないですか
>>407でバージョンやOSも書いてますが
エラーはサーバーから離れていたので書けなかったですが
後学のためにもお願いします
414:nobodyさん
08/02/19 13:02:22
>>413
そういうところ
415:nobodyさん
08/02/19 14:47:53
>>412
ありがとうございました。
416:nobodyさん
08/02/19 19:38:04
変テコなPHP Shell見つけたんだがどう思う?
URLリンク(kissho.xii.jp)
417:nobodyさん
08/02/19 20:44:23
>>416
よくわからんが、こんなコードがある時点でろくなもんじゃない
if(file_exists("B:\\")){
echo "<center><a href='./$this_file?dir=B:\\'>B:\\</a></center>";
} else {}
if(file_exists("C:\\")){
echo "<center><a href='./$this_file?dir=C:\\'>C:\\</a></center>";
} else {}
if (file_exists("D:\\")){
echo "<center><a href='./$this_file?dir=D:\\'>D:\\</a></center>";
} else {}
if (file_exists("E:\\")){
echo "<center><a href='./$this_file?dir=E:\\'>E:\\</a></center>";
} else {}
if (file_exists("F:\\")){
echo "<center><a href='./$this_file?dir=F:\\'>F:\\</a></center>";
} else {}
if (file_exists("G:\\")){
echo "<center><a href='./$this_file?dir=G:\\'>G:\\</a></center>";
} else {}
if (file_exists("H:\\")){
echo "<center><a href='./$this_file?dir=H:\\'>H:\\</a></center>";
} else {}
418:nobodyさん
08/02/21 03:11:11
ShiftJISのCSV形式を読んで、EUC文字コードに変換したいんですが、
Windowsの拡張漢字(IBM拡張やNEC拡張)や、外字領域も
きっちり対応してくれるような、関数とかないんでしょうか?
419:nobodyさん
08/02/21 03:39:48
そんなマニアックな文字まで対応してる関数はない
420:nobodyさん
08/02/21 04:46:45 uBvv/k1H
すみません、質問です。。。
XAMPPをインストール後に以下の手順でエラーがでてしまうのですが、何が原因なのでしょうか???
1. Terminal shellに行って、システム管理者ルートでログインします。
sudo su
2. XAMPPをスタートするには、このコマンドをコールしてください:
/Applications/xampp/xamppfiles/mampp start
ここで、このような感じのエラーメッセージがでていまいます。
(No such file or directory, errno = 2)
XAMPP: Error 133! Couln't start ProFTPD!
ちなみにこの段階でXAMPP Control Panelを起動しようとすると「このシステムとは互換性がないためアプリケーションを起動できません」とメッセージが出てしまいます。
OSはMacOSX.2.8で、インストールしたのがXAMPP Mac OS X 0.7.2です。PHP使用以前の問題で恐縮ですがとても困っていますのでどなたかよろしくおねがいします。
421:nobodyさん
08/02/21 08:00:49
This version is for Mac OS X 10.4 (Intel&PPC) and higher.
422:420
08/02/21 15:40:03 uBvv/k1H
ガーン。。。ということはXAMPPは使えないのですネ。
ありがとうございました。。。
423:nobodyさん
08/02/21 20:36:09
xamppなんて使うなや
424:nobodyさん
08/02/21 21:13:13
それをいうのなら、Macなんて使うなよ。が正しい。
425:nobodyさん
08/02/21 22:15:59 FbPK8kbc
現在携帯メール(添付画像付き)をメールサーバーから転送させて、PHPで処理してDBに保存するということをやろうとしてるのですが、
なぜか本文とか件名が化けてしまいます。
文字化け
「あ」→「$B$"(B」
このサイトを参考にしてます。
URLリンク(www.phppro.jp)
改行コードが「LFのみ」にしてるからかな?と思うのですが、わかりません。
ご教授お願いします。
426:nobodyさん
08/02/21 22:17:02
Winよりはマシだけどな(PHPインストール環境として)
427:nobodyさん
08/02/21 22:19:36
>>425
文字コードを変換しなされ
428:nobodyさん
08/02/21 22:29:31 FbPK8kbc
>>427
sjis,EUC,utf-8に変更したんですが、何も変わりません。。。
429:nobodyさん
08/02/21 22:37:31
意味がわからん
430:nobodyさん
08/02/21 22:40:10
つ mb_decode_mimeheader, mb_internal_encoding
431:nobodyさん
08/02/21 22:56:44 FbPK8kbc
すみません。意味不明で。。。
とりあえず33行目から変更してみたんですが、今度はなにも表示されなくなってしまいました。
33 switch(strtolower($structure->ctype_primary)){
34 case "text": // シングルパート(テキストのみ)
35 $diary_body = $structure->body;
36 $diary_body = mb_decode_mimeheader( $diary_body , 'ISO-2022-JP');
あと言い忘れたんですけど、スクリプトはSJIS、DBもSJISでやってます。
432:nobodyさん
08/02/21 23:00:32
本文ならmimeheaderじゃねーし。
header見て文字コードが何か確かめてSJISに変換しなされ
433:nobodyさん
08/02/21 23:10:41
あとスクリプトSJISで書くのは今すぐやめろ
434:nobodyさん
08/02/21 23:14:40 FbPK8kbc
SJISで書いちゃ駄目なんですか!?
すみません!!
あと>>432さんの書き込みの意味がわかないんですが、具体的にはどうすればいいんでしょうか?
435:nobodyさん
08/02/21 23:57:05 FbPK8kbc
自己解決できました。
ご迷惑欠けて申し訳ありませんでした。
436:nobodyさん
08/02/26 00:15:23
>>431
可能です。
以上。
はい、次。
437:nobodyさん
08/02/26 22:29:16 8JcMjBPY
for ($i=0, $n=100000000; $i<$n; $i++ ) {
$str = $i;
}
こうすると$strには0〜99999999が入りますが、a〜zzzzzzzzまでを$strに入れるにはどう書けばよいのでしょうか?
438:nobodyさん
08/02/26 23:24:57
アルファベット進数?つまり26進数とかになるのか。
aを0、bを1、cを2・・・て対応させればとりあえず入るな。
439:nobodyさん
08/02/27 00:33:52
for ($i='a', $n='zzzzzzzz'; $i<=$n; $i++ ) {
$str[] = $i;
}
440:nobodyさん
08/02/27 04:32:26
>>473
パスワード総当り攻撃の相談でつか?
441:nobodyさん
08/02/27 04:36:01
1桁増やすごとに計算量が莫大に増加していく恐怖を味わうとよいわ
442:nobodyさん
08/02/27 13:31:31
>>439
ネタかと思ってやってみたら本当に動きました
文字列をプラスするとこういうことになるんですね
ありがとうございました
443:nobodyさん
08/02/27 17:43:11
質問です!
「form.html内のinputタグで送信した値をpost.php内の<?= $_post["abc"] ?>で表示させる。」
ですが、
↓
「phpファイルではなく、htmlファイル内で表示させる」
にはどうすればいいのでしょうか?
1回の入力で、複数ページ共通ヘッダの「更新日」が変更できたらいいな、と考えております。
きっと超基本的な事柄なのでしょうけれど、ネット上でもなかなか見つからないので...。
よろしくお願いします。
444:nobodyさん
08/02/27 19:05:32
Webサーバの設定で拡張子「.html」もphpで動くようにして<?= $_post["abc"] ?>
445:nobodyさん
08/02/27 19:12:22
444>>
なるほど、設定が必要なんですね。
助かりました。
ありがとうございます。
446:nobodyさん
08/02/27 20:15:02
>>445
SSIって手もあるよ
447:nobodyさん
08/02/27 20:37:33
>>446
ありがとうございます。
勉強してみます!
448:nobodyさん
08/02/28 00:23:44
ど素人の質問です。
以下のPHPを作ったところ、画面が真っ白になりました。
真っ白=エラー無しと思い、tablenameを確認したところデータが入っていませんでした。
>>407と同じエラーかと思い、>>408を確認したところONになっていました。
自分では原因がわからないため、どなたかご指摘願えないでしょうか。
<作っているつもりのもの>
別ページのフォームから送信(reg)されたデータを、データベースに入れるPHP。
環境…SQL=PostgreSQL OS=Linux PHP=5.2.5
確認…FireFox
$con = pg_connect('dbname host user password');
$a = $_POST["a"];$b =$_POST["b"];$c = $_POST["c"];
if(isset($_POST["reg"])){
$sql = "select max(log) from tablename";
$result = pg_query($con,$sql);
$array = pg_fetch_array($result);
$new_log_no = $array[0] + 1;
$sql = "select current_timestamp";
$result_date = pg_query($con,$sql);
$in_date = pg_fetch_array($result_date);
if(isset($_POST["b"])){ $d = $b; } else { $d = $c; }
$sql = "insert into tablename (log,a,d,_in_date)
values('$new_log_no','$a','$d','$in_date')";}
else{ header("Location: menu.php"); }
if(!$result){ echo "送信に失敗しました";}
449:nobodyさん
08/02/28 00:40:01
Apacheのログは?
あとプログラムのどこまで実行したら真っ白になるか切り分けてみたら?
450:nobodyさん
08/02/28 01:14:23
>>449
レスありがとうございます。
AccessLogはこうなっていました。
127.0.0.1 - username [28/Feb/2008:00:59:35 +0900] "GET /test/in.php HTTP/1.1" 200 555
127.0.0.1 - username [28/Feb/2008:00:59:41 +0900] "POST /test/in_date.php HTTP/1.1" 200 5
in.phpがフォーム、in_dateが問題のPHPです。
よくわからないですが、データベースに問い合わせていない?気がするので調べてみます。
451:nobodyさん
08/02/28 01:43:16
php として動作してないだけじゃ?
httpd.conf とか確認してみたら?
452:448
08/02/28 02:15:26
>>451
httpd.confは本を参考に次のように設定追加してます。
AddType application/x-httpd-php .php
453:nobodyさん
08/02/28 02:48:59
あとは、デバッグの基本中の基本。チェックライト入れまくる
454:nobodyさん
08/02/28 14:23:55
つーか、LoadModuleしてるのか?
455:448
08/02/28 19:24:05
亀レスになってしまい申し訳ありません。
$sql = "insert into tablename (log,a,d,_in_date)
values('$new_log_no','$a','$d','$in_date')";}
の部分のSQLに対し
pg_query($con,$sql);
を設定するとテーブルにデータを追加することが出来ました。
しかし作成されたデータは中身が空でしたorz
insertが動いてるのでPHPとデータベースの連携は取れてると思います。
>>454
Loaded Modulesを調べた所次の通りの結果でした。
mod_php5, mod_setenvif, mod_so, mod_auth, mod_access,
mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis,
mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status,
Momod_negotiation, mod_mime, mod_log_config, mod_env, http_core
456:nobodyさん
08/02/28 19:36:50
>>449
457:nobodyさん
08/02/29 10:18:45
つーか、まずはHTMLしかないphpを書いて試すとか
白紙のときにブラウザの機能でソース見るとどうなってるとか
いろいろやってんのかな
458:nobodyさん
08/03/05 16:03:25
だいぶ前にログナンバーを引っ張り出して重複せずに+1したいと
言っていたものですがa+モードとファイルロックのタイミングで
何とか実現できました。
その後に続くwモードのファイルーオープンで
ログ数を調整しようと思ったのですが
この処理を付けるとログが全部消えてしまいます。
何か間違えていますか?
459:458の続き
08/03/05 16:05:57
//指定行数以上のログの削除
$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
$yojyou = $delcountlines - 2;
$delhandle = fopen($filename, "w");
$delnewlog = "";
flock($delhandle,LOCK_EX);
for ($i = $delcountlines; $i <= $yojyou; $i--) {
array_unshift($delnewlog, $dellines[$i]);
}
fwrite($delhandle,$delnewlog);
flock($delhandle,LOCK_UN);
fclose($delhandle);
460:458の改正
08/03/05 16:41:48
すいません、これで。
ログ二行以上ならログの先頭から余剰分消していくと言う感じで
//指定行数以上のログの削除
$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
if ($delcountlines > 2) {
$yojyou = $delcountlines - 2;
} else {
$yojyou = 0;
}
$delhandle = fopen($delfilename, "w");
flock($delhandle,LOCK_EX);
$delnewlog = "";
for ($i = $delcountlines; $i <= $yojyou; $i--) {
fwrite($delnewlog, $dellines[$i]);
}
flock($delhandle,LOCK_UN);
fclose($delhandle);
461:nobodyさん
08/03/05 16:42:58 bSWg3SQN
実行スクリプトまでのサーバーのフルパスを下記のように取っております
この書き方だとファイル名test.phpを他の名前にするたびに$this_script_nameを書換えないといけません
ファイル名を書換えてもソースを変えずにフルパスを取得する書き方を教えてください
$this_script_name = 'test.php';
$full_path = ereg_replace($this_script_name ,'' ,$_SERVER['SCRIPT_FILENAME']);
462:nobodyさん
08/03/05 16:58:07 OQixiW/q
レンタルサーバ・無料スペースに依存せずにPEARを使いたいのですが・・・
ググってみると”必要ファイルをコピーして ini_set や .htaccess を使えば良い”
との事ですが、どこまでが必要ファイルなのか良く分かりませんでした
(ローカルにインストールしたPEARディレクトリ丸ごとホームディレクトリにコピーなのか
installコマンドでダウンロードしたファイルだけコピーなのか)
質問は最初の一行の通りなのですがPEARを使うにはどのファイルが必要なのでしょうか?
463:nobodyさん
08/03/05 17:09:24
>>461
dirname(__FILE__)
464:nobodyさん
08/03/05 17:16:55 bSWg3SQN
>>463
おおお できました
これだけで出来るとわ・・・
ありがとうございました
465:nobodyさん
08/03/08 00:22:24
掲示板の削除なんですが下記操作してからファイルロックかけて書き込むと
場合によっては重複しませんか?
if ($_POST['delete']) {
for ($i = 0; $i < count($lines); $i++) {
$items = explode("\t", $lines[$i]);
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
array_splice($lines, $i, 1);
}
}
}
466:nobodyさん
08/03/08 07:01:18
>>465
if (isset($_POST['delete']) && $_POST['delete']) {
foreach ($lines as $key => $value) {
$items = explode("\t", $value);
if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
unset($lines[$key]);
}
}
}
書き込みの部分を見ないとなんとも言えない
467:466
08/03/08 11:35:25
if($_POST['deletion']){
$deletionlogname = ('card-walin.txt');
$deletionloglines = file($deletionlogname);
$deletioncountloglines = count($deletionloglines);
$deletionlognumbers = $deletioncountloglines - 1;
$deletionfopen = fopen($deletionlogname, "w");
flock($deletionfopen,LOCK_EX);
for($i=0; $i<$deletionlognumbers; $i++){
$deletionlogitems = explode("\t", $deletionloglines[$i]);
if($deletionlogitems[0]==$_POST['deletionradio'] && $deletionlogitems[3]==$_POST['deletionkey'] || $deletionlogitems[0]==$_POST['deletionradio'] && 'masterpass'==$_POST['deletionkey']){
continue;
}else{
fwrite($deletionfopen,$deletionloglines[$i]);
}
}
flock($deletionfopen,LOCK_UN);
fclose($deletionfopen);
}
468:nobodyさん
08/03/08 11:41:55
$deletionlogname = ('card-walin.txt');
何これ
469:465
08/03/08 11:42:09
>>467は>>465が書いたものです、アンカー打ち間違えた・・・・・
んでこれは記事の固有IDとパスが一致した行を削除と言う流れで
書いてるんですがどうも訳わからん記事まで削除されてしまいます。
>>465の質問とあわせてアドバイス頂けないでしょうか?
470:465
08/03/08 11:43:33
>>468
ログの名前です、
変数名の英語的意味めちゃくちゃなのは
とりあえず別の変数と重ならなくさせるためなので
ご勘弁を。
471:nobodyさん
08/03/08 11:44:26
パスワードがどれかすら分からんし
472:465
08/03/08 11:44:56
$number\t$name\t$comment\t$deletionkey\t$time\n
ログの並びはこんな感じです。
473:465
08/03/08 11:46:30
$deletionlogitems[0]がパスワード、
POST['deletionradio']が記事の固有IDになります、
説明不足ですいません。
474:nobodyさん
08/03/08 11:51:30
なんでログの件数ー1だけforでループしてんの?
475:465
08/03/08 11:56:53
>>474
その部分もしログが0だった場合とか書いてませんね、迂闊でした。
ログの記事数のカウントが0から始まるのでそうやってみたのですが・・・・・
476:nobodyさん
08/03/08 12:01:17
訳分からん記事ってどういうの?
477:465
08/03/08 12:06:56
関係ない別の固有IDの記事まで消えるんですよね、
例えば記事が3つあって、3つめの記事で固有ID3の記事を削除したら
1つめの記事も同時に消えたりします。
478:nobodyさん
08/03/08 12:08:50
1つめの記事が消えないこともあんの?
479:465
08/03/08 12:17:38
>>478
今試したら記事3つのログで2つめの記事消したら
3の記事も同時に消えました。
つかその後、削除ボタン押したら全部消えたw
どうも記事固有IDとパスワード一致しなかった場合書き換えしないと言う
処理が抜けてたようです。
ただこれを直しても記事の同時消えが直る気がしない・・・・
ロジック的には大体上にあげたプログラムである程度あってるのでしょうかね。
480:nobodyさん
08/03/08 12:26:00
データベースにおいて、データは物理的に削除するのではなく、
フラグ変更することをお薦めする。
481:465
08/03/08 12:30:46
>>480
表示するかしないかで処理するということですか。
482:nobodyさん
08/03/08 14:00:31
>>481
データベースの場合だ
ファイルの場合は消した方がいいよ
速度変わってくるし
483:nobodyさん
08/03/08 14:14:06
じゃ別に今言うべき話じゃないだろw
484:nobodyさん
08/03/08 14:15:28
>>483
俺が言ったんじゃないw
485:nobodyさん
08/03/08 14:46:24
まず
||と&&の使い方を覚えよう
466でも書いたけど(最初のifで要らん部分あるけどw)
ループ中にある
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
これは変です(処理的には通るけど)
if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
やりたい事は多分これ
んで、POST内容は意図したものがきてるの?
486:nobodyさん
08/03/08 14:52:21
>>484
お前に言ってないw
487:465
08/03/08 16:30:22
なにやらすごい間違いをしてました・・・・・・・・・
$items[4]がパス格納部じゃなくて$items[3]でした・・・・・・・・
今から皆さんにご指摘頂いた部分の修正に入ります、
本当にすいませんでした。
488:nobodyさん
08/03/08 16:36:16
>>486
俺にか?
489:465
08/03/08 16:38:20
なんだか喧嘩させてしまったようで申し訳ない・・・・・
490:nobodyさん
08/03/08 17:05:38
架空請求の詐欺師が特定されてるよw
URLリンク(2ch.pne.jp)
【ユビキタス銀河】 詐欺師プログラマー 武田洋幸
スレリンク(antispam板)l50
491:nobodyさん
08/03/08 17:42:02
何度も投稿すいません、掲示板で書き込んだ後ブラウザの更新ボタン押すと
もう一度書き込まれてしまうのですがこれを防止するのは2重書き込み防止処理だけでいいのでしょうか?
これだとたまに別の人が書き込んだ後に更新押した場合
書き込まれちゃいますよね。
皆さん過去ログの内容走査処理したりしてるのでしょうか?
492:nobodyさん
08/03/08 17:53:28
>>491
書き込んだ後ブラウザを強制的に閉じるようにしたら更新できなくなるよ
493:nobodyさん
08/03/08 18:01:26
そんな〜、ドラえも〜ん!
494:nobodyさん
08/03/08 18:26:21
a.html←フォーム
b.php←post先
c.php←投稿完了しました表示
b.phpで投稿完了したら
header('Location : URLリンク(example.com)');
これでa.htmlまで戻るとかで戻らない限り2重投稿はある程度防げる
495:nobodyさん
08/03/08 18:29:46
なるほど、そういうことでしたか、取り乱しました。
html作成せずにphp1つだけで全部やろうとしてもややこしそうですね・・・・・
496:nobodyさん
08/03/08 18:50:31
>>495
別にhtml作らなくてもできるけど
ファイルは分けたほうが後々良いよ
497:nobodyさん
08/03/08 21:58:57
>>495
だまされるな!
ドラえもん呼ぶのが正解だ
498:nobodyさん
08/03/08 23:16:31
htmlってどうやって作るんでしたっけ?
なんかリファレンス読んでも見つからないのですが。
499:nobodyさん
08/03/09 01:35:03 BZEq18rG
target.phpをインラインフレームで表示するためのページをget.phpとします
その際にをtarget.phpへ送るリファラを URLリンク(example.com)<)" を追加すればいいと書いてあったのですが、
どのように追加したらいいのかがわかりません
location みたいな書き方が思い浮かんだのでやってみましたができませんでした。
正しいやり方を教えてください。お願いします。
-------------------------------------
【get.php】
<?php
header("Referer: URLリンク(example.com\r\n)<)
500:nobodyさん
08/03/09 02:10:54
>>499
【get.php】
<?php
echo '<iframe src="target.php?referer='.$_SERVER["HTTP_REFERER"].'"></iframe>';
?>
【target.php】
<?php
echo $_GET["referer"];
?>
501:nobodyさん
08/03/09 02:31:20 BZEq18rG
>>500
せっかく答えていただいたのに恐縮ですが、
それはget.phpで取得したリファラをtarget.phpへgetメソッドで渡す方法ですよね
私が知りたいのは、
get.phpでtarget.phpを開くけれども、
target.phpで取得されるリファラはget.phpではなく、URLリンク(example.com) にしたいということなのです
印象の良くない言葉なので使いたくはなかったのですが、つまり、リファラ偽装ということです
書き方悪くてすいません
502:nobodyさん
08/03/09 02:41:06
>>501
URLリンク(example.com)
これは固定値かそれともget.phpで取得できる値かどっち?
get.phpで取得するリファラの値なら方法は無いよ?
get,php内でgetのリクエストをtarget.phpに宛てに投げて
その時のヘッダにリファラ偽装して渡すとかなら可能だけど
503:nobodyさん
08/03/09 03:08:23 BZEq18rG
>>502
説明不足で本当にすいません
固定値です
504:nobodyさん
08/03/09 04:55:14
>>503
ファイルに対してアクセスあった場合
強制的に.htaccessとかでSetEnvとかかなぁ・・・
もしiframeのが別のサイトなら
getのリクエスト投げた方が早い
505:nobodyさん
08/03/09 05:16:16
変数に0入れてその後の分岐にNULLかどうかとか入れたら
0はNULLやfalseと判定されますか?
その変数を変数-1としても-1とはならない?
506:nobodyさん
08/03/09 05:24:57
===で比較すれば判定されない。
変数=0
変数=変数−1としたら変数の中身は−1になる。
507:nobodyさん
08/03/09 05:29:10
型の自動変換に頼った比較は避けた方がベター。
508:nobodyさん
08/03/09 05:31:25
どうもすいません、ありがとうございました。
509:nobodyさん
08/03/09 14:05:48 BZEq18rG
>>504
いろいろなアドバイスありがとうございます
target.phpが別のサイトなら、
target.phpのソースは
<?php
echo $_SERVER["HTTP_REFERER"];
?>
なのは弄りようがないわけですが、
target.phpの $_SERVER["HTTP_REFERER"]の値をURLリンク(example.com)であると認識させるためには、
get.phpからどうやってgetのリクエストを投げればいいのでしょうか
510:nobodyさん
08/03/09 14:17:24
>>509
GETと環境変数は別
511:nobodyさん
08/03/09 14:34:13 BZEq18rG
>>510
ありがとうございます
つまり、getでリクエスト投げても、相手で表示される環境変数は変わらないわけですよね
どうすれば
get.phpでインラインフレームでtarget.phpを表示し、
target.phpの $_SERVER["HTTP_REFERER"]の値をURLリンク(example.comt)にできるのでしょうか
やり方がさっぱりわからないのです
512:nobodyさん
08/03/09 15:24:27
>>511
getでリクエスト投げる時にリファラ偽装すれば
リファラには固定値を入れる事ができる
だがインラインフレームでやるのは無理
それをインラインフレームでやる必要あるの?
どうしてもやりたいなら
.htaccessにSetEnvってのがあって
それを使ってtarget.phpにアクセスがあった場合
強制的にリファラを書き換えてやれば良い
513:nobodyさん
08/03/09 16:02:31 BZEq18rG
>>512
インラインフレームでしようとしていた理由は、
自分がやりたいことを考えた時に一番実現しやすそうだと思ったからです
それが無理ならばインラインフレームでやることはありません
>getでリクエスト投げる時にリファラ偽装すれば
ここのやり方を教えてもらえないでしょうか
getはわかりますが、リファラ偽装の部分がわからないのです
514:nobodyさん
08/03/09 16:26:44
>>513
pearのhttp_requestかcurlが楽じゃないかな
普通にfsockopenとかでopenして投げる事もできるけど
<?php
$request .= "GET / HTTP/1.0\r\n";
$request .= "Host: localhost.jp\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n";
$request .= "Accept: */*\r\n" .
"Referer: URLリンク(hogehoge.jp)" .
"User-Agent: DoCoMo/2.0 Fa2(c100;TB;W28H15)\r\n";
$request .= "\r\n";
$request .= "\r\n";
$fp = fsockopen("yahoo.co.jp", 80, $errno, $errstr, 30);
fputs($fp, $request);
$response = "";
while (!feof($fp)) {
echo fgets($fp, 4096);
}
fclose($fp);
?>
こんな感じでやふーのトップをもってこれる
515:nobodyさん
08/03/09 16:49:24 BZEq18rG
>>514
ありがとうございます
私のくどい質問に回答続けてくれた方に感謝します
516:nobodyさん
08/03/10 01:54:10 HGPlOVh9
PHP + MySQL でスレッド式掲示板を作りました。
スレッド毎にテーブルを作成し、そのテーブルにコメント(&投稿者名など)を記録、
すべてのテーブルを管理するテーブルに最終投稿日時などを記録して、スレッド順位などを決めます。
以下、コメントを投稿した時の部分のスクリプト。
$comm = addslashes($_POST['comm']); //コメント
$id = addslashes($_POST['id']); //テーブルID
$name = addslashes($_POST['name']); //投稿者名
if($_POST['sage'] == NULL){$sage = 0;} else {$sage = 1;}
if($name == NULL){$page_disp = "名前を入力してください。";
} else {
if($comm == NULL){$page_disp = "本文を入力してください。";
} else {
insert_comment($id,$name,$comm,&$seq,$res_dbcon,&$result); //スレッド(テーブル)にコメントを書き込み
if($result == FALSE){$page_disp = "投稿に失敗しました。";
} else {
update_temp_table($id,$sage,$seq,$res_dbcon,$result);//管理テーブルに投稿日時などを記録
$page_disp = "投稿しました。";}}}
PCからのアクセスと、DOCOMO、auからは期待した通りの動作をしていますが、softbank携帯からのみ、動作がおかしくなっています。
症状としては、$name、$commといった変数を受け取れず(?)、テーブルには各カラムのNULLになったレコードが追加される。
テーブルの更新、レコードの追加は行われているので、CURRENT TIMESTAMPなどはちゃんと入っている。
管理テーブルは更新されているので、各変数のNULLのチェックは通過している。
という状態です。スクリプト上におかしい箇所などあるでしょうか?
ちなみにPHP、MySQLの勉強は先月始めたばかりで、この掲示板のスクリプトは、本などを読んで作ったオリジナルのものです。
よろしくお願いいたします。
517:nobodyさん
08/03/10 02:14:45
すみません。サブルーチンの中身を書いてなかったです。
function insert_comment($tbl_id,$name,$comm,$seq,$dbcon,$result){//コメント追加
$l_sql = "SELECT count( * ) FROM `".$tbl_id."`";
$l_result = mysql_query($l_sql,$dbcon);
$l_row = mysql_fetch_array($l_result);
$seq = $l_row[0] + 1;
$f_host = gethostbyaddr(getenv("REMOTE_ADDR"));
$sql = "insert into `".$tbl_id."` (c_seq, c_time, c_name, c_comm, c_host, c_del_flg) VALUES (".$seq.", NOW( ), '".$name."', '".$comm."', '".$f_host."', '0' )";
$result = mysql_query($sql,$dbcon);
}
function update_temp_table($tbl_id,$sage,$seq,$f_dbcon,$f_result){//スレッド更新(管理テーブル更新)
if($seq == 300){ $del_flg = 1;} else { $del_flg = 0;} //規定レス数に達したスレは終了
$sql = "update t_temp_table set c_count_comment = ".$seq." , c_del_flg = '".$del_flg."' where c_table_id = ".$tbl_id;
$f_result = mysql_query($sql,$f_dbcon);
}
518:nobodyさん
08/03/10 02:20:25
>>516
softbankのチェックした機種は何?
多分表示側の問題だとは思うけど
それと、1スレッド1テーブルはやめた方が良い
ファイルベースの設計なら1スレッド1ファイルの方が良いが・・・
519:516
08/03/10 02:40:11
機種はちょっと分からないんですよね。
ログ見てみたらソフトバンクだな、ってのが分かったというだけで。
しかも、その方が問い合わせフォームからメールも送ってくれたんだけど、
それがまた見事に文字化けしていて全く見れない状態です。
(これもまたDOCOMO、auは正常動作。)
1スレッド1テーブルが良くないというのは、パフォーマンスとかCPU占有とかいう話でしょうか?
素人考えで、一つのテーブルのみが異常にレコード数多くなるよりいいかな、と思ったのですが…
520:nobodyさん
08/03/10 02:58:57
ちょ,それはない
521:nobodyさん
08/03/10 03:56:42
>>519
旧Vodafone機種とかにはまともに送れないのとかあるからねー
そこらへんが携帯対応のめんどくさい所
1つ要素追加しようとした時に全部のテーブル構造変えるほうが手間
あとデフォ設定でCPUがP4の3Gでメモリ2Gなマシンでも
1テーブル2000万件とかいれても平気だから1テーブルに入れろ
DB設計は色々と勉強した方が良いよ
522:nobodyさん
08/03/10 05:18:59
超初心者用ってあるのに全然わからない。・゚・(ノД`)・゚・。
2ヶ月ぐらいやってるけどなにをどうやっていいやら・・・
とりあえずHTMLを少しやってたのでPHPに挑戦してみたんだが
難しい。そして、どう使うのかがよくわからん。
PHPスーパーサンプル集って本を買って本の進行通りにやってるが
だからなに?って感じでおわってしまう。
まず最初にこんにちはを画面に表示させた。うむ。
フォームはあらゆるところで使われるので重要ということで
フォームもやってみた。うむ。
いま、フォームで送信されたデータを関数で色々条件をつける
もしくは処理をするってのやってるんだけど、それも具体的によくわからん。
説明には、パスワードを入力とか普段サイトで使ってるようなことで使う
みたいなことは書いてあったけど、実際自分でつかえるかなーと疑問。
何をどうしたらいいか、もっと分かりやすい本、もしくはページはないか
しってたらお願いします。できれば、私はこう使ったというのを実体験で
いってくれると分かりやすいです。m(_ _)m
523:nobodyさん
08/03/10 06:26:17
>>522
その手の質問きたら俺は毎回ここをオススメしてる
宣伝と思われそうだがw
URLリンク(www.phppro.jp)
初心者には普通にオススメ
あと何か作ってみたいものを見つけるのが良いんじゃないかな?
んでこれを作るには何が必要で
どんな事をしなきゃいけないのかとか
あとは同じようなスクリプトは
どんな風にしてるのかを調べるのも良いかな
524:nobodyさん
08/03/10 18:52:10
>>523
すごくよかったですm(_ _)m
私が買った本より説明が分かりやすく理解しやすかったです。
とりあえず、このページを読破し実際にやってみようと思います。
525:nobodyさん
08/03/11 03:36:14 xCa4blgr
すません。ある関数の返り値をvar_dumpしたら
object(stdClass)(1) { ["array"]=> "test"}
みたいな感じでオブジェクトで返ってきました。
配列arrayの中の"test"という文字列を取り出すためにはどうしたらよいのでしょうか?
ちなみにjson_decode()です。upgrade.phpを利用してassocをTRUEにしているのに配列ではなくオブジェクトで返されてしまって困っています。
526:nobodyさん
08/03/11 03:42:27
$obj->array
527:nobodyさん
08/03/11 15:31:16 xCa4blgr
>>526
ありがとうございます。
528:nobodyさん
08/03/11 20:58:03 LKhchWrt
PHP5のsimplexml_load_fileを使ってWordPressのRSSフィードを読み込もうと
しているのですが、フィード内の <content:encoded> といったエレメントが
読み込まれません。
どうも「:」がエレメント名に含まれていると、PHPはそれを見落としてしまうよう
なのですが、同じような経験をされた方いらっしゃいますでしょうか?
529:nobodyさん
08/03/11 22:34:53
PHPって有名なプログラミングですよね?
今度の4月から大学(情報工学科)に通うんですけど
教授とかに聞いても大丈夫ですよね?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5302日前に更新/165 KB
担当:undef