[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не получается занести данные в базу данных
Alexcr17
Пишу скрипт подписки.
<?php
header('Content-Type: text/html; charset=utf-8');
require_once "lib/user_class.php";
$user=User::getObject();
if (isset($_POST["sub"])){
$email=$_POST["email"];
$email=strtolower($email);
$reg_success=$user->regUser($email);
if($reg_success){
$check_bd=$user->check_bd($email);
if($check_bd) {
header("Location: lib/subscribe.php");
exit;
}
}

}


?>
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">

<head>
<META
HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"/>

<title>
Мой сервис рассылки!</title>
</head>
<body>
<div
align="center"; style="position: relative; top:200px;" >
<form
name="myform" action="index.php" method="post">
<table>

<td>
Введите E-mail:  <input type="text" name="email" value="<?php echo $email;?>" /></td>

</tr>
<td>
<input
type="submit" name="sub" value="Подписаться" />
</td>
</tr>
</table>

</div>
</body>
</html>




Это страница отправки данных. А вот файл обработки:

<?php
class User
{

private $bd;
private static $user=null;
private function __construct() {
$this->bd=new mysqli("localhost", "root", "","test");
$this->bd->query("SET NAME 'utf8'");
}

public static function getObject() {
if (self::$user===null) self::$user=new User();
return self::$user;
}

public function regUser($email) {
if(!preg_match("/^[a-z0-9][a-z0-9_]*[a-z0-9\.]*[a-z0-9\-]*([a-z0-9])+@([a-z0-9]+([a-z0-9\-]*[a-z0-9]+)*\.)+[a-z]/i",$email)) {
echo "<span style='color: red;'>Неверный E-mail!</span>";
return false;
}
else return true;

}

public function check_bd($email) {
$check_email=0;
$check_email=$this->bd->query("SELECT `email` FROM `users` WHERE `email`='$email'");
$check_email_mas=$check_email->fetch_assoc();
$check_email->close();

if($check_email_mas!=0) {
if($check_email_mas["email"]==$email) {
echo " Этот E-mail подписан на обновления!";
return false;
}
else return true;
}
else return true;
}
/*return $this->bd->query("INSERT INTO `users` ( `email` , `redata` ) VALUES ( '$email', '".time()."')");
}
*/


public function __distruct() {
if ($this->bd) {

$this->bd->close();
}
}



}

?>

И тот еще один файл(страница). На него перекидает, когда проходит проверка на коректность мыла.


<?php

require_once "user_class.php";
session_start();
if (isset($_POST["botton"])){
$kapcha=$_POST["kapcha"];
if($_POST['kapcha'] != $_SESSION['rand_code']) {
echo "Капча введена неверно";
return false;
}
else return $this->bd->query("INSERT INTO `users` ( `email` , `redata` ) VALUES ( '$email', '".time()."')");

}
?>
<html>
<head>
<title>
Подтверждения подписки!</title>
<META
HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"/>
<link
rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div
class="main"><h1>Подписка по електронной почте...</h1></br>
<p>
Введите данные, которые Вы видите на картинке для завершения подписки:</p>
<div
class="form_kapcha">
<form
name="register" action="subscribe.php" method="post">
<table>
<span><img
src = "captcha.php" /></span>
<tr><td><input
type = "text" name = "kapcha" /></td>
</tr><td><input
type = "submit" name="botton" value = "Регистрация" /></td>

</table>
</form>
</div>
</div>
</body>
</html>

И в этом файле проходит проверка капча. Если все правильно то записать данные в БД. Но у меня не записывает. Вот в этом месте (else return $this->bd->query("INSERT INTO `users` ( `email` , `redata` ) VALUES ( '$email', '".time()."')");) пишет Using is$th when not in object context.

Я понял что это ошибка типа "нельзя использовать $this в статических класах.
Но как записать в БД без него помогите, кто знает? Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.