Notice error
Ik krijg de volgende foutmelding wanneer ik mijn script run. Echter krijg ik deze error niet altijd. Bij het refreshen zal hij deze error om de 5 verversingen laten zien.
Notice: Uninitialized string offset: 36 in C:\xampp\htdocs\test_email.php on line 7
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
if(isset($_COOKIE['voornaam']) AND ($_COOKIE['achternaam']) AND ($_COOKIE['email']) AND ($_COOKIE['submitted'] = '1')){
$length = 7;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = "";
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
$a_key = sha1(md5($string));
$activation = 1;
echo $a_key;
}
$length = 7;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = "";
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
$a_key = sha1(md5($string));
$activation = 1;
echo $a_key;
}
Hoe kan dit en hoe is dit te voorkomen?
$string .= $characters[mt_rand(0, strlen($characters))];
Dit maken:
$string .= $characters[mt_rand(0, strlen($characters) -1 )];
Toevoeging op 08/07/2011 12:58:10:
Je if() is trouwens erg vaag:
Bedoel je dat ik het zo moet maken:
((isset($_COOKIE['voornaam']) AND (isset($_COOKIE['achternaam']) etc. ?
Of vraag je je af of ze allemaal true zullen zijn, want dat zijn ze per definitie, omdat ervoor een script registratie script zit die niet verder gaat wanneer je deze niet invult. Dat ik de waarde 1 er in stop was ik al achter gekomen. Althans ik merkte dat het niet werkte dus heb er een = bij gezet en toen werkte het.
Wat is handiger om de $vars te gebruiken of de cookies in je script? Ik kan ook eerst de $vars setten vanuit de cookies en dan de $vars bij de if statement gebruiken.
De strlen van $characters is 36. Maar omdat het eerste character op plaats 0 (nul) staat, staat de laatste op plaats 35. Vandaar strlen -1.
Hartelijk dank!
De rest is afhankelijk van wat jij met het script wil bereiken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Setting variables from cookies
$voornaam = $_COOKIE['voornaam'];
$achternaam = $_COOKIE['achternaam'];
$email = $_COOKIE['email'];
$submitted = $_COOKIE['submitted'];
$activation = '0';
// check if all cookies are been set and if the form has been filled in
if(isset($_COOKIE['voornaam']) AND ($_COOKIE['achternaam']) AND ($_COOKIE['email']) AND ($_COOKIE['submitted'] == '1')){
$length = 7;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = "";
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters)-1)];
}
$a_key = sha1(md5($string));
$activation = '1';?>
// Setting variables from cookies
$voornaam = $_COOKIE['voornaam'];
$achternaam = $_COOKIE['achternaam'];
$email = $_COOKIE['email'];
$submitted = $_COOKIE['submitted'];
$activation = '0';
// check if all cookies are been set and if the form has been filled in
if(isset($_COOKIE['voornaam']) AND ($_COOKIE['achternaam']) AND ($_COOKIE['email']) AND ($_COOKIE['submitted'] == '1')){
$length = 7;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = "";
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters)-1)];
}
$a_key = sha1(md5($string));
$activation = '1';?>
Daarnaast de volgende vraag:
Code (php)
In gewoon nederlands: Als COOKIE: voornaam, achternaam, email geset is. Dan zijn zij true. EN wanneer COOKIE: submitted geset is en gelijk is aan 1. Ga dan naar {uitvoering}. Klopt dit hoe ik dat zeg?
Gewijzigd op 08/07/2011 14:03:00 door Sven b
Dit stukje klopt niet. Je gebruikt namelijk maar 1 keer de isset functie. Wat wel werkt is:
I.p.v. && kun je ook AND gebruiken. Overigens moet je nummers altijd buiten quotes houden.
Bijv.
Ik ga er vanuit dat beide mogelijkheden mogelijk zijn, maar het handigste is die met de variabele setten, lijkt me. Heeft iemand een goed artikel over cookies? Ik vraag me namelijk af als ik 10 cookies maak krijgt de gebruiker ook 10 cookie bestanden?
De eerste methode is het best. Het is sneller dan eerst een variabele opslaan in een variabele en het kopiëren van variabelen is het nutteloost van wat je in PHP kunt doen (behalve als je het gaat typecasten o.i.d.)
oke, je zult helemaal gelijk hebben en ik ga er vanuit dat dit ook voor cookies geld, maar wanneer je 5x die settings moet gebruiken dan kan het toch veel handiger zijn om in een variable te stoppen? Is het echt zoveel langzamer?
Alleen dit verschil is toch niet zo groot:
Met kopiëren: 2.5480008125305E-6
Zonder kopiëren: 2.9597282409668E-6
Dit betekend dat kopiëren 0,0000004117274284363 seconde sneller is als niet kopiëren.
Thnx
microtime. Wel even true als parameter geven.
Voor snelheidstesten gebruik je