[php]urlencode

Pagina: 1
Acties:

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Ik heb het volgende script gemaakt. Het is de bedoeling dat hij geen runtime error krijgt bij het sturen naar alle leden. Maar nu kan ik niet al te grootte teksten typen, want dan werkt het refresh gebeuren niet meer. Weet iemand anders een oplossing met refresh? Ik wil namelijk geen Bcc gebruiken voor het mailen.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?
 
if ($action=="verstuur") 
{ 
$query=mysql_query("SELECT mail FROM mailing WHERE nieuwsbrief='1'"); 
$sub=urlencode($sub); 
$inh=urlencode($inh); 
$stappenvan = 3; // geeft aan hoeveel je er wilt laten zien 
$van = ($pagina * 3) -3; // geeft aan vanaf waar je wilt beginnen 
$tot = $van + 3; 
$aantal = mysql_num_rows($query); 
$reload = $aantal/$stappenvan; 

if ( $aantal >= $tot){ 
$pagina_verder = $pagina + 1; 
echo "<meta http-equiv=\"refresh\" content=\"2; url=?action=verstuur&amp;pagina=$pagina_verder&amp;inh=$inh&amp;sub=$sub\">"; 
echo "$pagina/$reload"; 

$sub2 = urldecode($sub); 
$inh2 = urldecode($inh); 
$query2=mysql_query("SELECT mail FROM mailing WHERE nieuwsbrief='1' ORDER BY mail DESC LIMIT $van,$stappenvan"); 

while ($gegevens=mysql_fetch_array($query2)) 
{ 
//add From: header 
$headers = "From: Vakantieboard <no_repeat@vakantieboard.nl>\r\n"; 

//specify MIME version 1.0 
$headers .= "MIME-Version: 1.0\r\n"; 

//unique boundary 
$boundary = uniqid("HTMLDEMO"); 

//tell e-mail client this e-mail contains//alternate versions 
$headers .= "Content-Type: multipart/alternative" . 
   "; boundary = $boundary\r\n\r\n"; 

//message to people with clients who don't 
//understand MIME 
$headers .= "This is a MIME encoded message.\r\n\r\n"; 

//plain text version of message 
$headers .= "--$boundary\r\n" . 
   "Content-Type: text/plain; charset=ISO-8859-1\r\n" . 
   "Content-Transfer-Encoding: base64\r\n\r\n"; 
$headers .= chunk_split(base64_encode("This is the plain text version!")); 

//HTML version of message 
$headers .= "--$boundary\r\n" . 
   "Content-Type: text/html; charset=ISO-8859-1\r\n" . 
   "Content-Transfer-Encoding: base64\r\n\r\n"; 
$headers .= chunk_split(base64_encode("$inh2")); 

//send message 
mail($gegevens[mail],$sub2, "", $headers); 
$teller++; 
} 
} 
echo "<center>De mail is verstuurd naar <b>$teller</b> leden..."; 
echo "<br><br><a href='?action=admin'>Terug</a></center>"; 
} 
?> 
?>

  • Grum
  • Registratie: Juni 2001
  • Niet online
indent je code eens netjes .. misschien willen er dan mensen gaan kijken

[edit: OFFTOPIC BUG TEST!]
PHP:
1
2
3
<?
echo "<meta http-equiv=\"refresh\" content=\"2; url=?action=verstuur&amp;amp;pagina=$pagina_verder&amp;amp;inh=$inh&amp;amp;sub=$sub\">"; 
?>

  • Grum
  • Registratie: Juni 2001
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?
 
if ($action=="verstuur") 
{ 
    $query = mysql_query("SELECT mail FROM mailing WHERE nieuwsbrief='1'"); 
    $sub = urlencode($sub); 
    $inh = urlencode($inh); 
    $stappenvan = 3; // geeft aan hoeveel je er wilt laten zien 
    $van = ($pagina * 3) -3; // geeft aan vanaf waar je wilt beginnen 
    $tot = $van + 3; 
    $aantal = mysql_num_rows($query); 
    $reload = $aantal/$stappenvan; 

    if ( $aantal >= $tot){ 
        $pagina_verder = $pagina + 1; 
        echo "<meta http-equiv=\"refresh\" content=\"2; url=?action=verstuur&amp;amp;amp;pagina=$pagina_verder&amp;amp;amp;inh=$inh&amp;amp;amp;sub=$sub\">"; 
        echo "$pagina/$reload"; 

        $sub2 = urldecode($sub); 
        $inh2 = urldecode($inh); 
        $query2=mysql_query("SELECT mail FROM mailing WHERE nieuwsbrief='1' ORDER BY mail DESC LIMIT $van,$stappenvan"); 

        while ($gegevens=mysql_fetch_array($query2)) 
        { 
            //add From: header 
            $headers = "From: Vakantieboard <no_repeat@vakantieboard.nl>\r\n"; 

            //specify MIME version 1.0 
            $headers .= "MIME-Version: 1.0\r\n"; 
        
            //unique boundary 
            $boundary = uniqid("HTMLDEMO"); 

            //tell e-mail client this e-mail contains//alternate versions 
            $headers .= "Content-Type: multipart/alternative; ".
                    "boundary = $boundary\r\n\r\n"; 
 
            //message to people with clients who don't 
            //understand MIME 
            $headers .= "This is a MIME encoded message.\r\n\r\n"; 
 
            //plain text version of message 
            $headers .= "--$boundary\r\n" . 
                "Content-Type: text/plain; charset=ISO-8859-1\r\n" . 
                "Content-Transfer-Encoding: base64\r\n\r\n"; 
            $headers .= chunk_split(base64_encode("This is the plain text version!")); 

            //HTML version of message 
            $headers .= "--$boundary\r\n" . 
                "Content-Type: text/html; charset=ISO-8859-1\r\n" . 
                "Content-Transfer-Encoding: base64\r\n\r\n"; 
            $headers .= chunk_split(base64_encode("$inh2")); 

            //send message 
            mail($gegevens[mail],$sub2, "", $headers); 
            $teller++; 
        } 
    } 
    echo "<center>De mail is verstuurd naar <b>$teller</b> leden..."; 
    echo "<br><br><a href='?action=admin'>Terug</a></center>"; 
} 
?>

zo dus :)

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
ja zal ik voortaan ff doen.

  • BiOCHiP908
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2003

BiOCHiP908

Hmmmzzz? Jaja....

Als ik het goed begrijp, stuur je een mail naar een aantal leden, waarvan je de gegevens uit een database haalt. Maar waarom dan die reload? Waarom niet gewoon in 1x iedereen aflopen in die while loop?

"I'll rip the eyes out of your head and piss at your dead skull!" - Jack Nicholson
"Grappig... luie mensen schreeuwen altijd RTFM naar andere luie mensen :)" - Vlasbaard


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Dat is om een runtime error te verkomen. Als ik bijv 2000 leden heb en naar elk lid moet een bericht worden gestuurd van 100 kb dan kan het zijn dat er een runtime error komt. Meestal is dit na 300 sec. Als ik dan telkens ff een reload plaats dan komt er nooit een rumtime error. Ik wil geen Bcc gebruiken.

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08-2025

Tim

Op vrijdag 29 juni 2001 12:44 schreef frankschers het volgende:
Dat is om een runtime error te verkomen. Als ik bijv 2000 leden heb en naar elk lid moet een bericht worden gestuurd van 100 kb dan kan het zijn dat er een runtime error komt. Meestal is dit na 300 sec. Als ik dan telkens ff een reload plaats dan komt er nooit een rumtime error. Ik wil geen Bcc gebruiken.
is dat niet gewoon omdat maxmium tijdlimiet is bereikt?

zo ja, even aan het einde van je loopje set_time_limit(300) zetten..

  • BiOCHiP908
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2003

BiOCHiP908

Hmmmzzz? Jaja....

Wat voor rechten heb je op die server waar hij draait? Je kan namelijk misschien vanuit je PHP script een Perl script aanroepen die het op de achtergrond uitvoert.

Nog een oplossing (wel een gore): In plaats van de meta-refresh die je gebruikt, na je while loopje een header("Location: ...") sturen, dan geeft je script aan wanneer er geredirect moet worden ipv dat de browser eigen initiatief neemt.

(waarom is het onderwerp eigenlijk urlencode, heeft dat er ook maar iets mee te maken?)

"I'll rip the eyes out of your head and piss at your dead skull!" - Jack Nicholson
"Grappig... luie mensen schreeuwen altijd RTFM naar andere luie mensen :)" - Vlasbaard


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Nee, maar als die refresh komt wordt de inhoud van de mail niet mee genomen. Dus dan laat ik alle spatie vervangen door + zodat ik die via de refresh meekan nemen naar de volgende pagina.

  • BiOCHiP908
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2003

BiOCHiP908

Hmmmzzz? Jaja....

Op vrijdag 29 juni 2001 14:35 schreef frankschers het volgende:
Nee, maar als die refresh komt wordt de inhoud van de mail niet mee genomen. Dus dan laat ik alle spatie vervangen door + zodat ik die via de refresh meekan nemen naar de volgende pagina.
Je kan natuurlijk ook dat soort dingen met sessies doen. Zie: http://www.php.net/manual/en/ref.session.php

"I'll rip the eyes out of your head and piss at your dead skull!" - Jack Nicholson
"Grappig... luie mensen schreeuwen altijd RTFM naar andere luie mensen :)" - Vlasbaard


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Zo dus?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?
if ($action=="verstuur")
{
 $query=mysql_query("SELECT mail FROM mailing WHERE nieuwsbrief='1'");
 //sessions begin
 session_register("inh");
 session_register("sub");
 //sessions eind
 $stappenvan = 3; // geeft aan hoeveel je er wilt laten zien
 $van = ($pagina * 3) -3; // geeft aan vanaf waar je wilt beginnen
 $tot = $van + 3;
 $aantal = mysql_num_rows($query);
 $reload = $aantal/$stappenvan;

 if ( $aantal >= $tot){
   $pagina_verder = $pagina + 1;
   echo "<meta http-equiv=\"refresh\" content=\"2; url=?action=verstuur&amp;pagina=$pagina_verder\">";
   echo "$pagina/$reload";


   $query2=mysql_query("SELECT mail FROM mailing WHERE nieuwsbrief='1' ORDER BY mail DESC LIMIT $van,$stappenvan");

    while ($gegevens=mysql_fetch_array($query2))
    {
    //add From: header
    $headers = "From: Vakantieboard <no_repeat@vakantieboard.nl>\r\n";

    //specify MIME version 1.0
    $headers .= "MIME-Version: 1.0\r\n";

    //unique boundary
    $boundary = uniqid("HTMLDEMO");

    //tell e-mail client this e-mail contains//alternate versions
    $headers .= "Content-Type: multipart/alternative" .
       "; boundary = $boundary\r\n\r\n";

       //message to people with clients who don't
       //understand MIME
       $headers .= "This is a MIME encoded message.\r\n\r\n";

       //plain text version of message
       $headers .= "--$boundary\r\n" .
          "Content-Type: text/plain; charset=ISO-8859-1\r\n" .
          "Content-Transfer-Encoding: base64\r\n\r\n";
          $headers .= chunk_split(base64_encode("This is the plain text version!"));

       //HTML version of message
       $headers .= "--$boundary\r\n" .
          "Content-Type: text/html; charset=ISO-8859-1\r\n" .
          "Content-Transfer-Encoding: base64\r\n\r\n";
          $headers .= chunk_split(base64_encode("$inh2"));

          //send message
          mail($gegevens[mail],$sub2, "", $headers);
          $teller++;
}
}

echo "<center>De mail is verstuurd naar <b>$teller</b> leden...";
echo "<br><br><a href='?action=admin'>Terug</a></center>";
}
?>

  • BiOCHiP908
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2003

BiOCHiP908

Hmmmzzz? Jaja....

Ja ongeveer... staat in je php.ini session.autostart op 1 of iets dergelijks? Anders moet je bovenaan ergens ook nog session_start() zetten. Je kan nu ook gewoon het paginanummer in je sessie zetten zodat je niks meer op de URL mee hoeft te geven. Als je dat eenmaal gedaan hebt haal je de meta-refresh weg en zet je gewoon onder aan de while loop (dus nog binnen de if statement) iets als header("Location: ${PHP_SELF}");
Dan wordt er dus pas gerefreshed als het scriptje daar ook daadwerkelijk aan toe is.
Trouwens: je hoeft de sessie niet te gebruiken, je kan in de header redirect (de header("location: ...") ) ook gewoon dingen achter te URL meegeven.

Ik zou trouwens toch de voorkeur geven aan een extern Perl scriptje wat gestart wordt door een PHP pagina en wat op de achtergrond loopt...

"I'll rip the eyes out of your head and piss at your dead skull!" - Jack Nicholson
"Grappig... luie mensen schreeuwen altijd RTFM naar andere luie mensen :)" - Vlasbaard


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Nu krijg ik telkens een lege mail binnen.
Ik heb session_start(); erin geplaatst.
Hoe kan dat?

En als ik

session_register("count");
$count++;
echo"$count";

telt hij wel telkens als ik de pagina opnieuw inlaad.

Mogen erwel spatie in staan?

  • BiOCHiP908
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2003

BiOCHiP908

Hmmmzzz? Jaja....

Op vrijdag 29 juni 2001 15:16 schreef frankschers het volgende:
Nu krijg ik telkens een lege mail binnen.
Ik heb session_start(); erin geplaatst.
Hoe kan dat?

En als ik

session_register("count");
$count++;
echo"$count";

telt hij wel telkens als ik de pagina opnieuw inlaad.

Mogen erwel spatie in staan?
Hahaha ik zie het al (denk ik) ;)

Eerst had je er nog in staan $inh2 = urldecode($inh) en $sub2 = urldecode($sub). Die heb je weggehaald, maar als je het mailtje samenstelt gebruik je nog wel $inh2 en $sub2 ipv gewoon $inh en $sub :)

"I'll rip the eyes out of your head and piss at your dead skull!" - Jack Nicholson
"Grappig... luie mensen schreeuwen altijd RTFM naar andere luie mensen :)" - Vlasbaard


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Klopt, maar nu krijg ik steeds de mail die ik als eerste heb ingetypt. En niet de nieuwe tekst.

Hoe kan ik dat weer resetten als ik alle leden heb gemaild?

  • BiOCHiP908
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2003

BiOCHiP908

Hmmmzzz? Jaja....

Op vrijdag 29 juni 2001 15:31 schreef frankschers het volgende:
Klopt, maar nu krijg ik steeds de mail die ik als eerste heb ingetypt. En niet de nieuwe tekst.

Hoe kan ik dat weer resetten als ik alle leden heb gemaild?
Ehm, kan op twee manieren. De makkelijke is al je browser windows aflsuiten, dan is je sessie namelijk stuk en blijft er niks hangen :P

De betere: Als je alle leden gemaild hebt (dus daar waar nu die echo's onderaanstaan) session_unregister("inh") en session_unregister("sub") neerzetten. Dat moet wel helpen denk ik.

"I'll rip the eyes out of your head and piss at your dead skull!" - Jack Nicholson
"Grappig... luie mensen schreeuwen altijd RTFM naar andere luie mensen :)" - Vlasbaard


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Nu ben ik aan het vechten met

if ($aantal == $tot){
session_unregister("inh");
session_unregister("sub");
}

Want als ik ze achter de echo zet wordt hij direct leeg gemaakt. Ik wil echter pas wanneer alle mails zijn verzonden.
Kan iemand daar mee helpen?

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 14-03 09:10
Ik gebruik eens set_time_limit(300);

Weet iemand of dit ook echt werkt?
Ik kan dit namelijk niet controleren.
Pagina: 1