Jump to content
Sign in to follow this  
sheynhjk

Подскажите пожалуйста по 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))

Спасибо!

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

 

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

Дыра в коде

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

 

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

Share this post


Link to post
Share on other sites

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

$key = 'KeYkeyKKey';

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

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

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) {
 //код остальной
}
?>

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...