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

【PHP】下らねぇ質問はここに書き込みやがれ 70

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2008/06/25(水) 10:14:08ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0822nobodyさん2008/07/12(土) 20:05:52ID:???
速度が変わらないとか適当なことを書いて、間違いを指摘されて、そのサイトに責任を擦り付けて……
0823nobodyさん2008/07/12(土) 23:07:04ID:???
>>806
回答ありがとうございます
お礼遅くなってすいません助かりました

0824nobodyさん2008/07/12(土) 23:12:48ID:mrNymcfj
HTMLのselectやcheckboxってループで書き出してる?
それともベタ書き?
0825nobodyさん2008/07/12(土) 23:14:33ID:???
フレームワークの関数使ってる
0826nobodyさん2008/07/12(土) 23:35:07ID:???
Smartyののプラグイン関数使ってる
0827nobodyさん2008/07/12(土) 23:54:12ID:mrNymcfj
フレームワークやテンプレートエンジンを使わない場合で
0828nobodyさん2008/07/13(日) 00:15:54ID:???
ループで済ませた方が楽そうな場合はループを使ってる
好きにすればいいと思う
0829nobodyさん2008/07/13(日) 00:45:09ID:???
>>827
なぜに?
08308242008/07/13(日) 01:13:33ID:???
>>828
ぁぃ、好きにしまふ

>>829
フレームワークやテンプレートエンジンを使おうと思う前に作った、
一人で開発してる携帯サイトだから
0831nobodyさん2008/07/13(日) 01:16:44ID:???
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:hoge="http://purl.org/rss/1.0/modules/content/"
>
<channel>
<title>あ</title>
<link>http://example.net/<;/link>
<description>ほげ</description>
<hoge:fuga>aaaa</hoge:fuga>
</channel>
</rss>

こんなようなXMLを出力したいんですけどDOMだとうまくいきません
どうやったら出来ますか?
08328312008/07/13(日) 01:21:08ID:???
あ、OSはWindowsでApache 2.2.6を使い PHP 5.2.3で動かしています
new DOMElement('hoge:fuga')
とやると例外が発生してしまいます
0833nobodyさん2008/07/13(日) 01:33:48ID:???
>>830
使え
>>832
どううまくいかないのか書いてくれたのは素晴らしいことだけど
例外は何が例外だったのかちゃんと教えてくれているはずだが?
0834nobodyさん2008/07/13(日) 04:22:28ID:???
PHP初心者から来ました。
基礎からのPHPで勉強していざブログアプリケーション
を作ろうと思ったのですが、このサンプルlinuxでは動かないと
担当者に言われました。
2ちゃんの方や自分でadmin.phpなどは動くようにしたのですが
index.phpとsideBar.phpとentryView.phpと
loginform.phpの部分とかがおかしいみたいで
だめでした。
誰か動くようになんとかできませんか?
ソースは
http://gichioka.web.fc2.com/blog.rar
です。
もう基礎からシリーズは絶対買いません

0835nobodyさん2008/07/13(日) 04:49:33ID:???
>>834
具体的に分からないところを質問してください。
あと>>1読んでください。
0836nobodyさん2008/07/13(日) 07:25:20ID:???
1.その環境にMYSQLがインストールされていない、またはDBの設定がされていない。
2.フレームワークを使える環境が整っていない

loginform.php
<FORM method="post" action="<?= $_SERVER['REQUEST_URI'] ?>">
↑自分にPOSTしてんのにloginform.phpにスクリプトが書かれていない

技術屋に丸投げしたほうが楽だよー
0837nobodyさん2008/07/13(日) 08:23:20ID:???
また、繰り返すのかそのネタをw
08388312008/07/13(日) 13:54:05ID:???
<?php
echo '<pre>';
try {
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->formatOutput = true;
$root = $doc->appendChild(new DOMElement('rss'));
$root->setAttributeNode(new DOMAttr('version', '2.0'));
$root->setAttributeNode(new DOMAttr('xmlns:hoge', 'http://xxxx'));
$channel = $root->appendChild(new DOMElement('channel'));
$channel->appendChild(new DOMElement('title', 'あ'));
$channel->appendChild(new DOMElement('hoge:fuga', 'aaaa'));
} catch (Exception $e) {
echo sprintf("Caught exception %s\n", $e->getMessage()) . $e->getTraceAsString();
}
echo "\n" . htmlspecialchars( $doc->saveXML() );
?>
ソースはこんな感じで実行すると
Caught exception Namespace Error
#0 test.php(11): DOMElement->__construct('hoge:fuga', 'aaaa')
#1 {main}
と出ます。
$channel->appendChild(new DOMElement('hoge:fuga', 'aaaa', 'http://xxxx'));
とやればうまくいくのは分かっているのですがhoge:fugaに毎回 xmlns:hoge="http://xxxx" が追加されるのが嫌なので何とかしたいのですがうまい方法はありますか?
0839ひろき2008/07/14(月) 01:22:49ID:iw+5oFKv
質問があります。以下のスクリプトにセキュリティホールがあるといわれました。構造は
@./のディレクトリに.cgiのファイルがあるかないかチェック
Aファイルがあれば、ファイル名.cgiを呼び出す
ですが、$_GET['file']に%00を付加されれば、チェックを擦り抜けられました。
<?php
$file = $_GET['file'];
echo "file test<br>";
echo "How do it?<br>";
if(!file_exists($file.".cgi")) { echo "file not found<br>"; } else { echo "file found<br>"; }
$x = file_get_contents('./'.$file.'.cgi');
echo $x; ?>
上の場合、チェック機構を擦り抜けられてしまったので、下のように書き加えました。
<?php
function check($arr){ if (is_array($arr)){ return array_map('check',$arr );} return str_replace("\0","",$arr );}
$_GET = check($_GET);
$file = $_GET['file'];
echo "read test<br>"; if(!file_exists($file.".cgi")){ echo "file not found<br>"; }else{ echo "file found<br>"; }
$x = file_get_contents('./'.$file.'.cgi');
echo $x;
?>
しかし、まだセキュリティホールがあると、指摘され、詳細がわからずに困っています。誰か教えてください

0840nobodyさん2008/07/14(月) 02:31:00ID:???
またお前か
08418412008/07/14(月) 04:20:33ID:kV2rLyyb
外部phpをページに埋め込みたいのですが、どうすればいいんでしょうか?
フレーム以外の方法でそのままhtml言語として元ページに融合させたいです。
0842nobodyさん2008/07/14(月) 04:26:54ID:???
>>841
日本語でおk

ちょっと意味がよくわかんないので意図したものになるかはわからないが

a.php

<?php
echo "Hello";
?>

b.php

<html>
<head></head>
<body>
<p><?php include_once("a.php"); ?></p>
</body>
</html>

こういうことか?

外部php(この場合a.php)で最終的にecho(出力)するphp作って
それをb.phpでinclude(require)する
08438412008/07/14(月) 04:27:21ID:kV2rLyyb
phpに対応していないサーバーにあるhtmlページにphpで書いた動的ページを埋め込みたいということです。
frameで呼び出した場合、参照元が変わってしまうので不便で・・・
08448412008/07/14(月) 04:31:31ID:kV2rLyyb
>>842
お、こんな朝早くにありがとうございます。
すみません、ちょっと大事なこといい忘れてしまいました。

なるほど、対応している場合は、こういう風に使うんですか。勉強になります。

842さんの説明で言うところのa.phpを呼び出すほうのb.phpにあたる側のサーバーがphpに対応していなくて・・。
0845nobodyさん2008/07/14(月) 05:00:09ID:???
PHPが使えないんじゃ話しにならないけど
たとえ使えても他サーバのを呼び出すってのはセキュリティ上無理があるね
JavaScriptは外部サイトのでも呼び出せるし
サーバ側で特別な環境が必要のないクライアントサイドの言語なので
PHPが使えるほうでPHPが使えない外部サイト用に
PHPで出力する内容と対応したJavaScriptを生成してそれを外部から呼び出すとか
他にもトリッキーなやりかたがいくつか思い浮かぶけど
JavaScriptでどうこうするのが現実的でないかと
0846nobodyさん2008/07/14(月) 05:58:45ID:???
PHPに対応していないサーバーな時点で、PHP以外の技術を使う必要がある。
スレ違いな気がするが……
08478412008/07/14(月) 05:59:38ID:kV2rLyyb
ありがとうございます、やはり、難しそうですね・・。
<script language="JavaScript">
<!--
document.write ("\<script type='text/javascript' src='data.php?key=dada1', uri, '' charset='UTF-8'\>','\</script\>');
// -->
</script>
こんな感じで呼び出せるでしょうか?
具体的にどんな感じのphpを書いたらいいか教えていただけないでしょうか?
<?php
echo 'document.write("Hello");'
?>
なぜかうまくいかない・・
0848nobodyさん2008/07/14(月) 06:45:20ID:???
いや・・PHP使えないんでしょ?根本的に理解してないような
0849ひろき2008/07/14(月) 06:50:07ID:iw+5oFKv
>>839
の質問誰か答えてください(〇>_<)
よろしくお願いします
0850nobodyさん2008/07/14(月) 08:26:50ID:???
>>847
document.write ("\<script type='text/javascript' src='data.php?key=dada1', uri, '' charset='UTF-8'\>','\</script\>');
これってする必要ないんじゃ?
<script type="text/javascript" src="data.php?key=data"></script>
と直接呼出せば良いような
0851nobodyさん2008/07/14(月) 11:16:52ID:tNLuR7u3
フレームワーク、まずやるならどれですか?Zendとシンフォニーで迷ってます
0852nobodyさん2008/07/14(月) 11:19:41ID:???
>>849
妹か姉いる?教える代わりに交換だ・・ハァハァ
0853nobodyさん2008/07/14(月) 11:30:17ID:???
>>851
Zend
0854nobodyさん2008/07/14(月) 11:55:31ID:???
ありがとうございます
0855nobodyさん2008/07/14(月) 14:30:36ID:???
サブドメインとPHPカウンターを共有させたいんだけど何か方法ないですか?
includeはhttp://〜略〜count.phpと入力するとエラーになってしまいます。
それならばと../www.hoge.com/count.phpとするとドメインより上にはいけないみたいで。

サーバーはxreaを利用しています。
FTPでの見た目上ではすぐ隣のフォルダにあるからアクセスできそうな気はするんですけどね…。

www.hoge.com ディレクトリ
├index.php
└count.php

sub.hoge.com ディレクトリ
└index.php (www.hoge.comにあるcount.phpをincludeしたい。)
0856nobodyさん2008/07/14(月) 14:38:49ID:???
>>847
phpでjavascriptのコードを直接はくんじゃなくて
jsファイルなんかを作ればいいのでは?
08578552008/07/14(月) 14:47:01ID:???
>>841
サーバーによると思うけど、そのhtmlをSSIで動作させれるなら簡単だよ。
<!--#include virtual="外部.php"-->

これでPHPの動作をさせた後にhtmlにそのデータを書き込んでくれる。
俺はこれで昔のshtmlのままカウンターやらアクセス解析やら色々延命させてる。
0858nobodyさん2008/07/14(月) 14:49:44ID:???
あら、勘違いしてた。
別サーバーにあるのを読み込ませたいなら>>857のは使えないね。
0859nobodyさん2008/07/14(月) 14:54:13ID:???
>>855
カウンタ処理簡単なんだから
サブドメインのほうはcount.phpは使わないで
count.phpが使用しているカウント用のファイルなりdbなりに
アクセスがあったら+1する処理をして
そのファイルなりdbなりを読みこんでカウンター表示するとか
ロックを忘れずに

public_html
|-count.php
|-www.hoge.com
   |-index.php
|-sub.hoge.com
   |-index.php

こういう構造でもだめ?

再現できる環境がないので全部憶測だけど
0860nobodyさん2008/07/14(月) 14:55:32ID:???
そもそもエラーの内容書いてないし。
0861nobodyさん2008/07/14(月) 15:22:39ID:???
PHPとAJAXに関する質問です。

AJAX経由でのPOSTの値を受け取れなくて困っています。
全てUTF8保存で他言語ではAjax経験済みです。主要部分のみざっと書きます。

index.php
--------------------------
<button onClick="post();">post</button>

ajax.js
--------------------------
xmlhttp.open('POST','./ajax.php',true);
xmlhttp.setRequestHeader("content-type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send('type=test');

ajax.php
--------------------------
<?
if(isset($_POST['type'])){
echo 'ok';
}else{
echo 'null';
}
?>

といった感じです。'null'はちゃんと返ってきます。
どなたかアドバイスお願いします。
0862ひろき2008/07/14(月) 15:44:15ID:iw+5oFKv
>>839
本当にこの質問答えてください(〇>_<)
よろしくお願いします。

0863nobodyさん2008/07/14(月) 15:58:00ID:???
人に読んでほしいなら
もっと他人が読みやすいソースを書け
0864nobodyさん2008/07/14(月) 16:46:45ID:/EKuYqCm
サイトのカテゴリー毎にメニューを変更するために読み込みファイルを変更していました。

読み込まれる方
neko.php
<?php
 print "ねこ";
}
inu.php
<?php
 print "いぬ";
}

読み込む方
index.php ねこと出したい
<?php
 include 'neko.php';
}
index2.php いぬと出したい
<?php
 include 'inu.php';
}

続きます。
0865nobodyさん2008/07/14(月) 16:47:45ID:???
読み込まれる方に条件分けを全部記入して、読み込む方は条件だけを書いたら楽になるのではないかと考えてみました。

読み込まれる方
hoge.php
<?php
if($hoge == "1"){
 print "ねこ";
}
if($hoge == "2"){
 print "いぬ";
}
?>

読み込む方 ねこと出したい
index.php
<?php
 $hoge = "1";
 include 'hoge.php';
?>

index2.php いぬと出したい
<?php
 $hoge = "2";
 include 'hoge.php';
?>

この場合hoge.phpが読み込んだ時すでに処理されてしまっていて、うまくいきません。
phpのinclude関連のページを読んでいったのですが、まったくこういう考え方が出てきません。
基本的に間違っていると思うのですが、何の関数を使ったら外部のファイルをphpの部品のように読み込めるんでしょうか?
まったく手がかりが無くって検索ができません。
ヒントだけでも教えていただけないでしょうか。
0866nobodyさん2008/07/14(月) 16:53:44ID:???
>>865
hoge.phpの中身をfunctionにしたら?

hoge.php 
<?php 
function response_msg($hoge){
if($hoge == "1"){ 
 return "ねこ"; 

if($hoge == "2"){ 
 return "いぬ"; 

?> 

index.php 
<?php 
 $hoge = "1"; 
 include 'hoge.php'; 
  echo response_msg($hoge);
?> 

index2.php 
<?php 
 $hoge = "2"; 
 include 'hoge.php'; 
  echo response_msg($hoge);
?> 
0867nobodyさん2008/07/14(月) 16:54:48ID:???
hoge.phpは、index.phpと同じサーバ?
別サーバのをHTTPを通して呼んでね?
0868nobodyさん2008/07/14(月) 16:59:16ID:???
同じサーバーです。
ただ読み込むファイルの階層がバラバラなので絶対パスで読んでます。
0869nobodyさん2008/07/14(月) 17:00:19ID:???
>>866
試してみます。
0870nobodyさん2008/07/14(月) 17:00:49ID:???
neko.txt
ねこ

inu.txt
いぬ

いぬと出したい
<?php
readfile 'inu.txt';
?>

ねこと出したい
<?php
readfile 'neko.txt';
?>

そもそもの話になるんだが、>>865の考え方は
「楽に」はなってないんじゃないか?
0871nobodyさん2008/07/14(月) 17:00:50ID:???
>>868
http://example.com/aaa/hoge.phpって?
08728642008/07/14(月) 17:03:10ID:???
>>871
そうです。そのように絶対パスで書いています。
08738642008/07/14(月) 17:08:33ID:???
>>870
それだと最初のファイル分割状態と変わらないので、すいません。
ねこ とか いぬ とか書きましたが、メニューなので本当はリストタグ<li>とかが書いてあります。
一つのファイルだと一気に変更できるので楽になるのです。
今の状態だと、一つ一つファイルを開いて、修正を全部のファイルでしないといけませんので。
0874nobodyさん2008/07/14(月) 17:12:49ID:???
>>872
URLの絶対パスかよ・・・
サーバのファイルシステムの絶対パスを使え
たとえば
/home/www/aaa/hoge.php
08758642008/07/14(月) 17:15:45ID:???
>>874
今試しに相対パスにしてみたらうまく行きました。
狙った階層だけですけど。

その方法も試してみます。
0876nobodyさん2008/07/14(月) 17:19:36ID:???
>>875
コードをincludeしたいならサーバ内のパスでやらないと無理。
http〜は普通絶対パスとは言わない。単なるURL(URI)。
includeするとスクリプトのコードではなく実行結果が返されるよ。
08778642008/07/14(月) 17:34:47ID:???
>>876
うまくいきました。本当にありがとうございます。

>includeするとスクリプトのコードではなく実行結果が返されるよ。
そうなんです。ためしにhoge.phpの<?php ?>はずしてみたら結果だったので、phpの状態で読み込まれていないなぁと思っていたのです。

とても基本的なことだったので、どこのサイトにも書いてなかったのですね。

>>866
せっかく書いてくださったのに、申し訳有りません。
試す前に解決してしまいました。

今回はありがとうございました。
0878nobodyさん2008/07/14(月) 17:38:37ID:???
>>877
http://jp2.php.net/include/
ファイルが読み込まれるときには、読み込まれるファイルの先頭で PHPモードを抜けてHTMLモードになり、
最後に再びPHPモードに戻ります。 このため、読み込むファイル中のPHPコードとして実行する必要があるコードは、
有効なPHPの開始タグおよび終了タグで括る必要があります。

"URL fopenラッパー"が 有効になっている場合(デフォルト設定では有効です)、ローカルなパス名 の代わりに
URL(HTTP経由)を用いて読み込むファイルを指定することが可能です。 URLで指定されたサーバがファイルを
PHPコードとして解釈することが 出来る場合には、HTTP GETを使用してURLリクエストに引数を指定することが
出来ます。これはファイルの読み込み云々やスコープの継承とは関係なく、 ただ単純にスクリプトがリモートの
サーバで実行されて結果がローカルの スクリプトに読み込まれる、というだけのことです。
08798642008/07/14(月) 17:45:54ID:???
>>878
そのページ見ていました。
最初読んだ時、何のことやらさっぱり意味が分からなかったんですよね。
今だと、なんとなく分かります。

その記述の少し上の「基本的なinclude()の例」で例題として、うまく行っている例が出てるんですね。
だから「考え方は間違ってない。何かやり方が間違っているんだろう。」と漠然と思っていました。
0880nobodyさん2008/07/14(月) 17:47:53ID:???
includeやらfileやらのURLラッパーは、WebProg初心者には混乱のもとだよな・・・
0881nobodyさん2008/07/14(月) 17:58:50ID:???
>>879
>URLで指定されたサーバがファイルをPHPコードとして解釈することが 出来る場合には、
>HTTP GETを使用してURLリクエストに引数を指定することが 出来ます。
.phpをPHPとしてパースするサーバならば「GETで変数を渡せる」というだけ。
そのスクリプトのコードを読み込めるわけではない。
逆に言うとそれができるなら、その自分が公開しているアプリや、yahooやgoogleなんかのコードも
外部に丸見えになるってことだぞ。
0882nobodyさん2008/07/14(月) 20:37:04ID:cWY3QFlw
質問させてください。

ImageMagickを使ってGIF画像をトリミングしようとしています。(画像の上下から一定の高さ分ずつ削った画像を作ろうとしています)
最初Imagickエクステンション(というのでしょうか)を使って
----------------------------------------------------------
$im = new Imagick(画像ファイル);
$im->chopImage(0,削りたい高さ,0,0);
$im->chopImage(0,削りたい高さ,0,残したい高さ);
$im -> setImageExtent($im->getImageWidth(),残したい高さ);//※1
---------------------------------------------------------
のような感じで行って、上手く行きました。
まず、画像の上下を削り、トリミングをしたときに残る、画像の余白を、※1の処理で、削除する作業を行っています。

さて。ロリポップ上で、上記の処理を行う必要があるため、
コマンドで処理を行う必要があり、上記のプログラムを書き直す必要が出てきました。

そこで、下記のような感じで行ってみたのですが、
-----------------------------------------------------------
convert -gravity center -crop 横x縦+0+0 元画像ファイル 出力画像ファイル
-----------------------------------------------------------
Imagickエクステンションの時に行っていたのと同様に、
画像に余白が出来ます。

しかし、その余白を消す方法が見つかりません。
-geometry (縮小されてしまう)
-trim   (変化無し)
-resize  (縮小されてしまう)
など、いろいろ試してみたのですが、
使い方が悪いのかもしれませんが、上手く行きません。
よい方法はありませんでしょうか。よろしくお願いします。
0883nobodyさん2008/07/14(月) 20:39:15ID:???
申し訳ありません。あげてしまいました。
0884nobodyさん2008/07/14(月) 20:42:17ID:???
>>12が正しいテンプレです
質問者はあげてIDを出さないと回答してもらえません
08858822008/07/14(月) 20:50:15ID:cWY3QFlw
>>884
早速教えていただきありがとうございます。

ぐだぐだで失礼しました。

環境ですが
サーバーは、前述のとおりロリポップを予定していますが、
現在はまだ自前のWinXpSP2+xampp(16.6a)で動作させております。

PHPは5.2.5
ImageMagickは6.4.1-Q16

となっております。
0886nobodyさん2008/07/14(月) 22:10:07ID:???
PHPじゃなくてImageMagickの質問だと思うんですが?
0887nobodyさん2008/07/14(月) 22:15:08ID:???
ImageMagickはPHPじゃないということですか?
0888nobodyさん2008/07/14(月) 22:20:10ID:???
Same "オフィスはWindowsじゃないということですか?"



0889nobodyさん2008/07/14(月) 22:57:34ID:???
>>887
http://ja.wikipedia.org/wiki/ImageMagick
0890nobodyさん2008/07/14(月) 23:07:40ID:BjvrU7ew
質問させて下さい。
PHP5を使っています。
PHPの正規表現関数を使ってデータを取得しようと思っているのですが上手くいきません
<INPUT maxLength=20 name=id value="">
このような文字列を対象に、文字列「type」が含まれていない場合、後方の「maxLength=20 name=id value=""」
を取得したいのです。
全文に対して繰り返し取得したいのでpreg_match_allを使っています。

preg_match_all( "/<input (^type)[^<](.*?)>/is", $data, $matchs )
このように書いたのですがヒットしてくれません。
ドキュメントを見ると、特定文字に関しては[^a-z]のような書き方で対応できるのですが
文字列に関してはどのようにすればよいのでしょうか?
アドバイス頂ければ幸いです。
宜しくお願い致します。
0891nobodyさん2008/07/14(月) 23:47:05ID:???
>>890
正規表現スレへいってらっしゃい
08928902008/07/15(火) 00:10:30ID:???
>>891
レスありがとうございます。そちらへ行かせてもらいます。
0893nobodyさん2008/07/15(火) 02:56:06ID:???
893
0894nobodyさん2008/07/15(火) 08:53:55ID:3TGKEqvg
どこでお聞きしたらよいか分からず、ここでお聞きします。
適切なスレがありましたら、ご誘導下さい。

httpsは、httpに比べてデータが暗号化されてパイプを流れると聞いたのですが、
それは本当でしょうか?
httpsから始まるサイトを閲覧して、ブラウザのソースを表示を押したところ、
ソースが丸見えでした。ソースというのは、htmoソースのことです。

そのサイトのセキュリティーのせいなのか、それとも暗号化されるのは別のデータなのか?
そこがよく分かりません。

ご教授下さい。
0895nobodyさん2008/07/15(火) 08:55:35ID:???
>>894
サーバからブラウザまでの通信経路において暗号化してるだけで、
ブラウザがユーザーに向けて表示する際には復号化されてるから、
ソースを見たら平文になってるだけだよ。。
パケットキャプチャして調べてみなよ。

0896nobodyさん2008/07/15(火) 09:39:58ID:3TGKEqvg
>>895
ありがとうございます。
ということは、ブラウザが暗号化するソフトで、
私が見たのはブラウザの外の部分を見ていたので、平文だったけど、
ブラウザの内側は暗号化されているということなんですね。

得心しました。ありがとうございました。
0897リュ.マヴジュダ.レァュビゥ.ジィゥヴ2008/07/15(火) 12:57:39ID:???
質問ですが、ヌル文字?

\0 で テキストで打てば%00ですよね?

\x00 って何に変換されるんですか?
0898nobodyさん2008/07/15(火) 13:02:29ID:???
http://e-words.jp/p/r-ascii.html
0899nobodyさん2008/07/15(火) 13:34:15ID:???
\0は8進数の0、\x00は16進数の0
0900X2008/07/15(火) 14:33:07ID:???
クリプトさせたデータを複合化するにはどうしたらよいですか?

<?php
$x = '12345678';
$data = crypt($x,'dc');
echo $data;
?>
これでクリプトさせたデータを複合化したいです。
0901nobodyさん2008/07/15(火) 14:38:08ID:???
>>900
cryptは1方向ハッシュ
0902nobodyさん2008/07/15(火) 15:24:36ID:???
つうか答えなくていいよ
>>897>>900は同じやつだろ
名前もふざけてるしメル欄も釣りとしか思えない
0903nobodyさん2008/07/15(火) 15:35:30ID:???
2ch初心者じゃない?
0904nobodyさん2008/07/15(火) 20:04:35ID:l2rQTsjG
PHPをCGIとして動作させたときに、POSTがうまくいきません。

 OS: CentOS 5 Linux
 PHP: PHP 5.1.6 (cli) (built: May 24 2008 14:07:53)
 Apache: Apache/2.2.3 Server built: Jan 15 2008 20:33:30

今までmod_phpでApacheのモジュールとして動かしていたPHPプログラムを、
レンタルサーバを使う関係でやむを得ずCGIとして動かすことにしました。
まずはテスト環境を本番サイトに合わせて変更。

LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
AddType text/html .php

をコメントアウトしてモジュールとして動作するのをやめ、新たに

Options ExecCGI
AddHandler cgi-script .php

らを追加してApacheを再起動。
ソースコードの冒頭に #!/usr/bin/php を追加して、実行権限も与え、アクセスしてみると
ちゃんと表示できたので、楽勝楽勝なんて思っていたらここからドツボへ。

プログラム中でフォームからPOSTで受け取ったユーザ名とパスワードを使ってサービスに
ログインさせる部分があるのですが、ちゃんとフォームに入力してPOSTしているのに
$_POST["key"] が null となっていてちゃんと処理が進んでいません。

(長いので続きます・・)
09059042008/07/15(火) 20:05:12ID:l2rQTsjG
(904つづき)

サンプルプログラムとして、

#!/usr/bin/php
<?php
if(isset($_POST["posttest"])){
 printf($_POST["posttest"]);
} else {
 printf("null");
}
<html><body>
<?php
<form action="post.php" method="post">
<input type="text" name="posttest"><input type="submit" value="submit">
</form>
</body></html>

ここまで単純なプログラムを書いても、どうやっても null です。
超長文でほんとお恥ずかしいですが、アドバイスお願いします。
0906nobodyさん2008/07/15(火) 20:27:23ID:???
<html><body>
<?php
09079042008/07/15(火) 20:52:14ID:???
失礼、そこはここへ書き込む際のわたしの入力ミスです。
実プログラムはちゃんと正しい閉じ括弧になっています。どうかスルーしてください。

文法エラーなど、ログに明らかな原因の出る状況ではありません。
手がかりが無く困っています。
PHPの本家のマニュアルで、CGIとして動作させる場合の説明も何度も読み直しましたが
禁忌をおかしているようには見えません。
0908nobodyさん2008/07/15(火) 20:55:59ID:???
毎回思うんだが
再現できない状態のコードを投稿するなよ
書き込む前にちょっと確認するだけじゃないか

そんな事もできないからロクに(ry
0909nobodyさん2008/07/15(火) 21:01:12ID:???
>907
意図どおり動かないソースを、改変せずそのままコピペするのを勧める。
じゃないと検証しようもないよ
0910nobodyさん2008/07/15(火) 21:04:10ID:???
>>907
cgiが使えるxreaで検証してみたが別に問題ないけど?
エラーでてる様子がないから>>907のコードコピペしたときの
全角スペースによる問題ではないと思うけど
09119102008/07/15(火) 21:05:02ID:???
>>907じゃなくて>>905のコードね
0912nobodyさん2008/07/15(火) 22:05:53ID:???
cygwinにphp-4.4.7.tar.gzを入れて使っています。
FTP関数を使おうとすると そんなのねぇよ的なエラーになってしまいました。
おそらくPHP をインストールする際に --enable-ftp をしなかったせいだと思うのですが、
既にインストールされている環境でFTPを有効できるのでしょうか?

もし再インストールが必要であれば、
phpinfoで見れるConfigure Commandに--enable-ftpを追加したコマンドでインストールすれば大丈夫でしょうか?
また、php.iniやhttpd.confは上書きされてしまうのでしょうか?

よろしくおねがいします。
0913nobodyさん2008/07/15(火) 22:52:37ID:???
普通は設定ファイルはアプリケーション削除後残すことがおおいが
Apache、PHPがどうするかはシラネ
設定ファイルだけバックアップとって自分でやってみれよ
ていうかcygwinでやるぐらいならVM入れてlinuxでも入れとけって話ですね
0914nobodyさん2008/07/15(火) 23:03:03ID:tej4dQ8Y
既出でしたら案内していただけると助かります。

apache経由でpostgresに接続することができません。
すみませんが手元に実機がないため設定等すぐに確認できません。

centos4.5
apache2.0.52 デフォルトで入れてました。
postgresバージョン忘れてしまいました。ソースからインストール。
perl5.8.5 デフォルトで入れてました
DBI使用
apacheとpostgresは同一機上で動作しています

症状
・サーバ機内で直接スクリプトを実行した場合はDB接続できます
・PCブラウザ等のリクエストを受け取った場合、以下の2通りの現象が起こります
1.apachectlからの起動ではDB接続に失敗
2.httpdからの起動ではDB接続に成功

ahacheのerror.logには、「Refused permission」(だったかな?)という
権限が無いと思われる内容とDB接続を行っている行番号が残っています。

httpd.confのUserやGroupをpostgresやスクリプト所有者に設定してみましたが、症状は変わりませんでした。
ps -auxに出る実行ユーザはどちらもhttpd.confで設定したユーザとなっています(親プロセスはroot)。
apachectlで起動しているhttpdのフルパスは、検証に使用しているhttpdを指しています。
このため同じものだと思うのですが、動作結果が異なるのはどうしてだろうと悩んでいます。
またDB接続時の関数の直後にor dieやprint出力を書いても、接続に失敗した場合は出力されません(ファイル出力も同様)。

アドバイスや手がかりになりそうな情報がありましたら宜しくお願いします。
09159122008/07/15(火) 23:05:33ID:???
>>913
そうですね、やってみます。
マシンがしょぼいのでVMは無理なんです(T_T)
0916nobodyさん2008/07/15(火) 23:06:12ID:tej4dQ8Y
すみませんスレ違いでした
0917nobodyさん2008/07/16(水) 00:15:27ID:sBFLtzFG
redhat9 がOSです。

php-4.2.2-17.2jaがRPMでインストールされているのですが、
バージョンアップをしなければいけなくなりました。

手順ですが

rpm -e でphpを削除して、php4.4.6をconfigure → make → make install

しても大丈夫でしょうか?
今、動いているphpプログラムが動かなくなるか不安です。
0918nobodyさん2008/07/16(水) 00:39:17ID:???
大丈夫だと思います。
あとlinuxのエスパースレで聞いたほうがいいと思います
0919nobodyさん2008/07/16(水) 00:45:45ID:sBFLtzFG
>>918
サンクス湖
0920nobodyさん2008/07/16(水) 01:21:22ID:gY/N3cCH
php.iniの設定で「date.timezone」というものがあります。
      (設定一覧:http://manual.xwd.jp/timezones.html
たとえば、この設定が「Africa/Abidjan」と設定されていると、time関数の戻り値が日本時間(Asia/Tokyo)より9時間ずれてしまいますので、日時を表示する際に不都合が生じてしまいます。
    time()+9時間
として現在対応しておりますが、それだと「Asia/Tokyo」や「Antarctica/Casey」と設定されている際に不都合(日時のずれ)が生じてしまいます。

if(ini_get('date.timezone') =='Asia/Tokyo'){
$time = time();
}elseif(ini_get('date.timezone') =='Africa/Abidjan'){
$time = time() + 9時間;
}elseif(ini_get('date.timezone') =='省略'){
     〜以下、省略〜
というように対応するしかないのでしょうか・・・・orz.



php.iniの設定「date.timezone」の影響を受けない日時を返す関数などありますでしょうか?
ご教授よろしくお願いいたします。
0921nobodyさん2008/07/16(水) 02:19:26ID:???
gmdate()
レス数が900を超えています。1000を超えると表示できなくなるよ。