Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam! Mam taki dość nietypowy problem!
Mam 2 pliki ze skryptem php wykonujący pewne operacje, wyglądają one tak:
w katalogu /var/www/apache2-default/katalog/numery
plik -
wyc_numer.php z kodem:
<?php
ob_start();
?>
<?php
define('FPDF_FONTPATH','font/');
require_once('html2fpdf.php');
ob_start();
include_once('/var/www/apache2-default/katalog/pliki/numer1.php');
$htmlbuffer = ob_get_contents();
ob_end_clean();
$pdf = new HTML2FPDF('P','mm','A4');
$pdf->AddPage();
$pdf->SetFont('timespl','',11);
$pdf->SetAutoPageBreak(auto , 8);
$pdf->UseCSS(true);
$pdf->Image('logo.png', $pdf->GetX()+1, $pdf->GetY()+1, 181, 14, 'PNG');
$pdf->SetMargins(10, 8, 20);
$pdf->WriteHTML($htmlbuffer);
$pdf->Output("numer.pdf", "F");
?>
Jak widać skrypt ten otwiera plik php zamienia go na pdf i zapisuje.
( Pobiera on kod z numer1.php i zapisuje do numer - jest tak dlatego że wczesniej zrobiłem konwersję
z numer.php do numer1.php - polskie znaki )
plik drugi służy do wysyłania maila z załącznikiem -
wyslij_numer.php z kodem:
<?php
//define the receiver of the email
$to = 'benek123@o2.pl';
//define the subject of the email
$subject = 'Wysylanie maila';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: email@o2.pl\r\nReply-To: email@o2.pl";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
//read the atachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
$attachment = chunk_split(base64_encode(file_get_contents('numer.pdf')));
//define the body of the message.
ob_start(); //Turn on output buffering
?>
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/plain; charset="iso-8859-2"
Content-Transfer-Encoding: 7bit
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="iso-8859-2"
Content-Transfer-Encoding: 7bit
<h2>Wysylanie maila!</h2>
<p>To jest mail<br>
Jan Kowalski - numer</p>
--PHP-alt-<?php echo $random_hash; ?>--
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/zip; name="numer.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
<?php echo $attachment; ?>
--PHP-mixed-<?php echo $random_hash; ?>--
<?php
$godzina = date("H:i:s");
$data = date("Y-m-d");
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "wysłany - o godzinie: $godzina dnia: $data - OK<br>" : "nie wysłany - BŁĄD<br>";
?>
Jak widać kod wysyla utworzony plik pdf'a
Pozatym mam plik który wykonuje te skrypty w lokalizacji bliżej :
/var/www/apache2-default/katalog/
o nazwie wykon.sh
skrypt bash który wykonuje te skrypty php z wpisem:
php wyc_numer.php
php wyslij_numer.php
I teraz tak:
Chciałbym zrobić skrypt php formularza w którym wpiszę 6 cyfr np 123456
i po pierwsze utowrzy mi te dwa pliki ze skryptem (z plików wyc_numer.php i wyslij_numer.php) ale wpis "numer" w nazwie zmieni na wpisane do formularza cyfry
czyli:
jako pierwsze utowrzy w lokalizacji /var/www/apache2-default/katalog/numery:
wyc_123456.php
wyslij_123456.php
oraz w tych dwóch plikach w kodzie wszytskie wpisy "numer" zamieni też na te cyfry czyli - jak spojżycie
na powyższe kody w miejscach w których jest wpis "numer" zamieni na 123456.
I chodzi mi o taki skrypt formularza że po wpisaniu jakichkolwiek 6 cyfr będzie mi tworzył takie pliki ( z kodami z wyc_numer.php i wyslij_numer.php )
i zmieniał kod od środka na te numery i nazwy jak opisałem powyżej. Każde potwierdzenie przyciskie doda nowe pliki i zrobi te zmiany.
Pozatym aby do skryptu bash'a wykon.sh dopisywał dla każdego numeru te dwa wpisy
dla 123456:
php wyc_123456.php
php wyslij_123456.php
itd.
Był bym wdzięczny za pomoc.
Offline
Jak zrobić formularz, to mam nadzieje, że wiesz. Zaczne więc od momentu, gdy masz już w pewnej zmiennej ten ciąg cyfr, np.:
$cyfry = '123456'; $file[1] = '/var/www/apache2-default/katalog/numery/wyc_numer.php'; $file[2] = /var/www/apache2-default/katalog/numery/wyslij_numer.php'; $file_new[1] = '/var/www/apache2-default/katalog/numery/wyc_'.$cyfry.'.php'; $file_new[2] = '/var/www/apache2-default/katalog/numery/wyslij_'.$cyfry.'.php'; // teraz czas, na korekte tresci plikow for($i = 1; $i <2; $i++){ $lines = file($file[$i]); // zczytuje wiersze z pliku źródłowego do tablicy // otwiera plik docelowy do zapisu - tworzy go: if(!$handle = fopen($file_new[$i], "w")) die('Nie mogę utworzyć pliku docelowego'); foreach($lines AS $line) { $line = str_replace("numer", $cyfry, $line); // zamiana tresci fwrite($handle, $line); // zapis do pliku docelowego } fclose($handle); //kolejna sprawa to edycja pliku SH (zakladam, ze na koncu pliku jest pusta linia) if(!$handle = @fopen('/var/www/apache2-default/katalog/wykon.sh',"a")) die('Nie mogę otworzyć pliku skryptu SH'); fwrite($handle, "php ".$file_new[$i]."\n"); fclose($handle); }
Kod nie sprawdzony, ale powinien być OK.
Offline
Jeżeli dobrze rozumiem ten bełkot, chciałbym zadać pytanie: po cholerę Ci te pliki? Nie możesz użyć $_POST?
Offline
Elegancko!!! O to mi chodziło! Tylko mam jeszcze taką sprawę:
jak to udoskonalić żeby można było dokładnie to samo usunąć wpisując numer do formularza??
Czyli wpisuje zatwierdzam dodaje mi się wszystko - ok
znów wpisuje ten sam numer do drugiego pola formularza zatwierdzam i usuwa mi się wszystko:)??
Aha wiez jeszcze co zrobic żeby nie można było operacji dodawania zrobić dwa razy dla tego samego numeru??
Czyli wpisuje numer, dodaje - OK zaraz wpisuje ten sam zatwierdzam i dostaje komunikat że taki już jest??
- OK OK!:)
Już myślę że dam radę - warunek istnienia pliku - bez problemu.
- usuwanie za pomocą unlink
tylko niewiem jak usuwać te dodane linie z pliku??
Ostatnio edytowany przez debbie (2009-04-03 13:27:00)
Offline