Notice error
Hallo,
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
Hoe kan dit en hoe is dit te voorkomen?
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?
Waarschijnlijk van dit:
$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:
$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:
Hartelijk dank. Ik krijg de error niet meer, maar ik snap niet precies wat nu het verschil maakt. Kan je dit in noobie taal kunnen uitleggen?
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.
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.
mt_rand(0, strlen($characters) -1 )
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.
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.
Oke, en wat betreft de koekjes?
Hartelijk dank!
Hartelijk dank!
De rest is afhankelijk van wat jij met het script wil bereiken.
Oke, laat ik het anders stellen. Is het onderstaande logisch geprogrammeerd?
Daarnaast de volgende vraag:
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?
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
>>Als COOKIE: voornaam, achternaam, email geset is.<<
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.
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.
Wouter hartelijk dank voor beide reacties. Is het dan ook atlijd handig om eerst alle cookies in een variable op te slaan en dan zo verder te werken of bij een klein script gewoon de cookies te gebruiken.
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?
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?
Ik heb even getest en jou verklaring is inderdaad de goede. Natuurlijk best wel logisch, als je 5 keer een waarde moet opvragen van een computer of maar 1 keer is wel een groot verschil...
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.
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.
Dus als je maar 2x hoeft te kopieeren dan is de $_POST of $_COOKIE sneller. Wat is die code voor de snelheid te testen? Kan je me die geven.
Thnx
Thnx
Voor snelheidstesten gebruik je microtime. Wel even true als parameter geven.




