Skocz do zawartości

[PHP] Drobna edycja skryptu


BlackHat

Rekomendowane odpowiedzi

Witam :)

otóż razem z kolegą napisaliśmy taki skrypcik (dzięki manualowi ^^) ale nie bardzo wiemy jak dodać do niego 2 interesujące nas rzeczy...

1. zastępowanie fragmentu tekstu znaczkiem "...", o co chodzi:

$plik = "test.txt";
$dane = file($plik);

(RESZTA KODU)

for($i=0;$i<count($dane);$i++) {
mail($dane[$i], 'TYTUL', $tresc, $header);
echo "Mailng wyslano do:<br>";
echo(($i+1).'.) '.$dane[$i])."<br>";
echo "DONE.";
}

Skrypt pobiera adresy email z pliku txt następnie wysyła maila i wyświetla coś takiego:

Mailng wyslano do:
1.) skrzynkapocztowa@email.pl

mnie zaś interesowała by taka forma, że pobierałby ten adres, wysyłał tego emaila ale wyświetlał coś takiego:

Mailng wyslano do:
1.) ...@email.pl

a szczyt marzeń to:

Mailng wyslano do:
1.) ...owa@email.pl

(3 ost litery maila przed znakiem @)

2. po wyświetleniu wszystkich wysłanych maili tzn:

Mailng wyslano do:
1.) ...owa@email.pl
2.) ...owa@email.pl
(...)
100.) ...owa@email.pl

pokazuje się odnośnik a po kliknięciu generuje mi stronę lub plik txt do zapisania na dysku lub na serwerze z tą samą treścią.

Z góry dziękuję za pomoc :)

naughty.gif
Odnośnik do komentarza
Udostępnij na innych stronach

tak na szybko .. i w łatwy sposób :)

// $dane[$i] tu masz email

$tablica=explode('@',$dane[$i]);

$wszystko_przed_malpa=$tablica[0];

$wszystko_po_malpie=$tablica[1];

$ostatnie_3_litery_z_wszystko_przed_malpa=substr($wszystko_przed_malpa,-3,3);

I sklejamy wszystko w całość :)

$twoj_wymarzony_email='...'.$ostatnie_3_litery_z_wszystko_przed_malpa.'@'.$wszystko_po_malpie;

Oczywiście występują niepotrzebne przypisania ... ale mam nadzieje, że zrozumiesz ten kod ;)

// Tam gdzie pogrubione był błąd

Odnośnik do komentarza
Udostępnij na innych stronach

problem jest nadal... teraz to wygląda tak:

$tablica=explode('@',$dane[$i]);

$przed_malpa=$tablica[0];
$po_malpie=$tablica[1];

$ostatnie_3_litery_z_przed_malpa=substr($przed_malpa,-3,3);


$ograniczony_email='...'.$ostatnie_3_litery_z_przed_malpa.'@'.$po_malpie;

echo "Mailng wyslano do:<br>";
for($i=0;$i<count($dane);$i++) {
mail($dane[$i], 'Qzone.pl - zapraszamy :)', $tresc, $header);
echo(($i+1).'.) '.$ograniczony_email)."- <font color=green>DONE</font>.<br>";
}

a wynik jest taki:

Mailng wyslano do:

1.) ...@- DONE.

2.) ...@- DONE.

czyli nie pokazuje ostatnich 3 liter z maila i domeny maila. Help?

naughty.gif
Odnośnik do komentarza
Udostępnij na innych stronach

Własna implementacja :)

<?
// wyslij_mailing.php
$plik = "plik_maili.txt";
$dane = file($plik); // ladujemy emaile do tablicy $dane
$ile = 0;

switch($_GET[akcja])
{

case 'wyslij_mailing':
	ob_start();
	echo '<strong>Mailng wyslano o '.date("Y-m-d : H:i").' do:</strong><br>';
	foreach($dane As $adres_email)
	{

		//wysylam maile
		mail($adres_email, 'TYTUL', $tresc, $header);

		// przygotowanie raportu
		$ile++;
		$skladowe = explode('@',$adres_email);
		echo '('.$ile.') ...'.substr($skladowe[0],-3,3).'@'.$skladowe[1].'<br />';
	}
	echo '<strong>W sumie wysłano: '.$ile.' emaile(i)</strong><br>';
	$content = ob_get_contents();	
	ob_end_clean();

	// zapisuje bufor do pliku
	$fp = fopen('raport_mailingu.html', 'w');
	fwrite($fp, $content); 
	fclose($fp);
	echo $content;
	if(file_exists('raport_mailingu.html')) echo'<a href="?akcja=export_raportu">Pobierz raport</a>';
	break;

case'export_raportu':
	header('Content-Type: application/octet-stream'); 
	header('Content-Disposition: attachment; filename="raport_mailingu.html"');
	readfile('raport_mailingu.html');
	break;

default:
	echo'<a href="?akcja=wyslij_mailing">Wyslij mailing</a>';
}
?>

Zakładając, że dane emalii zapisane w pliku plik_maili.txt w formacie jeden pod drugim bo tak ładuje funkcja file() dane do tablicy...

Moje sugestie:

- jeśli maili będzie dosyć dużo może być wymagane zwiększenie maksymalnego czasu wykonywania skryptu inaczej przed wysłaniem wszystkich się "wysypie";

- plik raportu można tworzyć dopisując dane w pętli foreach wtedy w razie wysypania będzie znana faktyczna ilosc wysłanych maili, ale to pozostawiam już na zajęcia własne :) w koncu miała to być "drobna edycja" ....

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności