MySQL php массив проблема - PullRequest
       2

MySQL php массив проблема

0 голосов
/ 01 августа 2011

я пытаюсь создать массив из запроса к базе данных в php mysql.циклически проходить по этому массиву в поисках определенной строки с strpos.

при загрузке страницы регистра, я включаю файл, этот источник файла находится ниже:

mysql_select_db($database_connBlog, $connBlog);
$query_rsBannedDomains = "SELECT * FROM banned_emailproviders";
$rsBannedDomains = mysql_query($query_rsBannedDomains, $connBlog) or die(mysql_error());
$row_rsBannedDomains = mysql_fetch_assoc($rsBannedDomains);
$totalRows_rsBannedDomains = mysql_num_rows($rsBannedDomains);


$bannedArray = array(); 
    do {
    array_push($bannedArray, $row_rsBannedDomains['domain_emailprovider']);
    }
    while ($row_rsBannedDomains = mysql_fetch_assoc($rsBannedDomains));

//print_r($bannedArray);

$emailaddress = $_POST['email_usr'];

foreach($bannedArray as $key => $domain){
    if(strpos($emailaddress, $domain) == false){
        echo (strpos($emailaddress, $domain));
    } else {
        header ("Location: http://www.disney.com");

    }
}

Когда страница регистрации отправлена, подано себе.Включение в источник выше, это вторая строка в файле php регистра.первая строка - это включение для соединения с базой данных.

Странно то, что иногда это работает, когда я нажимаю назад и повторно отправляю форму.

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Вам не нужно загружать всю таблицу, а затем перебирать ее с помощью PHP.На самом деле это очень неэффективный способ сделать это.Просто запросите базу данных, чтобы увидеть, является ли доменная часть адреса электронной почты одной из записей в таблице.

$emailaddress = substr ($_POST['email_usr'], strpos ($emailaddress = $_POST['email_usr'];
, '@'));

$query = "SELECT COUNT(*) AS banned FROM banned_emailproviders WHERE domain_emailprovider = '" . mysql_real_escape_string ($emailaddress) . "'"
if (($res = mysql_query ($query)) && ($row = mysql_fetch_assoc ($res)) && ($row ['banned'] > 0))
{
    // The domain was in the banned list
}
else
if (!$res)
{
    // Something went wrong querying the database
    die (mysql_error ());
}
else
{
    // The domain wasn't in the banned list
}

Обратите внимание, что приведенный выше код не был протестирован, поэтому для его корректной работы может потребоваться некоторая настройка.

1 голос
/ 01 августа 2011

Одна вещь, которую я вижу, это

if(strpos($emailaddress, $domain) == false){

должно быть

if(strpos($emailaddress, $domain) === false){

http://php.net/manual/en/function.strpos.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...