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

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

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

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

---前スレのテンプレここまで---

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

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
△▲ WebProg 初心者の質問 Part16 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1187729623/

完走したら、雑談スレで待機でどうでしょう
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0558nobodyさん2008/03/15(土) 23:28:03ID:???
<br/>\nってどういう意味?
なんで改行が二つあるの?
0559nobodyさん2008/03/15(土) 23:35:04ID:???
それぞれ違う改行。
意味を調べろ。
0560nobodyさん2008/03/16(日) 01:00:46ID:???
>>556 >>557
ちょっとログ分の画像掲示板のhtml出力しつつ
その1ページ分にすべてのページへのリンクを作ったりと複雑なので
whileで代用しました、ありがとうございました。

後、もう一つ聞きたいのですが
.=で処理したデータを継ぎ足していってhtml出力すると
ソースで改行が■になったりしてしまいます。
後々の事を考えて見栄えよく整形したいのですが
どんな要因が考えられるのでしょうか?
0561nobodyさん2008/03/16(日) 01:13:28ID:???
>>560
> どんな要因が考えられるのでしょうか?
メモ帳でLF改行を見てるだけ、とか。
0562nobodyさん2008/03/16(日) 01:23:50ID:???
>>561
すいません、まさにそのとおりなんですがtxtファイルに
phpproの講座のとおりEUC-JPとLFで設定してます。
改行をCR/LFにしたらちゃんと見えたんですが
EUC-JPとLFだとwindows使いには不便なのでしょうか?

後、ログにtxtファイルを使うと外部から見えてしまうと聞いたのですが
何がお勧めなのでしょうか?
0563nobodyさん2008/03/16(日) 01:30:50ID:???
>>562
ログにtxt〜とか媒体が問題じゃないよ。
ドキュメントルート以下におけば外部から見られる危険性は当然ある。
0564nobodyさん2008/03/16(日) 01:58:38ID:???
あれ?そうでしたか。
過去cgiとかにしとけといわれた思い出があるんですが。
0565nobodyさん2008/03/16(日) 02:22:24ID:???
>>564
その説は、ごく限られた人しか .htaccess でごにょごにょできなかった時代とか
.htaccess の書き方を説明するのがめんどくさいとかの産物なので、
せめて .log とか .dat で終わる名前のファイルにして deny from all に設定。
というか、>>563。

>>561前半は Shift_JIS の地雷を踏みまくるほうがよっぽど不便だと思う。
05665652008/03/16(日) 02:23:29ID:???
アンカーミスった。>>562前半、ね。
0567nobodyさん2008/03/16(日) 02:41:19ID:???
htmlの投稿フォームからphpにデータ送ると
phpの中身がテキストデータとして開かれててしまいます。
phpに同じフォームデータを書いて送信したら普通に処理できてたんですが
どうしたものでしょうか?
0568nobodyさん2008/03/16(日) 14:32:57ID:???
日本語でおk?
0569nobodyさん2008/03/16(日) 19:12:01ID:???
html出力した内容に含まれてる投稿フォームから
phpにその内容を飛ばして処理しております。
本文がない場合、名前&パスワードをクッキーをセットして
1行目のフォームに送り返してるんですが名前欄に何も出ません。

名前欄のvalue値に
phpプログラムを使用して受け取ったクッキーを表示するコードを書いてるんですが
1行目フォームのようにhtmlファイルにphpコード書いても意味なかったでしたっけ?
05705692008/03/16(日) 19:19:19ID:???
ややこしくなってしまいました、
要するにログをhtml出力したファイル内にあるフォームに
クッキーの受け渡しってできるんですか?

書き込みを処理するphpからクッキー発行しただけでは駄目なんですよね?
0571nobodyさん2008/03/16(日) 19:31:40ID:???
できるよ
05725692008/03/16(日) 19:44:08ID:???
すいません、お手数ですがどのようにすればよいのでしょうか?
>>569を書き込んでから今までログをhtmlで出力する掲示板のサンプルを見回ってたら
<input value="">のvalue記述さえ無しにクッキーが表示されてるものが
あってどんな方法を使ってるか知りたくて。
0573nobodyさん2008/03/16(日) 20:02:28ID:???
名前欄に何も出ないっていう現在のコードを出してみて。入力と共に。
0574nobodyさん2008/03/16(日) 23:54:38ID:????2BP(1)
>>569
出力されたhtmlファイルの拡張子はphp?それともhtml?

出力されたファイルがhtmlであれば
サーバの設定が基本的な設定のままなら
cookieなんて出せないやんJavaScriptとか使えば別だが

phpであれば
<input value="<?php echo $_COOKIE['name'];?>">
とかすれば出るが
0575nobodyさん2008/03/17(月) 00:03:56ID:???
拡張子はhtmlです、
それで元々作っていたのは総phpで<input value="<?php echo $_COOKIE['name'];?>"> が出来てて
htmlにデータ書き出すようにしてからそれが通用しなくなったので混乱しておりました。
ただここだと
http://3d.skr.jp/3d/
出来てるのはなぜなんでしょう?
0576nobodyさん2008/03/17(月) 00:10:47ID:????2BP(1)
>>575
そこはjavascriptでクッキーをセットしてる
0577nobodyさん2008/03/17(月) 00:19:25ID:???
なるほど、万人には無理ですかhtmlでは。
とりあえずクッキーの部分は飛ばして別の部分作ります。
0578nobodyさん2008/03/17(月) 00:27:11ID:????2BP(1)
function l(e){
var P=getCookie("pwdc"),N=getCookie("namec"),i;
with (document) {
for(i=0;i<forms.length;i++){
if(forms[i].pwd)
with(forms[i]){
pwd.value=P;
}
if(forms[i].name)
with(forms[i]){
name.value=N;
}
}
}
};
onload=l;
function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) {
tmp1 = " " + document.cookie + ";";
xx1 = xx2 = 0;
len = tmp1.length;
while (xx1 < len) {
xx2 = tmp1.indexOf(";", xx1);
tmp2 = tmp1.substring(xx1 + 1, xx2);
xx3 = tmp2.indexOf("=");
if (tmp2.substring(0, xx3) == key) {
return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
}
xx1 = xx2 + 1;
}
return("");
}
こんな感じだな適度に直せばいける
0579nobodyさん2008/03/18(火) 16:47:11ID:npoe+Lzf
http://www.phppro.jp/school/phpschool/vol4/1
のプログラムですが、

http://localhost/uranai.php
だと「入力された値は数字ではありません。」と表示されるのですが

http://localhost/uranai.php?age=22
だと文字化けしてしまいます。
本来「あなたの年齢は:22才です。」と表示されると思うのですが。

何が原因と考えられますか?
0580nobodyさん2008/03/18(火) 17:12:58ID:???
>>579
コードうp
0581nobodyさん2008/03/18(火) 17:15:35ID:???
ちなみにこちらの環境で実行したら後者も正しく表示された
mb関係かhtmlspecialcharsの文字コードの設定か?
文字化け文字列も出すと何かわかるかも
05825792008/03/18(火) 18:00:26ID:npoe+Lzf
レスありがとうございます。

、「、ハ、ソ、ホヌッホマ。ァ22コヘ、ヌ、ケ
とでます。

0583nobodyさん2008/03/18(火) 18:15:19ID:sNjVpZ9l
WordPressで困っています。
サイドバーをカスタムしたくてsidebar.phpを弄っているのですが、カレンダーなどを取り除いてアバウトやその他をとりつけたいのですが、
どう記述するべいいのかわかりません。
カレンダーを消すことには成功したのですが、他のコンテンツをサイドバーに入れるには何を記述すればいのでしょうか。
0584nobodyさん2008/03/18(火) 21:06:15ID:???
>>583
WordPress (ワードプレス) その6
http://pc11.2ch.net/test/read.cgi/blog/1202116662

こっちのがいいんでない?
0585nobodyさん2008/03/18(火) 21:53:51ID:???
>>579
ブラウザ上で右クリック→エンコード→日本語 (EUC)
でおk

ま、もう解決しちゃってるだろうけどw
05865792008/03/18(火) 23:02:38ID:npoe+Lzf
>>585
全然解決できてなかったのでこのスレにはりついてしましたw
ありがとうございます!うまくいきました!
0587nobodyさん2008/03/19(水) 16:39:46ID:4H6o0Qo6
連続しての質問すみません。
http://www.phppro.jp/school/phpschool/vol5/3
のページに従っていたのですが
年齢入力フォームで「占う!」を押した場合に結果が表示されず
ファイルのダウンロードの確認ウィンドウが出てしまいます。

何らかの原因でuranai_result.phpが
PHPファイルととして認識されていないということでしょうか?
0588nobodyさん2008/03/19(水) 16:40:35ID:???
そうです
05895872008/03/19(水) 16:50:22ID:4H6o0Qo6
>>588
ありがとうございます
プロパティでファイルを確認してみると「PHPファイル」となっていますが、
どのようにすれば認識されるのでしょうか?
0590nobodyさん2008/03/19(水) 16:57:43ID:???
Apacheの設定です
0591nobodyさん2008/03/19(水) 19:12:29ID:TVI3fNbM
フォームに"設定"というボタンが3つあるのですが
これが押された時にどのボタンかを識別する方法を教えてくださいえろいひと
0592nobodyさん2008/03/19(水) 19:32:26ID:???
>>591
JavaScript
0593nobodyさん2008/03/19(水) 19:41:51ID:???
$data1 = @$_POST["data1"];

if (!strlen($data1)) {
echo "<p>(strlen)データが入力されていません";
}
else {
echo "<p>(strlen)入力された内容:".$data1;
}

if (empty($data1)) {
echo "<p>(empty)データが入力されていません";
}
else {
echo "<p>(empty)入力された内容:".$data1;
}

strlen()とempty()はどのように使い分けるんでしょうか?

echoとprintみたいに理解したらいいですか?
0594nobodyさん2008/03/19(水) 21:00:00ID:???
>>593
http://php.net/strlen
http://php.net/empty
0595nobodyさん2008/03/19(水) 21:36:33ID:???
echoとprintをどのように理解しているのかが気になる
0596nobodyさん2008/03/19(水) 21:42:26ID:R0ivO4NX
メインループとは何でしょうか?
どこにあるものですか?
0597nobodyさん2008/03/19(水) 21:49:00ID:???
<?phpから?>
0598nobodyさん2008/03/19(水) 21:52:46ID:???
普通はそんなプログラムやらない
0599nobodyさん2008/03/20(木) 02:43:35ID:???
よし!ここなら俺でも答えられる
何でも質問してくれ
0600nobodyさん2008/03/20(木) 03:13:34ID:???
>>591
同一のname指定してきた内容で判断とか
別々のname指定してどの値がセットされてるかで確認したりとかかな

>>593
emptyは内容があるか調べるもの
strlenは文字列の長さを調べるもの
用途は全然違う
0601nobodyさん2008/03/20(木) 13:02:37ID:???
>>593
ついでに、issetと if($data)・・・ についても教えてください
0602nobodyさん2008/03/20(木) 15:30:03ID:c6Zuq6MM
商品一覧、価格表が掲載されているページを
CSVアップロードで更新できるようなフリーの
phpやCGIはないでしょうか?
ご紹介頂きたいのです。お願い致します。
0603nobodyさん2008/03/20(木) 15:38:40ID:???
それくらい自分で作れないの?
0604nobodyさん2008/03/20(木) 15:42:11ID:c6Zuq6MM
>>603
面目ないです。
超初心者用スレでしか聞けないので書いたのです。
0605nobodyさん2008/03/20(木) 15:58:17ID:???
面白くないです。

に見えた
0606nobodyさん2008/03/20(木) 16:06:12ID:???
>>602
作れなかったり改造できなかったりする場合はASPサービス使えば?
Eコマース系のサービスいっぱいあるし
0607nobodyさん2008/03/20(木) 23:38:33ID:WvTnOLdh
phpの勉強をしていて、以下のように書きました。
formで送った名前を表示するようにしたいですが、うまくいきません。
グローバル変数が間違ってるのでしょうか?
詳しい方、お願いします

send.html↓

<html>
<head><title>send</title></head>

<body>
<form action="receivename.php" method="post">名前<input type="text" name="namae"><br>
<input type="submit" value="送信"><br>
</form>
</body>
</html>


receivename.php↓

<html>
<body>
<?php
print ($_post['namae']) ;
?>
さん。どうも<br>
</body>
</html>
0608nobodyさん2008/03/20(木) 23:53:02ID:???
>>607
print ($_POST['namae']) ;
0609nobodyさん2008/03/21(金) 00:05:26ID:???
>>608
ありがとうございます
0610nobodyさん2008/03/21(金) 00:43:20ID:???
PHPのheader('HTTP/1.0 404 Not Found')ではヘッダのみをブラウザに返しますが、
JSPのresponse.sendError(response.SC_NOT_FOUND)のように、
Webサーバが標準で持っているエラーページを返すようにはできますか?

環境はApache 2.2 + PHP 4.4です。
0611nobodyさん2008/03/21(金) 04:24:10ID:???
>>610
無い
自分で作るか探せ
0612nobodyさん2008/03/21(金) 22:00:08ID:???
>>610
できます
0613nobodyさん2008/03/21(金) 22:53:43ID:???
>>612
レスありがとうございます。
探す気になりました。
0614nobodyさん2008/03/21(金) 22:54:13ID:???
>>610
できません
0615nobodyさん2008/03/22(土) 01:49:48ID:???
HTTPヘッダがすでに送信済みであるかどうかを調べる方法はありますか?
06166152008/03/22(土) 01:52:38ID:???
すみません、解決しました。
0617nobodyさん2008/03/22(土) 18:24:31ID:???
YouTubeのURL
http://www.youtube.com/watch?v=dCiuVMD3lqo
みたいにクエリーをアルファベットで圧縮してくれるライブラリはないでしょうか?
MD5からの変換だと思うのですが
0618nobodyさん2008/03/22(土) 18:34:11ID:???
URIセーフなbase64かな?
0619nobodyさん2008/03/22(土) 18:41:58ID:???
その程度ならライブラリなど探さずとも、PGのアイデア次第でどうにでもなるだろ
つか自作のレベルの話だ
0620nobodyさん2008/03/22(土) 18:46:08ID:???
>>618
そんな感じなんですがbase64より圧縮率の高い方式です
>>619
汎用性あるが技術的難易度高いと思ってます。
0621nobodyさん2008/03/22(土) 18:47:40ID:???
勘違いです。まさに>>618さんの言うようなものです。
0622nobodyさん2008/03/22(土) 18:50:00ID:???
http://labs.cybozu.co.jp/blog/kazuho/archives/2006/01/url_base64.php
>>619さんのいうとおりでした。
0623nobodyさん2008/03/22(土) 18:57:03ID:???
>>617-622
dCiuVMD3lqo
これって何を圧縮してるの?デコードしても意味不明なんだが。
0624nobodyさん2008/03/22(土) 19:46:50ID:???
圧縮というか固有のIDでしょ
どういう風に出してるかはしらないけどハッシュ値には違いない
06256172008/03/22(土) 20:13:30ID:???
md5より今っぽい感じ
0626nobodyさん2008/03/22(土) 20:43:44ID:???
ふーん、そんな文字数(大文字小文字区別するけど)でユニークな値が出せるんだね
0627nobodyさん2008/03/22(土) 20:52:18ID:???
何通りあると思ってるんだよ。
頭大丈夫か?
0628nobodyさん2008/03/22(土) 21:28:40ID:???
md5 -> 128ビット = 3.4E38 通り
youtubeのハッシュの仕様は知らんけど(26+26+10)^11 = 5.2E19通り

頭大丈夫か?
0629nobodyさん2008/03/22(土) 21:30:38ID:???
>>627
62の11乗
・・・いくつ?
0630nobodyさん2008/03/22(土) 21:37:47ID:???
その62進数にするのに良い方法は?
0631nobodyさん2008/03/22(土) 21:46:43ID:???
とりあえず uniqid でも使っておけば?
0632nobodyさん2008/03/26(水) 16:33:53ID:???
PHPというか、WEBアプリの質問です。
ニコニコ動画なんですが、Cookieを削除して、PCを再起動してもログイン状態が保持されています。
ブラウザを閉じているからセッションでもないし、Cookieでもないとなると、
どういう方法でクライアントを識別しているのでしょうか?
0633nobodyさん2008/03/26(水) 17:19:04ID:???
>>632
クッキー削除しきれてないんじゃね?

ニコ動の事詳しく調べてないからあれだけど
ほかに方法といったら
たぶんやらないと思うが
IP,ブラウザの一致とかぐらいだろうし
06346322008/03/26(水) 18:11:39ID:???
>>633
やっぱり一般的な方法ではできないですよね。
ありがとうございました。
0635nobodyさん2008/03/26(水) 18:16:10ID:???
ニコ動はクッキー使ったごく一般的な方法だよ
ログイン状態が残ったのはクッキーが削除できてなかっただけ
0636nobodyさん2008/03/28(金) 16:03:50ID:???
PHP Version 5.2.4

 test.html から test.php にフォームからPOSTで値を渡して
スーパーグローバル変数$_POST["xxx"]で値を受け取るという動作がなぜか出来ません・・・
エラーも吐かずに遷移したページが空白で開きます

php.iniの設定にスーパーグローバル変数のオン、オフを切り替える設定があるのでしょうか?
どこをいじれば良いのか詰まってしまいました
0637nobodyさん2008/03/28(金) 16:06:29ID:???
register_globals
0638nobodyさん2008/03/28(金) 16:07:23ID:???
こっちか
variables_order
0639nobodyさん2008/03/28(金) 16:13:15ID:???
>>637
レスありがとうございます

何かの具合でphp.iniをいじらずに解決してしまいましたが
variables_orderについてちょっと勉強しようと思いますm(_ _)m
0640nobodyさん2008/04/10(木) 13:40:02ID:IwYW1Fis
お知恵を貸していただきたいのですが。

今日の日付を得て、日曜日(もしくは月曜日)始めで一週間とした場合の、
その週の頭の日付を得るという感じのことはできますか?
例えば今日だったら4月10日ですので、その週の頭の日曜日は4月6日で
「20080406」というように出力する感じです。
また今月の4月3日の場合は「20080330」で値を出力したいんですが。

よろしくお願いします。
06416402008/04/10(木) 14:02:15ID:???
週またぎ以外は
<?php
$week_head_date = date("Ymd") - date("w");
print $week_head_date;
?>
でできました。
06426402008/04/10(木) 14:54:01ID:???
たびたびすいません。
641に書いた記述で月をまたぐ場合もOKなのでしょうか?
上記記述で640に書いた
>4月3日の場合は「20080330」で値を出力したい
が実現できるかどうか教えていただければ幸いです。
0643nobodyさん2008/04/10(木) 15:10:08ID:???
strtotime("last Sunday")
06446402008/04/11(金) 09:19:52ID:???
>>643
ありがとうございました。
そんな簡単でいいとは…。
0645nobodyさん2008/04/12(土) 12:53:46ID:4H+Fs9R3
iniファイルの内容を修正する関数ってありますか?
0646nobodyさん2008/04/12(土) 13:54:57ID:???
iniファイルは普通動的に書き換えるもんじゃないよ
0647nobodyさん2008/04/12(土) 14:34:06ID:???
>>646
さすがに無理でしたか。
じゃあ、自力で修正します
0648nobodyさん2008/04/12(土) 15:01:22ID:MYUBBi8A
素人ですが教えて下さい。

エスケープ処理とSQLインジェクション対策について良く理解できていないのですが、
現在php.iniのmagic_quotes_gpcがonになっていてエスケープ処理が行われます。
これによりフォーム入力されたデータに\が付いているのですが、そもそもこのエスケープ処理
は、DBに\が付いたまま書き込ませるためにあるのでしょうか?
stripcslashes関数などで\を除去してから書き込んだら意味がないのでしょうか??

よろしくお願いします。
0649nobodyさん2008/04/12(土) 15:30:42ID:???
offにして自分でエスケープしましょう。というかプレースホルダ使いましょう。
0650nobodyさん2008/04/12(土) 18:39:37ID:4d6dvCtN
ある処理をしたらメールを送るようにしたいのですが、うまくいきません
apache2.2.4
PHP 5.2.3
ArGOsoft
OS windows xp
という環境です。

IMAPを使ってメールを送るというのは分かってきましたがモジュールの追加が出来ないようです
php.iniよりextention=php_IMAP.dllの「;」も外し、apacheも再起動しましたが
get_extension_funcs("imap");で使えるか調べるとダメみたいです
なにが足りないのでしょうか?
0651nobodyさん2008/04/12(土) 19:13:39ID:???
windows版PHPなんて触る気ないのでよく知らないが、普通にmail / mb_send_mailで送信できないん?
0652名無しさん@アイコンいっぱい。2008/04/12(土) 19:25:23ID:QH24pWr1
アフィリエイターはなぜ3ヶ月でやめるのか?
http://kakitarou.com/url/files/accel.html
06536502008/04/12(土) 19:47:17ID:???
>>651
やってみましたがmb_send_mailの前に
mb_language("Japanese");を入れているのですが、mb_languageですでにコケてます・・・
0654nobodyさん2008/04/13(日) 08:42:00ID:???
mbstringが入ってないってこと?
それならmailで、日本語は自分でエンコードする。
0655nobodyさん2008/04/14(月) 18:50:19ID:zmu1J1y2
画像掲示板スクリプトを改造していて、PHPマニュアル等を調べてもズバリな回答にたどり
つけなかったため質問させてください (使っている PHPのバージョンは 5.2.5 です)

画像ファイルのデータサイズを取得、3桁区切りさせたくて以下のように書いて成功しました

掲示板PHPスクリプト内で ― (α)
$sizeorg = filesize($img)
$size = number_format($sizeorg)

HTMLテンプレート側に
{$size}

ですが、(α)の書き方をもう少しスマートに、雰囲気的には
$size = number_format(filesize($img))
のようにまとめたく、参考になりそうな情報を教えていただければありがたいのですが
どうぞよろしくお願いいたします
0656nobodyさん2008/04/14(月) 19:44:26ID:???
$size = number_format(filesize($img)) でいいんじゃ?
0657nobodyさん2008/04/14(月) 19:45:30ID:???
テンプレートってSmarty?

俺の場合number_formatを修飾子にしちゃってる(結構常識?)
$smarty->register_modifier("number_format","number_format");

で
{$sizeorg|number_format}
が俺的にはスマート
表示の問題をテンプレートで完結できるからね
■ このスレッドは過去ログ倉庫に格納されています