Search
  1. fsockopen〔インターネットまたはUNIXドメインのソケット接続をオープン〕
  2. gethostbyaddr〔指定したIPアドレスに対応するホスト名を取得する〕
  3. gethostbyname〔指定したホスト名に対応するIPアドレスを取得する〕
  4. gethostbynamel〔指定したホスト名に対応するIPアドレスの一覧を取得する〕
  5. getprotobyname〔プロトコル名が指すプロトコル番号を取得する〕
  6. getprotobynumber〔プロトコル番号が指すプロトコル名を取得する〕
  7. getservbyname〔インターネットサービスおよびプロトコルが関連するポート番号を取得する〕
  8. getservbyport〔ポート番号およびプロトコルに対応するサービスを取得する〕
  9. header〔HTTPヘッダを送信する〕
  10. header_list PHP5~〔送信済み(または送信予定)のレスポンスヘッダの一覧を返す〕
  11. headers_sent〔HTTPヘッダが既に送信されているか調べる〕
  12. pfsockopen〔持続的なInternetまたはUnixドメインソケット接続をオープン〕
  13. setcookie〔クッキーを送信する〕
  14. setrawcookie PHP5~〔値をURLエンコードせずにクッキーを送信する〕
  15. stream_get_meta_data〔ヘッダあるいはメタデータをストリームまたはファイルポインタから取得〕
  16. stream_get_transports PHP5~〔登録されたソケットのトランスポートの一覧を取得〕
  17. stream_set_bloking〔ストリームのブロックモードを有効化/解除〕
  18. stream_set_timeout〔ストリームにタイムアウトを設定〕

fsockopen
インターネットまたはUNIXドメインのソケット接続をオープン

unknown

resource fsockopen ( string $ターゲット[, int $ポート番号[, int &エラー番号[, string &$エラーメッセージ[, float $フォーマット]]]] )

ターゲットに指定されたリソース(インターネットまたはUNIXドメイン)へのソケット接続を初期化します。 サポートされるトランスポートのリストは、stream_get_transports()関数を使用して取得できます。

ソケットはデフォルトで、ブロックモードで開かれますが、stream_set_bloking()関数を使用して非ブロックモードに切り替えることもできます。

失敗した場合はFALSEを返します。 オプション引数エラー番号エラーメセージが指定されている場合は、 システムコールconnect()で生じた実際のシステムレベルのエラーを表示します。 エラー番号エラーメッセージ参照渡しになります。

エラー番号0なのに関数がFALSEを返す場合は、connect()をコールする前にエラーが発生したことを意味します。 この場合は、ソケットの初期化に原因があります。

この関数で返されるファイルポインタは、他の関数(fgets()関数fgetss()関数fputs()関数fclose()関数feof()関数など)で使用することができます。

オプションの第5引数タイムアウトは、ソケットに接続する間だけに適用されます。 ソケット経由でデータを読み書きする際にタイムアウトを設定する場合は、stream_set_timeout()関数を使用する必要があります。

<?
$fp=fsockopen("www.sample.co.jp"80$errno$errstr30);
if(!$fp){
   echo "$errstr ($errno)<br>\n";
}else{
   $out="GET / HTTP/1.1\r\n";
   $out.="Host: www.example.com\r\n";
   $out.="Connection: Close\r\n\r\n";
   fwrite($fp$out);
   while(!feof($fp)){
       echo fgets($fp128);
   }
   fclose($fp);
}
?>

gethostbyaddr
指定したIPアドレスに対応するホスト名を取得する

unknown

string gethostbyaddr ( string $IPアドレス )

指定したIPアドレスに対応するのホスト名を返します。 失敗した場合は、指定したIPアドレスを文字列で返します。

<?
$hostname=gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $hostname// localhost
?>

gethostbyname
指定したホスト名に対応するIPアドレスを取得する

unknown

string gethostbyname ( string $ホスト名 )

指定したホスト名に対応するのIPアドレスを返します。 失敗した場合は、指定したホスト名を文字列で返します。

<?
$ip=gethostbyname('www.yahoo.co.jp');
echo $ip// 203.216.235.201
?>

gethostbynamel
指定したホスト名に対応するIPアドレスの一覧を取得する

unknown

array gethostbynamel ( string $ホスト名 )

指定したホスト名に対応するのIPアドレスの配列で返します。 失敗した場合は、FALSEを返します。

<?
$hosts=gethostbynamel('www.yahoo.co.jp');
print_r($hosts);
/*
Array
(
    [0] => 124.83.147.203
    [1] => 124.83.147.204
    [2] => 124.83.147.205
    [3] => 124.83.167.212
    [4] => 203.216.227.176
    [5] => 203.216.235.154
    [6] => 203.216.235.201
    [7] => 203.216.243.218
    [8] => 203.216.247.225
    [9] => 203.216.247.249
    [10] => 124.83.139.191
    [11] => 124.83.139.192
    [12] => 124.83.147.202
)
*/
?>

getprotobyname
プロトコル名が指すプロトコル番号を取得する

unknown

int getprotobyname ( string $プロトコル名 )

プロトコル名に指定したプロトコル番号を/etc/protocolsから取得して返します。 プロトコルが見つからない場合は、FALSEを返します。

<?
$protocol='tcp';
$get_prot=getprotobyname($protocol);
if(!$get_prot){
    echo '無効なプロトコル';
}else{
    echo 'プロトコル番号: '.$get_prot// 6
}
?>

getprotobynumber
プロトコル番号が指すプロトコル名を取得する

unknown

string getprotobynumber ( int $プロトコル番号 )

/etc/protocolsに基づいて、指定したプロトコル番号が指すプロトコル名を文字列として返します。 プロトコルが見つからない場合は、FALSEを返します。

<?
$get_prot=getprotobynumber(6);
if(!$get_prot){
    echo '無効なプロトコル';
}else{
    echo 'プロトコル名: '.$get_prot// tcp
}
?>

getservbyname
インターネットサービスおよびプロトコルが関連するポート番号を取得する

unknown

int getservbyname ( string $サービス, string $プロトコル )

/etc/servicesに基づいて、指定したプロトコルに関してサービスに対応するポート番号を返します。 サービスあるいはプロトコルが見つからない場合は、FALSEを返します。

第1引数サービスには、インターネットサービス名を表す文字列を指定します。
第2引数プロトコルには、「tcp」あるいは「udp」(小文字)のいずれかを指定します。

<?
$services=array('http''ftp''ssh''telnet''imap',
'smtp''nicname''gopher''finger''pop3''www');

foreach ($services as $service) {
    $port=getservbyname($service'tcp');
    echo $service ": " $port "<br>\n";
}
/*
http: 80
ftp: 21
ssh:
telnet: 23
imap: 143
smtp: 25
nicname: 43
gopher: 70
finger: 79
pop3: 110
www: 80
*/
?>

getservbyport
ポート番号およびプロトコルに対応するサービスを取得する

unknown

string ( int $ポート番号, string $プロトコル )

/etc/servicesに基づいて、指定したプロトコルに関してポート番号に関連するインターネットサービス名を文字列でを返します。

第2引数プロトコルには、「tcp」あるいは「udp」(小文字)のいずれかを指定します。

<?
echo getservbyport(23"tcp"); // telnet
?> 

header
HTTPヘッダを送信する

unknown

void header ( string $ヘッダ文字列[, bool $置換[, int $HTTPレスポンスコード] )

HTMLファイルの送信に先立って、任意のヘッダ文字列を送信するために使用します。

オプションの第2引数置換は、ヘッダが前に送信された類似のヘッダと置換するか、 または同形式の2番目のヘッダを追加するかどうかを指定します。デフォルトはTRUE(置換する)。 FALSEを指定した場合は、同じ型の複数のヘッダを強制的に生成します。

オプションの第3引数HTTPレスポンスコード(PHP4.3.0~)は、HTTPレスポンスコードを強制的に指定の値にします。

この関数は、HTMLタグやPHPスクリプトによる出力よりも前に記述する必要があります。 それ以外の場所に記述した場合は、エラーが発生します。

イメージを扱う場合は、ヘッダ文字列に、Content-Typeを用いて、利用するMIMEタイプを送出します。 リダイレクトを指定する場合は、それ以外のスクリプトが実行されないよう exit() でスクリプトを終了します。

<?
#"HTTP/"から始まるヘッダ(大文字・小文字の区別なし)
#HTTPステータスヘッダ行はクライアントに対して常に最初に送信される。
#HTTPヘッダが送信済み出ない限り、header()関数をコールする事でステータスは常に上書きされる。
header("HTTP/1.0 404 Not Found");

#指定したURLにリダイレクト(必ずexitする)
header("Location:http://www.yahoo.co.jp");
exit;

#文字コードの設定
header("Content-type: text/html;charset=utf-8");

#キャッシュしない
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 過去の日付
?>

header_list PHP5~
送信済み(または送信予定)のレスポンスヘッダの一覧を返す

unknown

array header_list ( void )

ブラウザもしくはクライアントに送信されるヘッダの数値配列を返します。

これらのヘッダが送信されたか確認する場合は、headers_sent()関数を使用してください。

headers_sent
HTTPヘッダが既に送信されているか調べる

unknown

bool headers_sent ( [string $&file[, int $&line]] )

HTTPヘッダが送信済みの場合にTRUE、そうでない場合はFALSEを返します。

オプション引数のfileline(PHP4.3.0~)が指定されている場合、 PHPのソースファイル名出力開始行番号がそれぞれ変数に格納されます。

オプション引数のfilelineは参照渡しのため、あらかじめ値を与えてはいけません。

ヘッダブロックが一旦送信されてしまった後でheader()関数を使って、新たなヘッダ行を送信することはできません。 この関数を使うには、少なくともHTTPヘッダ関連のエラーを予防、あるいは出力バッファリングをする必要があります。

<?php
#ヘッダがまだ何も送信されていない場合送信する
if (!headers_sent()) {
    header('Location: http://phpjavascriptroom.com/');
    exit;
}else{
    echo "ヘッダは送信済みです";
    exit;
}

# オプションのfileとlineパラメータの使用例(PHP4.3.0以降)
# $filename と $linenum が後で使用されていることに注目。
# これらの変数に事前に値を与えたりしてはいけません。
if (!headers_sent($filename$linenum)) {
    //ヘッダが送信済みの場合
    header('Location: http://phpjavascriptroom.com/');
    exit;
} else {
    //ヘッダが送信されない場合
    echo "$filename の line $linenum で、ヘッダは送信済みです。\n" .
         "リダイレクトできない場合は、" . 
         "<a href=http://phpjavascriptroom.com/'>こちら</a>のリンクを" . 
         "クリックしてください。\n";
    exit;
}
?>

pfsockopen
持続的なInternetまたはUnixドメインソケット接続をオープン

unknown

resource pfsockopen ( string $ホスト名, int $ポート番号[, int $エラー番号[, int $エラー文字列[, int $タイムアウト]]] )

fsockopen()関数の持続的接続版。 この関数は、この関数による接続はリクエストが終了した後でも閉じられないことを除いて、fsockopen()関数と全く同じ動作です。

<?
$fp=pfsockopen("www.example.com"80$errno$errstr30);
if(!$fp){
    echo "$errstr ($errno)<br>\n";
} else {
    $out="GET / HTTP/1.1\r\n";
    $out.="Host: www.example.com\r\n";
    $out.="Connection: Close\r\n\r\n";
    fwrite($fp$out);
    while(!feof($fp)){
        echo fgets($fp128);
    }
    fclose($fp);
}
?>

setcookie
クッキーを送信する

unknown

bool setcookie ( string $name [, string $value [, int $expire [, string $path [, string $domain [, int $secure]]]]] )

その他のヘッダ情報と共に送信するクッキーを定義します。
この関数は、ユーザーがクッキーを有効にしているかどうかを示すものではありません。

他のヘッダ情報と同様、クッキーはHTMLタグやHEADタグ、空白も含め、他のあらゆる出力よりも前に送信される必要があります。 正常に実行された場合にTRUE、この関数より前になんらかの出力があった場合にFALSEを返します。

第1引数name以外は全て、オプション引数(省略可)です。 一部を省略したい場合は、空文字列"")を指定します。 ただし、expiresecureは数値なので空文字ではなく0を指定して下さい。

一度クッキーが送信されると、次のページが表示された時から$_COOKIE($HTTP_COOKIE_VARS)を使ってクッキーにアクセス可能になります。 この他、クッキーの値はリクエスト変数($_REQUEST)を使用しても取得できます。

定義済みの定数
引数説明
name クッキー名 クッキー名が'cookiename'とすると、cookienameは$_COOKIE['cookiename']で呼び出されます。
value クッキーの値。クライアントのパソコンに保存されるので重要な情報は格納しません。 クッキー名が'cookiename'とすると、その値は$_COOKIE['cookiename']で取得可。
expire クッキーの有効期限。UNIX標準時からの秒数。time()関数またはmktime()関数により返された現在のUNIX標準時に起源としたい必要な秒数を加算して利用します。 クッキーの有効期限を30日後にする場合は、
time()+60*60*24*30で取得した値を設定します。 設定を省略した場合は、ラウザを閉じた時(セッションの最後)が有効期限となります。
path (サーバー上で)クッキーを有効にしたいパス /を設定すると、クッキーはオプションの第4引数domainで指定したドメイン配下の全ての階層で有効となります。/fooをセットすると、 クッキーは/fooディレクトリとそのサブディレクトリ配下で有効となります。 デフォルトは、クッキーが設定された時のカレントディレクトリ。
domain クッキーが行こうなドメイン 例えば、example.com の全てのサブドメインでクッキーを有効とするには、 ドメインの頭にドットを付けて.example.comのように設定します。 ドットを付けるかどうかは任意ですが、多くのブラウザと互換性があるので付けたほうがよいです。 www.example.comに設定した場合は、クッキーがwwwサブドメインでのみ有効となります。
secure 1を指定するとSSL送信の場合のみクッキーが送信されます(デフォルトは0)。 0または1
<?
#クッキー送信
$value 'something from somewhere';

setcookie ("TestCookie"$value);
setcookie ("TestCookie"$value,time()+3600); //クッキーの有効期限は一時間後
setcookie ("TestCookie"$value,time()+3600"/~rasmus/"".example.com"1);

if($HTTP_COOKIE_VARS["TestCookie"]){

    #クッキーデータを出力
    echo $HTTP_COOKIE_VARS["TestCookie"]; //something from somewhere
    #クッキーデータのデバッグ表示
    print_r($_COOKIE); //Array ( [TestCookie] => something from somewhere ) 

    #クッキーの削除
    setcookie ("TestCookie"""time() - 3600); //有効期限を一時間前にセットする
    setcookie ("TestCookie"""time() - 3600"/~rasmus/"".example.com"1);

}else{
    
    echo "クッキーが送信されていません。<br>このページをリロード(再読み込み)するとクッキーデータが表示されます。";

}
?>

setrawcookie PHP5~
値をURLエンコードせずにクッキーを送信する

unknown

bool setrawcookie ( string $name [, string $value [, int $expire [, string $path [, string $domain [, bool secure]]]]] )

ブラウザに送信される時、クッキーの値が自動的にURLエンコードされない点を除いて、機能はsetcookie()関数と同じです。

stream_get_transports PHP5~
登録されたソケットのトランスポートの一覧を取得

unknown

array stream_get_transports ( void )

スクリプト実行中のシステムにおいて、利用可能なソケットのトランスポートの一覧を配列として返します。 PHPのバージョンによって、トランスポートの数が増減することがあります。

<?
$xport_list=stream_get_transports();
print_r($xportlist);

/* PHP のバージョンによって、トランスポート数の増減あり
Array (
  [0] => tcp
  [1] => udp
  [2] => unix
  [3] => udg
)
*/
?>

stream_set_bloking
ストリームのブロックモードを有効化/解除

unknown

bool stream_set_bloking ( resource ストリーム, int $mode )
bool socket_set_blocking ( resource ストリーム, int $mode ) ※廃止

mode0の時ストリーム非ブロックモードに切り替えられます。 mode1の時ストリームブロックモードに切り替えられます。

このモードの違いは、fgets()関数fread()関数といったストリームからデータを読む関数に影響します。 成功した場合にTRUEを返し、失敗した場合にFALSEを返します。

非ブロックモードでfgets()関数を呼び出すと、どんな場合でも直ちに呼び出し元に戻りますが、ブロックモードの場合は、ストリームがデータを読み出せる状態になるまで待ち続けます。

  • PHP4.3未満では、ソケットベースのストリームにしか機能しませんでしたが、PHP4.3 から非ブロックモードをサポートする全てのストリームにおいて利用できるようになりました(但し、現在サポートされているのは通常のファイルストリームとソケットストリームのみ)。
  • socket_set_blocking()関数は、この関数のエイリアスですが、現在は廃止されました。

stream_set_timeout
ストリームにタイムアウトを設定

unknown

bool stream_set_timeout ( resource ストリーム, int 秒数[, int マイクロ秒] )

ストリームに、マイクロ秒を足した値をタイムアウトの値を設定します。 成功した場合にTRUE、失敗した場合にFALSEを返します。

ストリームがタイムアウトとなった場合は、エラーや警告が発生していなくても、 stream_get_meta_data()関数が返す配列のキー「timed_out」の値がTRUEに設定されます。

<?
$fp=fsockopen("www.sample.co.jp"80);
if(!$fp){
   echo "開けません\n";
}else{
   fwrite($fp"GET / HTTP/1.0\r\n\r\n");
   stream_set_timeout($fp2);
   $res=fread($fp2000);
   $info stream_get_meta_data($fp);
   fclose($fp);
   if($info['timed_out']){
       echo 'Connection timed out!';
   }else{
       echo $res;
   }
}
?>

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women