Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zdarzenie na przycisk
Forum PHP.pl > Forum > PHP
pysiok1983
Witam!

Mam drobny problem z reakcją strony na przycisk. Mam formularz, w którym podaje się maila oraz jest przycisk wyślij. Przycisk i pole do wpisywania:
Kod
<form action="" method="POST">
<span class="style1">wpisz e-mail:</span>
<input tabindex="2" id="user_password" name="mail_to" maxlength="45" size="43" class="form" type="text" style="height:30; font-size:18px" />
<br><br><br />
<input class="mkj" type="submit" value="Wyślij" style="font-size:18px; font:bold "/>
</form>


W tym samym pliku mam również wpleciony kod php:
Kod
if (isset($_POST['mail_to'])){......... wówczas wyśle maila


Moje pytanie brzmi co należy dodać aby po kliknięciu na przycisk wyślij (po jego kliknięciu pojawia się nowa strona z komunikatem, że mail jest wysyłany, a jak skończy wysyłać, wyświetli się że strona, że już wysłano)

echo nie wchodzi w grę ponieważ chcę aby komunikat był wyświetlany na innej stronie już bez formularza i innych rzeczy, które są widoczne na początku.

Dzięki za pomoc!
Crozin
Jeżeli wysyłasz jednego maila, to nawet nie ma sensu pokazywać komunikatu "wysyłany", bo jest to z reguły operacja na tyle szybka, że wręcz niezauważalna.
pysiok1983
Hmmm no dobra w zasadzie to prawda. A w jaki sposób mogę rozwiązać to aby po wysłaniu wyczyścił stronę i załadował nowy html??
matixrr
No to po wyslaniu maila ustawiasz przekierowanie na inna strone np po 3 sekundach.

http://www.google.pl/search?client=opera&a...-8&oe=utf-8
pysiok1983
Tylko wolałbym aby wszytko było w jednym pliku php
Crozin
Robisz przkierowanie header" title="Zobacz w manualu PHP" target="_manual Location, do tego samego pliku, z tym, że dodajesz jeszcze w adrsie zmienna: success=true, a w kodzie strony
  1. <?php if(isset($_GET['success']): ?><p>Mail wysłany!</p><?php endif; ?>
pysiok1983
Ok! Mam też taki problem! Mam w html wpleciony kod php! W Php mam sprawdzany warunek czy mail jest ok i czy zostało coś wpisane! Mam tam rownież klawisz wyśli! Dodalem echo przed wyslaniem maila aby wyswielic ze mail jest wysylany! Niestety echo pojawia się dopiero w momencie kiedy mail już został wysłany!
erix
Cytat
Niestety echo pojawia się dopiero w momencie kiedy mail już został wysłany!

To zrób przed wysyłaniem maila warunek sprawdzający zawartość pól...

PS. Nie krzycz.
pysiok1983
Nie podziałało!

Jak klikam wyślij to przez chwile pojawia się kawałek strony a później to co jest w echo chociaż echo zrobiłem przed wysłaniem!

Czemu nie chce wyświetlić tego ? Tylko najpierw zajmuje się wysłaniem strona jakby wczytywała się od początku a później wyświetla wszytko!!

Tak jakby nie odświeżał strony tylko najpierw wysyła a potem odświeża!
erix
Cytat
Jak klikam wyślij to przez chwile pojawia się kawałek strony a później to co jest w echo chociaż echo zrobiłem przed wysłaniem!

Może pokażesz, jak próbowałeś? Szklana kula odmawia pomocy.

Cytat
PS. Nie krzycz.
pysiok1983
Kod
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php
if (isset($_POST['execute']))
{

if ( get_magic_quotes_gpc() === 1 )
   $_POST['execute'] = stripslashes($_POST['execute']);
    
    
    $zmienna = $_GET['var'];

//echo $zmienna;


// manage errors
error_reporting(E_ALL); // php errors
define('DISPLAY_XPM4_ERRORS', true); // display XPM4 errors

// path to 'MAIL.php' file from XPM4 package
require_once '../MAIL.php';

// get ID value (random) for the embed image
$id = MIME::unique();

// initialize MAIL class
$m = new MAIL;
// set from address and name
$m->From('sprzedaz@xxxxx.com.pl', 'xxxxxx');
// add to address and name

$adr = "";

if (isset($_POST['mail_to'])){


$jakaszmienna = 'dziala i to bez problemu';
eval('echo $jakaszmienna;');

}

if (isset($_POST['mail_to'])){


$adr =$_POST['mail_to'];


if(preg_match('/^[a-zA-Z0-9\.\-\_]+\@[a-zA-Z0-9\.\-\_]+\.[a-z]{2,4}$/D', $adr)){


$m->AddTo($adr, 'Client Name') ? 'Mail został wysłany!' : 'Podano niepoprawny email!';

//$m->AddTo($mail, 'Client Name');
// set subject

$m->Subject('temat');



$tresc="llllllll.\n\n";
$tresc.=$zmienna;
$tresc.="\nJednocześnie zapraszamy do zapoznania się z naszą ofertą w innych lokalizacjach.\n";






$str='<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /></head><body>śćęółźżćńĄŻŚŹĘĆŃŁÓs</body></html>';



//$m->Text($str);
$m->Text($tresc);
// set text/html version of message
//$m->Html('<b>HTML</b> version of <u>message</u>.<br><i>Powered by</i> <img src="cid:'.$id.'">');
//$m->Html($tresc);
// add attachment ('text/plain' file)


//$m->Attach('source file', 'text/plain');
//$f = 'xpertmailer.gif';

// add inline attachment '$f' file with ID '$id'
//$m->Attach(file_get_contents($f), FUNC::mime_type($f), null, null, null, 'inline', $id);


//echo "Dziękujemy, ";

//$m->Send('client') ? 'Mail został wysłany!' : 'Wysyłanie nie powiodło się, spróbuj ponownie!';
$m->Send('client');
//echo 'wiadomosc poszla';


header("Location: pp.html");

echo "Dziękujemy, e-mail został wysłany!";

$adr = "";
$mail="";

}
else {
echo "Podano niepoprawny email! Popraw email i spróbuj ponownie!";
}


}

// send mail
//echo $m->Send('client') ? 'Mail sent !' : 'Error !';

// optional for debugging ----------------
//echo '<br /><pre>';
// print History
//print_r($m->History);
// calculate time
list($tm1, $ar1) = each($m->History[0]);
list($tm2, $ar2) = each($m->History[count($m->History)-1]);
//echo 'The process took: '.(floatval($tm2)-floatval($tm1)).' seconds.</pre>';


if(isset($HTTP_GET_VARS))
    $global_vars = $HTTP_GET_VARS;
else
    $global_vars = $_REQUEST;

if(isset($global_vars["submitted"]))
{
   // echo "Test results:<br>";
    $m = new MAIL;
    $m->Send('client') ? 'Mail sent !' : 'Error !';

   // echo "kkkkk";
}

function get($sName) {
    global $global_vars;
    if(isset($global_vars[$sName]))
        return $global_vars[$sName];
    else
        return "";
}
    

}

echo('<form action="j.php" method="post">
<input tabindex="2" id="user_password" name="mail_to" maxlength="45" size="43" class="form" type="text" style="height:30; font-size:18px" />
<input type="hidden" name="execute" value="true">
<input type="submit" value="Wykonaj kod">
</form>');
?>



</body>
</html>
erix
Przecież kod jest wykonywany od góry do dołu, nie na odwrót. winksmiley.jpg
pysiok1983
hmmm no dobrze tylko nawet jeśli echo jest przed wysłaniem maila to i tak najpierw kończy wysyłać a później wyświetla. Tak jakby najpierw całego php wykonałquestionmark.gif
erix
Bo wysyłanie maila musisz dać W WARUNEK, a nie POZA.

To tak samo, jakbyś chciał grabiami wygrzebać kasztana z jesiennych liści, a nie sięgasz nimi nad owoc. winksmiley.jpg
pysiok1983
Panie od kasztanków! Jakby Pan nie zauważył send jest w warunku także ...

To tak samo jakbyś chciał zerwać kasztana a nie widziałbyś gdzie jest drzewo smile.gif

Kod
<?php
ob_start();

    if (isset($_POST['execute']))
    {

        if ( get_magic_quotes_gpc() === 1 )
           $_POST['execute'] = stripslashes($_POST['execute']);
        $zmienna = $_GET['var'];
        error_reporting(E_ALL); // php errors
        define('DISPLAY_XPM4_ERRORS', true); // display XPM4 errors
        require_once '../MAIL.php';
        $id = MIME::unique();
        $m = new MAIL;
        $m->From('sprzedaz@xxxxx.com.pl', 'xxxxxx');
        $adr = "";

        if (isset($_POST['mail_to']))
        {


            $jakaszmienna = 'dziala i to bez problemu';
            eval('echo $jakaszmienna;');

        }

            if (isset($_POST['mail_to']))
            {


                $adr =$_POST['mail_to'];


                if(preg_match('/^[a-zA-Z0-9\.\-\_]+\@[a-zA-Z0-9\.\-\_]+\.[a-z]{2,4}$/D', $adr))
                {


                    $m->AddTo($adr, 'Client Name') ? 'Mail został wysłany!' : 'Podano niepoprawny email!';

                    $m->Subject('temat');

    

                    $tresc="llllllll.\n\n";

                    $m->Text($tresc);

                    header("Location: pp.html");

                    echo "Dziękujemy, e-mail został wysłany!";

                    $adr = "";
                    $mail="";

                 }
                 else
                {
                     echo "Podano niepoprawny email! Popraw email i spróbuj ponownie!";
                 }


    }

list($tm1, $ar1) = each($m->History[0]);
list($tm2, $ar2) = each($m->History[count($m->History)-1]);
if(isset($HTTP_GET_VARS))
    $global_vars = $HTTP_GET_VARS;
else
    $global_vars = $_REQUEST;

if(isset($global_vars["submitted"]))
{
   // echo "Test results:<br>";
    $m = new MAIL;
    $m->Send('client') ? 'Mail sent !' : 'Error !';

   // echo "kkkkk";
}

function get($sName) {
    global $global_vars;
    if(isset($global_vars[$sName]))
        return $global_vars[$sName];
    else
        return "";
}
    

}

echo('<form action="j.php" method="post">
<input tabindex="2" id="user_password" name="mail_to" maxlength="45" size="43" class="form" type="text" style="height:30; font-size:18px" />
<input type="hidden" name="execute" value="true">
<input type="submit" value="Wykonaj kod">
</form>');
ob_end_flush();

?>


Co by wątpliwości nie było
erix
Cytat
To tak samo jakbyś chciał zerwać kasztana a nie widziałbyś gdzie jest drzewo

A patrząc na powyższy listing to tak, jakbyśmy mówili o zupełnie innych drzewach, gdyż:
  1. z tego, co pobieżnie widzę, to są dwa różne listingi
  2. nie stosujesz wcięć i nie widać wszystkiego na pierwszy rzut oka
  3. do listingów PHP jest osobny bbcode
pysiok1983
Spoko ! Nie zmienia to jednak faktu, że nie działa! Czy trzeba jakąś funkcją wywoływać to aby php najpierw wykonał echo a później to co ma dalej w listingu?
Send jest funkcją zapisaną gdzie indziej, mimo wszytko kod nie chce wykonać innych poleceń, które są wcześniej dopóki nie wykona senda. Można jakoś to rozwiązać?? Nie wiem przerwać czy cos?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.