0

私は、mysql データベースに挿入する予定の電子メールを購読するための単純な「近日公開」ページを持っています。

以前はコードを実行していましたが、1 ~ 2 週間後に戻ってきたところ、いくつか問題があるようです。

基本的に、関連するファイルはindex.htmlとの 2 つだけですsubscribe.phpindex.htmlは実際には「近日公開」ページでありsubscribe.php、有効な電子メールであり、重複していないなどの条件で、実際に電子メールをデータベースに挿入するように呼び出します..

のコードをsubscribe.php以下に示します。とてもシンプルなコードです。

これが以前は機能していたことに注意してください。ただし、PDO が使用されている行で「Class PDO not found ...」エラーが発生しているようです。

<?php

function isValidEmail( $email = null )
{
    return preg_match( "/^
    [\d\w\/+!=#|$?%{^&}*`'~-]
    [\d\w\/\.+!=#|$?%{^&}*`'~-]*@
    [A-Z0-9]
    [A-Z0-9.-]{0,61}
    [A-Z0-9]\.
    [A-Z]{2,6}$/ix", $email );
}

try {
    // Connect to the SQLite Database.
    $db = new PDO('mysql:host=hostnamehere;dbname=dbnamehere', 'usernamehere', 'passwordhere');
} catch(Exception $e) {
    die('connection_unsuccessful');
}

/* Check if table exists */
$db->exec('CREATE TABLE IF NOT EXISTS subscribers (email VARCHAR(255), time VARCHAR(255))');

/* Check if email has been posted */
if ( isset($_POST['email']) ) {

    /* Validate email */
    if ( isValidEmail($_POST['email']) ) {

        /* Check for duplication */
        $query = $db->prepare('SELECT COUNT(*) AS count FROM subscribers WHERE email = :email');  
        $query->execute(array(':email' => $_POST['email']));
        $result = $query->fetch();

        if ( $result['count'] == 0 ) { // E-mail is unique.

            $query = $db->prepare('INSERT INTO subscribers (email, time) VALUES (:email, :time)');  
            $query->execute(array('email' => $_POST['email'], 'time' => date('Y-m-d H:i:s')));

            /* Send mail notification */
            $to = 'newsubscriber@xyz.com'; // Email notified of the new subscription
            $subject = 'New subscriber';
            $message = 'Hi, you have one new subscriber. This is his/her e-mail address: ' . $_POST['email'] . '.';
            $headers = "From:" . $_POST['email'];
            mail($to,$subject,$message,$headers);

            echo 'successful';

        } else { // E-mail is already being used.
            echo 'already_subscribed';
        }

    } else {
        echo 'invalid_email';
    }

}
4

1 に答える 1

3

おそらくphp.iniでPDOが無効になっているので、有効にしてください。あなたがそこにいることを確認してください

extension=pdo.so
extension=pdo_mysql.so
于 2013-05-17T21:10:21.247 に答える