Sign in to follow this  
Followers 0
sheynhjk

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

35 posts in this topic

Всем доброго вечера! Кто понимает в 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))

Спасибо!

Share this post


Link to post
Share on other sites

Должен быть if, период.

Код не полный дали.

Share this post


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))

Спасибо!

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

Share this post


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']);

}

}

?>

Share this post


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']); 
			}
		}
?> 

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

Share this post


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

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

 

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

 

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

sheynhjk likes this

Share this post


Link to post
Share on other sites

 

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

 

Круто!

Share this post


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?

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

Share this post


Link to post
Share on other sites

Круто!

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

ComTell likes this

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

+1

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

 

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

Дыра в коде
sheynhjk likes this

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

Выше ответил...

Share this post


Link to post
Share on other sites

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

Share this post


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

 

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

sheynhjk likes this

Share this post


Link to post
Share on other sites

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

$key = 'KeYkeyKKey';

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

ну так кей будет уже задан в самом начале кода и он будет isset($key) AND $key == 'KeYkeyKKey', в чем тут проверка?))

sheynhjk likes this

Share this post


Link to post
Share on other sites

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


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

 

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

 

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

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

if($transferred_key == $original_key) {
 //код остальной
}
?>
sheynhjk and rafonets like this

Share this post


Link to post
Share on other sites

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

?

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

 

if(isset($_GET['$key']) AND $_GET['$key'] == 'KeYkeyKKey') {

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.