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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2008/06/13(金) 20:32:36ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

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



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

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0893nobodyさん2008/11/18(火) 12:48:09ID:???
>>889
windowsです。
0894nobodyさん2008/11/18(火) 12:48:43ID:???
>>892
普通はCP932(SJIS-WIN)
0895nobodyさん2008/11/18(火) 13:13:57ID:???
ああそれで俺もファイル名の文字化けに悩んだ記憶がある
0896nobodyさん2008/11/18(火) 14:27:45ID:VeQnY2gN
今IDとパスのログイン画面で次回からログインを省略するチェックボックス
を作ってます。チェックを入れるとsession_set_cookie_paramsを
1年に設定してるんですが一度ブラウザを閉じるとセッションも切れてしまいます・・・
下に簡単なソースを載せますので
すいませんがアドバイスよろしくお願いします。

login1.php
<?
session_set_cookie_params(365*24*3600);
session_start();
$_SESSION["name"] = "こんにちは";
echo "セット";
echo "<a href=\"login2.php\">移動</a>";
?>

login2.php
<?
session_start();
echo $_SESSION["name"];
?>
0897nobodyさん2008/11/18(火) 16:17:38ID:???
やってみたけど俺の環境だと残ってたよ
firefox?
08988962008/11/18(火) 16:33:43ID:???
>>897
返答ありがとうございます。
環境はIE7、Firefoxです。
最初にlogin1.phpにアクセスし
セッションを設定して移動をクリックすると
login2.php にもセッションが引き継がれるんですが
その後ブラウザを閉じ次にlogin2.phpにダイレクトにアクセスすると
$_SESSION["name"] = "こんにちは";が表示されず
真っ白になります・・・
0899nobodyさん2008/11/18(火) 17:09:56ID:???
自動セッション開始のディレクティブも考慮して、
クッキーの有効期限はsetcookieで設定した方がいいぜ
session_startする前に実は開始してて、有効期限の上書きが出来ないことがあるから
0900nobodyさん2008/11/18(火) 17:36:13ID:s+xeZpDT
質問です。
変数$strをintにキャストしたいのです。
ご教授お願いします。
$str = "ST012300";
$str = (int)$str;
$num = 100;
$num += $str;
echo $num; ←ここで出力


0901nobodyさん2008/11/18(火) 17:57:13ID:???
STのところが必ず2文字ならsubstrで切り取ってからキャストすればいいんでないの?
0902nobodyさん2008/11/18(火) 18:34:52ID:???
>>900
適当に書いたがこんな感じか?

function toInt($string) {
$temp = "";
for ($i = 0; $i < strlen($string); $i++) {
if (preg_match("/[0-9]/", $string[$i])) {
$temp .= $string[$i];
}
}
return (int)$temp;
}
0903nobodyさん2008/11/18(火) 18:40:56ID:???
>>902 おまえアホだろ。なんのためにpreg_matchつかってるんだよ。
0904nobodyさん2008/11/18(火) 18:53:16ID:???
>>903
1文字ずつ分解するのが無難なやり方でないかと
preg_match_allが俺の環境じゃ使えないから使わなかっただけというのもあるけど
preg_matchだけでくり抜ける?
例に出てるST012300なら簡単だけど
o89WE342hEU44とか2バイト文字が入ってきたりすると
俺のレベルじゃ1回の正規表現で抜き取れない
09058962008/11/18(火) 18:54:44ID:???
>>899
session_startする前に開始している時もあるんですね。
アドバイスいただいたやり方で一度やってみます。
ありがとうございました!
0906nobodyさん2008/11/18(火) 18:54:48ID:???
元質問者の必要なものがどれかによるだろうけど、
飛び飛びの数字くっつけて1つの数字にすることに意味があるのか?
0907nobodyさん2008/11/18(火) 18:56:46ID:???
is_numericでいいじゃん
あと引数に配列渡された場合どうすんのとか
0908nobodyさん2008/11/18(火) 19:15:25ID:???
>>907
is_numericでもいいけどpreg_matchでもいいじゃん
>>903の突っ込みはpreg_match使うなら1回で抜けってことではないの?
その方法が思いつかなかったから聞いてるんだけども
>あと引数に配列渡された場合どうすんのとか
それは配列用のを別に作るべきでしょ
PHPじゃオーバロードできないけど
0909nobodyさん2008/11/18(火) 19:20:22ID:???
preg_matchで行うことに何の利点があるの?
0910nobodyさん2008/11/18(火) 19:26:49ID:???
強力な正規表現が使える。
逆に言うと正規表現がわからないと混乱するだけ。
0911nobodyさん2008/11/18(火) 19:34:38ID:???
>>909
普段よく使うから使っただけだよ
is_numericなんて使ったことなかったし

まぁ気になったんで
>>902で書いた関数で文字列に適当なwebサイトをfile_get_contentsしたものを使って
is_numericとpreg_matchの比較ベンチとってみたけど
is_numericのほうが早いね

速度面では特に利点はないみたいだ
ただ>>910もいってる通りうまく使える人なら1行でスッキリと1回で抜けると思う
オーダなんかは1文字ずつ比較するのとたぶん変わらないと思うけど
0912nobodyさん2008/11/18(火) 20:47:26ID:???
$str = "ST012300";

という前提があるなら、漏れなら、

ereg( '(\d+)', $str, $regs );

echo $regs[1];

と書く。
0913nobodyさん2008/11/18(火) 20:52:15ID:???
どういう前提だよw
文頭がアルファベットか?文字数が8文字か?数字が0〜3までか?
数値が連続してるなんて前提ねーよw
0914nobodyさん2008/11/18(火) 20:55:45ID:???
>>900
盛り上げていただいてありがとう御座います。
参考にさせていただきます。
0915nobodyさん2008/11/18(火) 20:56:46ID:???
お前はすっこんでろ
0916nobodyさん2008/11/18(火) 20:57:31ID:???
最初に現れた数字列を引っ張ってくるという前提だ。
0917nobodyさん2008/11/18(火) 21:48:50ID:/cO8JIvu
開発環境はXAMPPで作ってる初心者で質問なんですが、
PHPからDB2に接続するにはどうしたらいんですか?
MySQLからDB2に移行したいんです!何か特別な設定とかいります?

カタログ接続とかの意味がよく分からないです^^;
0918nobodyさん2008/11/18(火) 21:57:01ID:???
初心者ならXAMPPを使うな
0919nobodyさん2008/11/18(火) 22:05:18ID:???
>>917
それより何故DB2? MySQLの方が圧倒的に楽じゃん。
0920nobodyさん2008/11/18(火) 22:05:36ID:???
>>917
XAMPPはDB2じゃないからあきらめてね
DB2使うならPEARかPDO使えば
0921nobodyさん2008/11/18(火) 22:32:54ID:???
>>917 ODBC経由
0922nobodyさん2008/11/18(火) 23:49:32ID:???
<?php
$file ='test.html';
$fp = fopen($file,"w");
$str = array('aaa\n','bbb\n');
file_put_contents($file, $str );
fclose($fp);
?>

複数行の書き込みをしたいのですが、これだとできません。
教えて下さい。
0923nobodyさん2008/11/18(火) 23:51:48ID:???
なんでarrayなの?
0924nobodyさん2008/11/18(火) 23:54:15ID:???
'aaa\n'と"aaa\n"は違う
0925nobodyさん2008/11/19(水) 00:04:54ID:???
>>924
できました。ありがとうございます。
0926nobodyさん2008/11/19(水) 01:53:56ID:???
条件分岐をさせてMySQLのデータを削除しようとしているのですが

$pass1 = $_POST["pass"];
  if($pass1=="●●"){
  $sql = "delete from object where id = $id";
  mysql_query($sql);
  echo "削除されました";
  exit;
}

●●の部分をMySQLに格納しているパスワードに
したい場合はどうすればいいのでしょうか?
MySQL側の質問になってしまうかもしれませんがお願いします。
0927nobodyさん2008/11/19(水) 02:16:00ID:???
htmlタグをprintするときに、
"のエスケープをせずに済む方法ってありますか?
大量のhtmlタグをprintするのが大変なのでそのような関数があれば
教えていただきたいです。
0928nobodyさん2008/11/19(水) 02:22:55ID:???
>>926
それの前にクエリ発行して格納しているパスワードを取ってくれば?
>>927
シングルクオートにすれば?
0929nobodyさん2008/11/19(水) 02:22:59ID:???
関数じゃないけどヒアドキュメント
0930nobodyさん2008/11/19(水) 02:30:59ID:???
>>929
ヒアドキュメントの中に変数って使えますか?
09319262008/11/19(水) 02:32:56ID:???
>>928
うぉぉぉぉできました!!!
すっごい単純なことだったのに完全に頭が固くなってました!
ありがとうございます!!
0932nobodyさん2008/11/19(水) 03:07:53ID:???
>>928
>>929
アドバイスありがとうございました。
テンプレート作って置換したら簡単にできました。
0933nobodyさん2008/11/19(水) 09:43:10ID:???
すいません
ご存じなかたがいらっしゃったら教えていただけると幸いです

自作のスクリプトをばらまこうと思ってるのですが
ファイル構成やパーミッションまわりが複雑だったりするので
インストールウィザードをつけたいと考えてます
自己解凍形式みたいに
フォルダやパーミッションや簡単な設定項目(置換)を指定すると
そのとおりに設定して展開してくれるようなスクリプトはありますでしょうか?

なければ作ろうかと思うのですが
需要ありますでしょうか?

一通り探したつもりですが見つかりませんでした

よろしくお願いします
0934nobodyさん2008/11/19(水) 10:15:16ID:???
>>933
パーミッションってことはOSX含めたUnix系OSだよね?
RPMパッケージでも作ればいいんじゃない?
というか展開したファイルのパーミッションを変えるスクリプト1つ置くだけでいいのでは?
複雑な設定項目とかはインストール後に管理スクリプトからやればいいだけだし
そもそもサーバでそんなもの展開してインストールするようなのは自鯖か専鯖持ちぐらいでしょ
ターゲットの範囲が狭すぎてそのためにわざわざ凝った作り考えるのもあほくさいわ
09359332008/11/19(水) 10:58:08ID:???
>>934
レスありがとうございます

移動中の携帯からの投稿だったため情報が足りませんでした
ここでいうスクリプトはPHPのスクリプトで
ターゲットはLinux+レン鯖を考えています

処理の流れ的には
1.自己解凍PHPにWEB経由でアクセス
2.DIRパスやそのスクリプトの起動に最低限必要な定数を設定
3.指定DIRに展開
4.自分自身を削除(オプション)+そのスクリプトの設定画面へリダイレクト(あれば)

単一ファイルにまとめたかったのは
・配布しやすそう?
・WEB公開DIRに必要ないファイル(incとか)を置きたくない
 (必要ないファイルの置き場所は自由なため、公開DIRからの相対パス指定は難しい)

確かにインストールスクリプトを一個用意しておけばいい気もしますね・・・
0936nobodyさん2008/11/19(水) 13:10:11ID:???
>>935 需要あれば作るんじゃなくて、
作ったあとに需要あれば使って下さいの方がいいと思うよ。

ぞれより自己解凍PHPってのがなんなのか気になる
0937nobodyさん2008/11/19(水) 13:22:48ID:???
たとえば$msg=htmlspecialchars($_POST['message'],ENT_QUOTES);で、POST(message)を取得したとして、その中身がなかった場合って$msgは存在しないことになるんですかね。
if($msg)ってやったらfalseでした。
それとも$msgってなまえの変数は有っても中身がない場合はfalse?
0938nobodyさん2008/11/19(水) 13:27:45ID:???
htmlspecialchars関数の戻り値ぐらいマニュアルに載ってない?
09399332008/11/19(水) 14:03:57ID:???
>>936
確かに
作ってみます

ありがとうございます

自己解凍PHPとか言ってますが
単純に自身のPHPにファイルやらディレクトリ構成を埋め込んでるだけです
アクセスすると入力域が現れて・・・てな感じです
0940nobodyさん2008/11/19(水) 14:29:26ID:???
> 単純に自身のPHPにファイルやらディレクトリ構成を埋め込んでるだけです
> アクセスすると入力域が現れて・・・てな感じです

それが気になる。ウェブ上からインストールできるってこと?
0941nobodyさん2008/11/19(水) 14:53:34ID:???
インストールスクリプトでないなら意味が分からん.圧縮してんの?
なんで初心者なのに用語を自作するのか
0942nobodyさん2008/11/19(水) 15:21:15ID:???
ひらがな・カタカナ・数字・アルファベット・シフトJIS第一・第二水準漢字
以外の物を調べるにはどうしたらいいですか?
具体的にはJIS補助漢字・第三・第四水準漢字や台湾、中国語などには
エラーと表示させたいです。
0943nobodyさん2008/11/19(水) 15:29:40ID:???
>>942
ttp://euc.jp/i18n/charcode.ja.html
どの文字コードを使うかによって変わると思うけど
こういったとこで範囲しらべて正規表現でチェックするといいかも?

ここも参考
ttp://www.phppro.jp/phptips/archives/vol9/1

0944nobodyさん2008/11/19(水) 15:57:48ID:???
>>943
ありがとうございます。
09459332008/11/19(水) 16:07:24ID:???
>>940
はい、そのとおりです
適当な公開ディレクトリにファイルを一個ぽいっとおいて
アクセスしてWEB上でパスの設定などをしてsubmitすると
設定に基づいて展開したりシンボリックリンクを作ったり文字コード変えたり設定情報を書き込んだりします

>>941
申し訳ない
PHPで自己解凍みたいのできたらいいなイメージから思いついたので・・・
今動いているのは圧縮してないですが、あとでgzipをかけたいと考えています

低機能なインストールスクリプトと思ってください
最低限の設定を行ってさらに設定が必要なら(データベース作るとか)それぞれの設定WEBにリダイレクトします
既存のインストールスクリプトと違うところは
・ファイルひとつだけでOK
・複数台のサーバ配布に対応(scpばらまき)・・・予定(作成中)

結局のところ展開してアップすればええやんって気もしてきましたorz
09469332008/11/19(水) 16:29:07ID:???
似たようなの見つけました
ちょっと機能は違いますがコンセプトは似ているような気がします
ttp://labs.cybozu.co.jp/blog/kazuho/archives/2008/11/post_3.php
0947nobodyさん2008/11/19(水) 19:46:11ID:???
>>933 まずは作ってみようよ
0948nobodyさん2008/11/20(木) 03:17:06ID:???
改行がなくならないように
mb_convert_encodingを使う方法ってありますか?
0949nobodyさん2008/11/20(木) 03:17:23ID:???
なくなんないべ
0950nobodyさん2008/11/20(木) 03:21:12ID:???
>>949
ありがとうございます。
勘違いしていたようです。
0951nobodyさん2008/11/20(木) 04:28:16ID:???
ファイルの最終更新時間のUNIXタイムスタンプを
取得したいのですが、
time()は引数がないのでどうしたらいいですか?
0952nobodyさん2008/11/20(木) 04:31:17ID:???
3行目が意味不明だけど
filemtimeかstat
0953nobodyさん2008/11/20(木) 04:38:25ID:???
>>952
ありがとうございました。
0954nobodyさん2008/11/20(木) 05:24:16ID:???
正規表現でマッチしない行を
削除するにはどうしたらいいのでしょうか。
0955nobodyさん2008/11/20(木) 07:43:03ID:???
マッチした行を連結すればいいだけ
0956nobodyさん2008/11/20(木) 07:54:07ID:???
マッチさせて空白に置換すりゃいいじゃん
0957nobodyさん2008/11/20(木) 14:54:48ID:???
$logは
sample(9)
sample(241)
sample(3234)
などの複数行のファイルでカッコ内の数字が一ケタの場合
その行を削除したいのですが、
$search="/.+\([0-9]\)/";
$log = eregi_replace($search,"",$log);
これだとできません。教えて下さい。


0958nobodyさん2008/11/20(木) 15:21:21ID:???
preg_replace("/.*?\(\d\)\n/", "", $log)

こうかな
0959nobodyさん2008/11/20(木) 17:03:07ID:???
>>958
できないです。
0960nobodyさん2008/11/20(木) 17:16:11ID:???
できました。
0961nobodyさん2008/11/20(木) 17:17:34ID:???
今後のためにもどうやったらできたのか教えてよ
0962nobodyさん2008/11/20(木) 17:24:44ID:???
>>961
すいません。
>>958さんの方法でできました。
他のところが間違えてました。
0963nobodyさん2008/11/21(金) 04:12:35ID:???
$logは複数行あるテキストファイル
$logArray = explode("\n",$log);

for($i=0;$i<=count($logArray);$i++)
{
$dat[$i] = substr($logArray[$i],0,10);
print $dat[$i].'<BR>';
}
結果はちゃんとprintされているんですが、
Notice: Undefined offset: 80 C:\Program Files(略) on line 24
っていうのがでるんです。
24行目は$dat[$i] = substr($logArray[$i],0,10);です
0964nobodyさん2008/11/21(金) 05:54:07ID:???
$logArray = explode("\n",$log);

↓

$logArray = @explode("\n",$log);
0965nobodyさん2008/11/21(金) 07:11:18ID:???
$i<count($logArray)

ループ条件はこうちゃいますのん?
0966nobodyさん2008/11/21(金) 07:17:08ID:???
>>963
大域(forの外)で$datは宣言されてるの?
$dat = array();
あとループ条件は>>965
ちなみにエラーが出たラインの1行前(つまり23行目)に原因がある場合があるから
付近のソースを出すのが望ましい
0967nobodyさん2008/11/21(金) 07:19:59ID:???
$dat[$i] = substr($logArray[$i],0,10);
print $dat[$i].'<BR>';

というかfor文の外で$dat使わないなら
echo substr($logArray[$i], 0, 10);
でいいのでは?
それとも他の部分でも使ってるのかな?
0968nobodyさん2008/11/21(金) 07:31:53ID:???
>>967
何が違う?
>>964-967
つか単に$logArray[80]が無いよって言ってるだけだろ
0969nobodyさん2008/11/21(金) 08:08:07ID:???
>>968
やってることは違わないけど
変数に入れる必要がないってこと
他で使ってるなら別だけど
0970nobodyさん2008/11/21(金) 08:09:10ID:???
>>969
違う前半部分について
もしかしてただの引用か
0971nobodyさん2008/11/21(金) 08:11:48ID:???
>>969
あぁ
>をつけるべきだったね
すまぬ
0972nobodyさん2008/11/21(金) 08:12:25ID:???
>>969じゃなくて>>970ね
0973nobodyさん2008/11/21(金) 09:24:31ID:???
次スレそろそろ頼む
うち規制中だった
0974nobodyさん2008/11/21(金) 19:13:59ID:???
>>963ですが、>>965さんの方法で解決しました。
$datは使い回すので新しい変数を作りました。

0975nobodyさん2008/11/21(金) 19:35:00ID:???
ほうほう,それで?
0976nobodyさん2008/11/21(金) 22:09:32ID:???
質問

ウチが使ってるレンタルサーバーが

>CGI版をラッパーを使用し
>所有者の権限にて動作させる

>一部の動作で、モジュール版と
>挙動が違う可能性があります。

っていう方式なんだが、これってどういうこと?
0977nobodyさん2008/11/21(金) 23:07:45ID:???
>>976
http://www.google.com/search?num=50&hl=ja&safe=off&q=PHP+CGI+%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB+%E9%81%95%E3%81%84&lr=lang_ja
0978nobodyさん2008/11/22(土) 01:09:16ID:3EI7zmLa
先生方、質問させてください。
以前からHTMLでサイトを作っていたのですが、どうしても静的なものしかできずに
ただ見てもらうだけのサイトしか作れません。
なので、サイト訪問者にデータを追加してもらったりデータの閲覧ができたりと
もっと双方向での情報交換ができるサイトを作りたいと思ってます。
なのでPHPを勉強しようと思っているのですが、今私が目指しているところは
PHPを勉強するという道で間違ってはいないでしょうか?
そして、PHPを勉強するにあたって、わかりやすいお勧めの本やサイトがあったら教えてください。
知識としてはHTMLで見せるだけの簡単なサイトを作れる程度です。
どこから勉強すればいいのかわからないのですが、PHPに入るときに読む本、
PHPを実用的に使えるような本があったら教えてください。
お詳しい先生方、ぜひよろしくお願いいたします。
0979nobodyさん2008/11/22(土) 01:16:08ID:???
>>978
先生でも何でもないけど、PHPマニュアルに勝る良書は無いかと。
http://www.php.net/manual/ja/
PHPは「いかに楽してウェブシステムを作るか?」っていう言語だと俺は思う。
それで良いなら選べば良いしそれが嫌なら他の言語を選ぶといいかなと。

勉強については、まずHTMLの<form>タグの概念が分かってないならそれからまず勉強。
あとは自分が作りたいと思うもの(例えば掲示板)のPHPスクリプトソースをネットから拾ってきて、
それを少し改造してみるとかね。
PHPって良い意味でも悪い意味でも適当な言語なので、多分何とかなると思う。
0980nobodyさん2008/11/22(土) 01:22:31ID:???
PHPでもできるけどPHPだけが選択肢じゃないことに注意
目的のものを達成するPHPのフリーソフトにPukiWikiやXOOPSなんていうものがあったりする
自分で作るより手っ取り早いのはそれらをインストールして利用すること
PHPは公式マニュアルが充実しているのでそれを読むのがお勧め
http://jp.php.net/manual/ja/index.php
また入門本として
PHP4徹底攻略(通称:赤マンモス本)がpdfで無料公開されている
http://www.sra.co.jp/people/t-ishii/php_new/php4_new.html
現時点のPHPの最新版はPHP5でもうじき6が出るので
少し情報は古いがどんなものかをつかむには最適な本なので
無料ということもあるのでちょっとかじる程度に読んでみてはいかがだろうか?
0981nobodyさん2008/11/22(土) 01:57:14ID:???
>>978
まずはxamppのインストールからだな。
インターネットの接続にルーターはかませてるよね?
0982nobodyさん2008/11/22(土) 01:58:07ID:???
>>979
まずはphpを実行できる環境を整えるところからでしょ。
いきなりphpのマニュアルを勧めてどうするの。
0983nobodyさん2008/11/22(土) 02:03:21ID:???
>>978
http://www.google.co.jp/trends?q=php%2Cruby%2Cperl%2Cpython

phpを選択したことは正解です。
0984nobodyさん2008/11/22(土) 02:16:26ID:???
何言ってんだ。
いきなり実行環境を作るより
プログラミングの基礎と概念を理解する方が先だろう。
何でもかんでも手を動かしてやりゃいいってもんじゃない
0985nobodyさん2008/11/22(土) 02:20:06ID:lJIGiW+2
大核本
0986nobodyさん2008/11/22(土) 02:28:04ID:???
>>984
と言って自著を買わせる教授なのであった
0987nobodyさん2008/11/22(土) 02:31:54ID:???
巷の入門本なんて、サンプル載せてさぁ打ってみましょう動いたらあなたもプログラマーです!
みたいなもんばっかだろう
0988nobodyさん2008/11/22(土) 03:24:41ID:???
質問者はこういうことをする場合PHPを使えばいいのか?と聞いていて
PHPを使えばいい場合勉強するにあたってお勧めの本やサイトを教えてくれと聞いてるわけだ
0989nobodyさん2008/11/22(土) 03:25:53ID:???
うん、だからどうした
0990nobodyさん2008/11/22(土) 03:54:53ID:???
キメエっつってんだよ
0991nobodyさん2008/11/22(土) 04:04:23ID:???
実行環境云々は余計なお世話ということだ
0992nobodyさん2008/11/22(土) 04:25:38ID:???
要するに>>981がPG的にもコミュニケーション的にも低脳ってこtか
レス数が950を超えています。1000を超えると書き込みができなくなります。