Jump to content

Подскажите пожалуйста по PHP


Recommended Posts

Всем доброго вечера! Кто понимает в PHP помогите пожалуйста, есть на сайте скрипт, который по средствам cron выполняет рассылку пользователям, чьи объявления были размещены 10,20,30 и т.д. дней назад, т.е. через каждые 10 дней.

 

Подскажите пожалуйста, что надо поменять, что бы кратность была не 10 дней, а 30

вот кусок кода:

	$r = mysql_query("SELECT * FROM `board` WHERE RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0");
	while($rr=mysql_fetch_array($r))

Спасибо!

Link to post
Share on other sites

Всем доброго вечера! Кто понимает в PHP помогите пожалуйста, есть на сайте скрипт, который по средствам cron выполняет рассылку пользователям, чьи объявления были размещены 10,20,30 и т.д. дней назад, т.е. через каждые 10 дней.

 

Подскажите пожалуйста, что надо поменять, что бы кратность была не 10 дней, а 30

вот кусок кода:

	$r = mysql_query("SELECT * FROM `board` WHERE RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0");
	while($rr=mysql_fetch_array($r))

Спасибо!

В предоставленном вами коде нету периода.

Link to post
Share on other sites


require_once('...');

require_once('...');

$base='http://мой сайт/';

$them='тема письма';

$adm='<br><br>С уважением,<br>

Администрация сайта <a href="'.dir_top().'">'.dir_top().'</a>';

$r = mysql_query("SELECT * FROM `board` WHERE RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0");

while($rr=mysql_fetch_array($r))

{

$arr[$rr['email']] .= '<b>Здравствуйте '.$rr['contakt'].'!</b><br>Ваше объявление <b>N '.$rr['id'].' - <a href="'.$base.'items/'.$rr['zag_url'].'_'.$rr['id'].'">'.$rr['zag'].'</a></b>, по прежнему размещено на сайте <b>мой сайт</b><br><br>';

$arr[$rr['email']] .= 'Если объявление больше не актуально, Вы можете его <a href="'.dir_tek().'del.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>Удалить</b></a><br><br>';

$arr[$rr['email']] .= 'Если объявление по прежнему актуально, Вы можете его бесплатно поднять, для этого, необходимо перейти по ссылке - <a href="'.dir_tek().'edit.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>Поднять</b></a> и нажмите кнопку "Изменить"<br><br>';

$arr[$rr['email']] .= 'Вы всегда можете <a href="'.dir_tek().'edit.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>отредактировать</b></a> объявление<br><br>';

$arr[$rr['email']] .= 'Текст объявления</b><br>'.$rr['opis'].'<br>';

}

 

if($arr)

{

foreach($arr as $index=>$ar)

{

@mail_utf8($index, $them, $mess.$ar.$adm, $rru['email']);

}

}

?>

Link to post
Share on other sites
require_once('...');
require_once('...');
$base='http://мой сайт/';
$them='тема письма';
$adm='<br><br>С уважением,<br>
Администрация сайта <a href="'.dir_top().'">'.dir_top().'</a>';
	$r = mysql_query("SELECT * FROM `board` WHERE RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0");
	while($rr=mysql_fetch_array($r))	
		{
		$arr[$rr['email']] .= '<b>Здравствуйте '.$rr['contakt'].'!</b><br>Ваше объявление <b>N '.$rr['id'].' - <a href="'.$base.'items/'.$rr['zag_url'].'_'.$rr['id'].'">'.$rr['zag'].'</a></b>,  по прежнему размещено на сайте <b>мой сайт</b><br><br>';
		$arr[$rr['email']] .= 'Если объявление больше не актуально, Вы можете его <a href="'.dir_tek().'del.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>Удалить</b></a><br><br>';
		$arr[$rr['email']] .= 'Если объявление по прежнему актуально, Вы можете его бесплатно поднять, для этого, необходимо перейти по ссылке - <a href="'.dir_tek().'edit.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>Поднять</b></a> и нажмите кнопку "Изменить"<br><br>';
		$arr[$rr['email']] .= 'Вы всегда можете <a href="'.dir_tek().'edit.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>отредактировать</b></a> объявление<br><br>';
		$arr[$rr['email']] .= 'Текст объявления</b><br>'.$rr['opis'].'<br>';
		}
		
	if($arr)
		{
		foreach($arr as $index=>$ar)
			{
			@mail_utf8($index, $them, $mess.$ar.$adm, $rru['email']); 
			}
		}
?> 

Здесь тоже его нету, скорее всего он с базы берется.

Link to post
Share on other sites
ваш запрос возвращает, все записи где разница во времени имеет 0 последним числом, тобишь, 10,20,30...

но если крон бежит каждый день, то да будет возвращать там где 10

 

замените: RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0

 

на DATEDIFF(DATE(NOW()), data) >= 30

Link to post
Share on other sites

 

ваш запрос возвращает, все записи где разница во времени имеет 0 последним числом, тобишь, 10,20,30...
но если крон бежит каждый день, то да будет возвращать там где 10
 
замените: RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0
 
на DATEDIFF(DATE(NOW()), data) >= 30

 

Круто!

Link to post
Share on other sites

 

ваш запрос возвращает, все записи где разница во времени имеет 0 последним числом, тобишь, 10,20,30...
но если крон бежит каждый день, то да будет возвращать там где 10
 
замените: RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0
 
на DATEDIFF(DATE(NOW()), data) >= 30

 

Да крон каждый день

Спасибо Вам большое, а если заменить на DATEDIFF(DATE(NOW()), data) >= 30 то сообщение будет отправляться на тридцатый день после размещения? или каждый день после 30?

Извините за тупые вопросы, дубоват я в этом?

Link to post
Share on other sites

Да крон каждый день

Спасибо Вам большое, а если заменить на DATEDIFF(DATE(NOW()), data) >= 30 то сообщение будет отправляться на тридцатый день после размещения?

да, а если крон не работал пару дней, тогда возьмет и всех у кого больше 30-ти дней

Link to post
Share on other sites

Да крон каждый день

Спасибо Вам большое, а если заменить на DATEDIFF(DATE(NOW()), data) >= 30 то сообщение будет отправляться на тридцатый день после размещения? или каждый день после 30?

Извините за тупые вопросы, дубоват я в этом?

Не делайте этого, особенно если Ваш сайт на шаред хосте.

Доступ к запуска крона получить раз плюнуть, а для Вас это может плохо окончиться с награждением статусом спамера и блоком акка или IP.

 

дыра в том, что я сделал или дыра в вообще в коде тса?

Дыра в коде
Link to post
Share on other sites

дыра в том, что я сделал или дыра в вообще в коде тса?

 

Не то слово, а потом удивляются откуда берутся дыры...

А где дыры? Скажите пожалуйста, если это Вас не затруднит.

Link to post
Share on other sites

А как реализовать то, что описано в верхнем посте и кто это может сделать?

Элементарно, добавить ключ...

$key = 'KeYkeyKKey';

if(isset($key) AND $key == 'KeYkeyKKey') {

require_once('...');
require_once('...');
$base='http://мой сайт/';
$them='тема письма';
$adm='<br><br>С уважением,<br>
Администрация сайта <a href="'.dir_top().'">'.dir_top().'</a>';
	$r = mysql_query("SELECT * FROM `board` WHERE RIGHT(DATEDIFF(DATE(NOW()), data), 1) = 0");
	while($rr=mysql_fetch_array($r))	
		{
		$arr[$rr['email']] .= '<b>Здравствуйте '.$rr['contakt'].'!</b><br>Ваше объявление <b>N '.$rr['id'].' - <a href="'.$base.'items/'.$rr['zag_url'].'_'.$rr['id'].'">'.$rr['zag'].'</a></b>,  по прежнему размещено на сайте <b>мой сайт</b><br><br>';
		$arr[$rr['email']] .= 'Если объявление больше не актуально, Вы можете его <a href="'.dir_tek().'del.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>Удалить</b></a><br><br>';
		$arr[$rr['email']] .= 'Если объявление по прежнему актуально, Вы можете его бесплатно поднять, для этого, необходимо перейти по ссылке - <a href="'.dir_tek().'edit.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>Поднять</b></a> и нажмите кнопку "Изменить"<br><br>';
		$arr[$rr['email']] .= 'Вы всегда можете <a href="'.dir_tek().'edit.php?id='.$rr['id'].'&pass='.$rr['pass'].'"><b>отредактировать</b></a> объявление<br><br>';
		$arr[$rr['email']] .= 'Текст объявления</b><br>'.$rr['opis'].'<br>';
		}
		
	if($arr)
		{
		foreach($arr as $index=>$ar)
			{
			@mail_utf8($index, $them, $mess.$ar.$adm, $rru['email']); 
			}
		}

}

?> 

Запуск в таком формате: cron /file-cron.php?key=KeYkeyKKey

 

// ключ можете любой задавать, какой Вам угодно

Link to post
Share on other sites
  • VIP

Элементарно, добавить ключ...


Запуск в таком формате: cron /file-cron.php?key=KeYkeyKKey

 

// ключ можете любой задавать, какой Вам угодно

 

Может вот типа так? Спрашиваю для себя, проверка знаний :)

<?
$transferred_key = $_GET["key"];
$original_key = 'KeYkeyKKey';

if($transferred_key == $original_key) {
 //код остальной
}
?>
Link to post
Share on other sites

т.е. KeYkeyKKey - это ключ, который мне надо придумать, а в планировщике крон, создать задание GET http://мойсайт/файл?key=KeYkeyKKey

?

Не-не, он прав, профтыкал немного )

 

if(isset($_GET['$key']) AND $_GET['$key'] == 'KeYkeyKKey') {
Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...