家・車以外で、人生で一番奮発した買い物

ユーザーのアドレスを読み取るPHPプログラムを作っています。

詳細を言うと、
ユーザーにtextareaにアドレスをinputしてもらい、
それをsubmitで送信。

その後、その送信された文字列の中に@があれば、
正当なアドレスと認識してデータベースに保存、そして
「ご参加ありがとうございます」と表示。
ただし、これまでに同じアドレスが保存されている場合は、
ユーザーに「以前に登録されたアドレスです」と知らせる。

という単純なプログラムです。

以下のコードを見てください。
<html>
<head>
</head>
<body>
<?php

$ad = $_POST["address"];

$file = fopen("adData.txt", "a");  //データベースを作成

fclose($file);

$fileData = file("adData.txt");   //データベースの読み込み

$j =0;               //カウンタ

for($i=0;$j <count($fileData);$++)   
{
if($ad == $fileData)       //$adが$fileDataに含まれれば
 $j++;               // $j >0            
}

....


と今ここでいきずまってます。

ここで質問なのですが、
$adに@が含まれるか否かを調べるにはどのようにしたらよいでしょうか?
perlでいう $ad =~ /@/ のような表現はありますか?
あと上のコードは正しいコードでしょうか?

もしよければアドバイスをいただけますか。お願いします。

A 回答 (3件)

preg_match()があります


http://jp.php.net/manual/ja/function.preg-match. …

ちなみに、@があるかどうかで メールアドレスかどうかを判断するにはちょと乱暴かな と思いますよ


あとは、ここ
if($ad == $fileData)       //$adが$fileDataに含まれれば
構文エラーは出ないはずですが、$fileDataはarrayでは?


実証/検証してないので自身なし
    • good
    • 0

ちなみにPHPのマニュアルでは単純な文字検索は主に速さの観点からstrposの使用を推奨しています。

戻り値が0の場合があるため型の違いも考慮する「===演算子」を使用することに注意してください。

if(strpos($ad,"@") !== FALSE){
echo "$adに@が含まれています"
}

参考URL:http://jp.php.net/manual/ja/function.strpos.php
    • good
    • 0

> $file = fopen("adData.txt", "a");  //データベースを作成


>
> fclose($file);

fopen()とfclose()の間に、処理は何もないのですか?
オープンした直後にクローズすることにどのような意味合いがあるのか、
今一つつかめません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!