Registratie gegevens probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij als software ontwikkelaar toe aan een nieuwe uitdaging? Dan zoeken wij jou! Voor het maken van de procesbesturingssoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Ontwerpen, programmeren en testen van product aanpassingen; Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden, o.a. door middel van SCRUM; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Implementeren van nieuwe product

Bekijk vacature »

Senior Developer ERP Dynamics 365

Samengevat: Deze werkgever is een softwarebedrijf. Ben jij een enthousiaste developer? Heb je ervaring met ERP of Dynamic 365 bussines central? Vaste baan: ERP Applicatie Specialist ERP MBO €3.600 - €5.200 Wij houden ons als bedrijf bezig met het leveren en implementeren van het Microsoft Dynamics pakket binnen verschillende industriële sectoren. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Binnen ons open team is er een no-nonsense cultuur. Daarnaast is er veel onderling contact door de korte communicatielijnen. Het team werkt enthousiast samen om een

Bekijk vacature »

.net developer

Hoi! Wij zijn auto.nl en wij verkopen auto's online. je bestelt bij ons een auto net zo makkelijk als een spijkerbroek. En bevalt ie niet? Dan stuur je 'm gewoon weer terug. En dat we dat goed doen bewijst onze hoge klanttevredenheid van een 9,3. Nu maken we de volgende stap bij auto.nl. We starten met fysieke winkels. Online zoeken, offline bekijken. Maar nog altijd, geen gedoe! Gewoon eerlijk, transparant en zonder zorgen een auto kopen.. Maar om dat waar te blijven maken en nóg beter te worden, zoeken we uitbreiding van ons development team. Wat ga je precies doen?

Bekijk vacature »

.NET Developer

Functie omschrijving .NET developer met ervaring gezocht! Voor een softwarebedrijf in de regio Veenendaal zijn wij op zoek naar een .NET developer met een aantal jaar ervaring. Jij bent zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Verder ben je bezig met nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en productspecialisten om zo mooie producten te creëren. Bedrijfsprofiel De organisatie waar je voor gaat werken is een snelgroeiende softwareleverancier en allround dienstverlener. Deze organisatie heeft zowel klanten die

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Full stack Python developer

Functie Samen met andere collega’s (een product owner, een software manager en een ervaren ontwikkelaar) ga jij onze producten verder ontwikkelen. Jouw verantwoordelijkheden zullen bestaan uit: – Verder wil gaan met de ontwikkeling van onze bestaande producten; nieuwe features! – Meedenkt over de roadmap van onze producten – Als sparringpartner kan optreden op het gebied van development – Zelf ook nieuwe ideeën op tafel durft te leggen en deze van scratch af aan wilt bouwen Hieronder ook een paar voorbeelden van projecten waar we momenteel mee bezig zijn of binnenkort aan willen beginnen: – Real-time interactie creëren in onze web

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

Bekijk vacature »

Developer Angular & Kotlin

Dit ga je doen Het (door)ontwikkelen van mobiele apps en webapplicaties; Het opstellen van technisch ontwerp en het bespreken van ontwerpen met de software architect; Het uitvoeren van werkzaamheden op het gebied van technisch testen; Het in de gaten houden van nieuwe ontwikkelingen op jouw vakgebied en het adviseren van de organisatie hierover. Hier ga je werken Het gaat om een bekend internationaal handelsbedrijf met ruim 800 medewerkers, verdeeld over verschillende deelbedrijven. Deze organisatie is van oorsprong een familiebedrijf, er wordt hard gewerkt, er heerst een no nonsense en doeners mentaliteit, een informele sfeer en er is een mix van

Bekijk vacature »

Junior Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Samenwerken in een team van 10 collega's; Opleveren van mooie eindproducten, middels de Agile methodiek; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als startende IT-professional kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven.

Bekijk vacature »

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een ontwikkelteam met 15 developers en twee testers. Samen zijn jullie verantwoordelijk voor financiële applicaties met meer dan 50.000 gebruikers. Een deel van het team is verantwoordelijk voor de webapplicaties van deze organisatie. Ook zijn er twee app ontwikkelaars werkzaam in het team die zich focussen op de mobiele applicatie. Als .NET ontwikkelaar ga jij aan de slag met de webapplicaties van deze organisatie. Hierbij maak jij o.a. gebruik van C# .NET, ASP.NET, T-SQL, Angular en TypeScript. De nadruk van jouw functie ligt wel op de backend van de applicatie. Wat jouw functie

Bekijk vacature »
Johan

johan

29/01/2008 13:44:00
Quote Anchor link
Hallo,

Ik heb een probleem en voor jullie is het vast niet zo moeilijk.
De bedoeling is als klanten registeren dat ze gelijk door verwezen worden naar de reserveer pagina waar gegevens werkt worden. Alleen de Klant ID word niet mee genomen.
Het werkt wel gewoon in de volgorde van inloggen>reserveer pagina.

Op welke manier zorg ik ervoor dat de reserveer pagina weet wie de klant is dat zich net heeft geregisteerd en dan de juiste klant_id krijgt.

Edit:
Bedankt voor jullie moeite, ik ga nu proberen het beter te maken. En dan volgends de manual op de site, die heb ik trouwens al door gelezen.
Gewijzigd op 01/01/1970 01:00:00 door Johan
 
PHP hulp

PHP hulp

26/04/2024 12:09:53
 
Joren de Wit

Joren de Wit

29/01/2008 13:48:00
Quote Anchor link
Na het uitvoeren van de INSERT query voor het registreren kun je met mysql_insert_id() het laatst gegenereerde id ophalen. Dit is dan dus het id van de laatst geregistreerde gebruiker en kun je gebruiken op de pagina waar je de gebruiker naartoe stuurt.
 
Frank -

Frank -

29/01/2008 13:51:00
Quote Anchor link
session_register() ? Waar heb je dit script opgegraven? Al sinds jaar en dag wordt $_SESSION[] gebruikt, session_register() kan zelfs voor grote problemen zorgen.

Pas je script dus even aan, zie ook de php-handleiding over dit onderwerp.
 
- wes  -

- wes -

29/01/2008 13:57:00
Quote Anchor link
johan schreef op 29.01.2008 13:44:
Verder werken de sites met een database.


well thats a little vague isnt it.
grijp je niet iets te hoog voor iemand met minimale kennis van zaken?
 
Johan

johan

29/01/2008 13:58:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
}else{
$query1="INSERT INTO inloggegevens (gebruikersnaam, wachtwoord, emailadres)";
$query1 .= "VALUES ('$gebruikersnaam','$wachtwoord','$emailadres')"; mysql_insert_id();
$query2="INSERT INTO klanten (telefoonnummer, achternaam, tussenvoegsel, voornaam, datum)";
$query2 .= "VALUES ('$telefoonnummer','$achternaam','$tussenvoegsel','$voornaam',CURRENT_DATE());";
$result1 = mysql_query($query1)or die ("FOUT: " .mysql_error());
$result2 = mysql_query($query2)or die ("FOUT: " .mysql_error());
$tekst = "Bedankt voor uw aanmelding.<br>
u kunt nu <a href=\"login.php\">inloggen</a>"
;
die ($tekst);}}
?>


Ik had het al geprobeerd alleen snap niet percies hoe het werkt. Zo heb ik het nu gedaan. en de melding is nu FOUT: Duplicate entry '0' for key 1.

Kunt u me uitleggen hoe ik precies die code moet toepassen alvastbedankt:)
 
- wes  -

- wes -

29/01/2008 14:12:00
Quote Anchor link
Johan, ik wil niet lullig doen
of eigenlijk wel

punt is dat je iets probeerd te maken waar je zelf alleen maar met gokken een bijdrage aan levert. Je hebt geen kennis van wat je wil maken en je begrijpt PHP gewoon niet. Daarbij heb je , aan je laatste error te zien, ook geen kaas gegeten van database en tabellen opbouw.

Begin bij het begin

wat jij wil nu is NIET het begin
 
Johan

johan

29/01/2008 14:19:00
Quote Anchor link
Het is gewoon een eindopdracht, maakt niet zoveel uit als het maar werkt. Ik ken de basis vaardigheden van php. Het script werkt wel als je inlogt met het inlog.php dan staat klant_id erwel. Dus het enige wat niet werkt registeren en dan naar de reserverings pagina gaan zodat hij klant_id aangeeft. Dan is klaar, dus als u me nu ff helpt met een stukje script zijn we allebijde tevreden.
 
- wes  -

- wes -

29/01/2008 14:22:00
Quote Anchor link
- zeg maar je, ik ben je moeder niet

- je kent de basisvaardigheden? misschien nu werken aan je engels zodat je Duplicate entry '0' for key 1 kan vertalen en het antwoord al weet...

- als het maar werkt? goede instelling... not

- eindopdracht? van school dan neem ik aan. Het is vast niet de bedoeling dat je andere mensen je huiswerk laat maken, of nog erger , je eindproject.

'dus als je nu gewoon met je luie reet PHP gaat leren, zijn we allebijde tevreden'
 
Frank -

Frank -

29/01/2008 14:26:00
Quote Anchor link
eindopdracht? En dan nog session_register() in je code? Dan ben je gezakt.

Helaas, pindakaas.
 
Johan

johan

29/01/2008 14:39:00
Quote Anchor link
Ik vraag om hulp, 99% is toch al klaar.Dus laat me huiswerk niet maken. Jullie zeiken me gewoon af. Ik ben toch beleefd. En dat session_register staat zo in ons boek. Ben geen php expert, maar als jullie niet willen helpen zeg het dan gewoon.
 
- wes  -

- wes -

29/01/2008 14:43:00
Quote Anchor link
Ik wil je wel helpen, maar je wil het zelf niet kunnen, en helaas voor jou is dat mn enige criterium om iemand wel of niet te helpen
 
Joren de Wit

Joren de Wit

29/01/2008 14:45:00
Quote Anchor link
Een voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$sQuery
= "
    INSERT INTO inloggegevens
    (
        gebruikersnaam,
        wachtwoord,
        emailadres
    )
    VALUES
    (
        '"
.$gebruikersnaam."',
        '"
.$wachtwoord."',
        '"
.$emailadres."'
    )
"
;

if(!$rResult = mysql_query($sQuery))
{

    trigger_error(mysql_error().'<br />In query: '.$sQuery);
}

else
{
    $iGebruikerId = mysql_insert_id();
    // Nu kun je verder gaan werken met deze variabele
}
?>

Overigens zit je waarschijnlijk met een nog veel groter probleem en dat is je datamodel. Wat is namelijk je onderlinge relatie tussen de inloggegevens tabel en de klanten tabel? Of met andere woorden: hoe weet jij welke inloggegevens bij welke klant horen?

Ik zie nergens een foreign key waar je mee zou kunnen gaan werken, dus is er geen koppeling mogelijk. Resultaat: een los hoopje zand, meer niet...

ps. Die duplicate key zal overigens veroorzaakt worden doordat je op een bepaalde kolom geen auto_increment aangebracht hebt. Maar goed, van je hele datamodel klopte al weinig, dus daar moest je al naar kijken.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Frank -

Frank -

29/01/2008 14:57:00
Quote Anchor link
johan schreef op 29.01.2008 14:39:
En dat session_register staat zo in ons boek.

En dan een stukje uit de handleiding:
Quote:
Caution
If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.

Er wordt dus verwezen naar register_globals, laten we dat er ook even bijpakken:
Quote:
register_globals boolean
Whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables.

As of » PHP 4.2.0, this directive defaults to off.

Please read the security chapter on Using register_globals for related information.

En dan de security chapter:
Quote:
When register_globals = on, our logic above may be compromised.


Kortom, register_globals moet al sinds een jaar of 5 uit staan en dus kun je niet met session_register werken. Staat de boel nog aan, dan is jouw script zo lek als een mandje en kan binnen 10 tellen worden gehackt. Al is hacken dan wel een erg groot woord, een kind van 4 kan dit nog doen.

Mijn conclusie: Jullie gebruiken een bijzonder slecht boek dat al járen achterloopt. Klein gokje: Een boek van Peter Kassenaar?

Tip: Informeer je docent en wijs hem op de handleiding op php.net. Daar staat alles haarfijn uitgelegd.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Johan

johan

29/01/2008 15:29:00
Quote Anchor link
Klopt dat boek is uiteraard van Peter Kassenaar. Ben ff weer bezig geweest. en het volgende heb ik uitgewerkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
}else{
$query1="INSERT INTO inloggegevens (gebruikersnaam, wachtwoord, emailadres)";
$query1 .= "VALUES ('$gebruikersnaam','$wachtwoord','$emailadres')";
if(!$Result = mysql_query($Query))
{
trigger_error(mysql_error().'<br />In query: '.$Query);}
else{$GebruikerId = mysql_insert_id();
$query2="INSERT INTO klanten (telefoonnummer, achternaam, tussenvoegsel, voornaam, datum)";
$query2 .= "VALUES ('$telefoonnummer','$achternaam','$tussenvoegsel','$voornaam',CURRENT_DATE());";
$result1 = mysql_query($query1)or die ("FOUT: " .mysql_error());
$result2 = mysql_query($query2)or die ("FOUT: " .mysql_error());
header("Location: reservering.php");
}}
?>


Ik heb die variabelen de naam aangepast, maar zoals ik nu begrijp heeft $GebruikerId nu de waarde van de gebruikersid (bijv. 1 of 2).

Zo moet ik die anderen session_register vervangen?
$_SESSION["gebruikersnaam"] = "$Variabele.";

En in me database heb ik de id die voor de klanten_id word gebruikt auto_increment.
 
Frank -

Frank -

29/01/2008 15:36:00
Quote Anchor link
inderdaad, dat lijkt er meer op.

$_SESSION["gebruikersnaam"] = "$Variabele.";
mag wel worden
$_SESSION["gebruikersnaam"] = $Variabele;

dus zonder overbodige quotes.

Dan de code, dat kan veel duidelijker:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
// waar komen de variabelen in de queries vandaan?
$query1 = "
    INSERT INTO
        inloggegevens (
            gebruikersnaam,
            wachtwoord,
            emailadres)
    VALUES (
        '"
.$gebruikersnaam."',
        '"
.$wachtwoord."',
        '"
.$emailadres."'
    );
"
;
if(!$Result = mysql_query($Query)){
    trigger_error(mysql_error().'<br />In query: '.$Query);
}

else{
    $GebruikerId = mysql_insert_id();
}

$query2="
    INSERT INTO
        klanten (
            telefoonnummer,
            achternaam,
            tussenvoegsel,
            voornaam,
            datum
        )
    VALUES (
        '"
.$telefoonnummer."',
        '"
.$achternaam."',
        '"
.$tussenvoegsel."',
        '"
.$voornaam."',
        CURRENT_DATE()
    );
"
;
$result1 = mysql_query($query1)or die ("FOUT: " .mysql_error());
$result2 = mysql_query($query2)or die ("FOUT: " .mysql_error());
header("Location: reservering.php");
exit(); // altijd gebruiken na een header-location!
?>

Ik vraag me wel af waar de input vandaan komt, vele variabelen worden hier nergens gedeclareerd of beveiligd. Gebruik je wel ergens mysql_real_escape_string() en $_POST-variabelen?
 
Frank -

Frank -

29/01/2008 15:37:00
Quote Anchor link
ps. Waarom voer je $query1 eigenlijk 2x uit? Dat lijkt mij niet goed!

Edit: Ik ga hier de mist in met $Query, $query1 en $query2... Waar komen deze variabelen allemaal vandaan en wat is het doel?

Pps. Een TRANSACTION lijkt mij op zijn plaats, mocht 1 query mislukken, dan wil je ze allemaal ongedaan maken. Je wilt niet met rotzooi in je database blijven zitten.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Joren de Wit

Joren de Wit

29/01/2008 15:41:00
Quote Anchor link
Je doet niets met de code die ik je gaf? De code die je nu gebruikt is ontzettend onoverzichtelijk en ziet er gewoon niet uit. Je helpt jezelf er echt niet mee.

Waar haal je bijvoorbeeld de variabele $Query van regel 5 vandaan? Verder zal je datamodel waarschijnlijk ook nog niet in orde zijn. Als dat wel het geval zou zijn, zou je het insert_id hoogstwaarschijnlijk gebruiken in de tweede insert query.

Mijn tip: vergeet dit voor nu en ga eerst eens echt leren script. Hoe lullig het ook klinkt, maar dit lijkt helemaal nergens op. Ik kan me ook niet voorstellen hoe een docent die trots is op zijn vak, jullie dit aan durft te leren!

Deze twee handleidingen zullen je in ieder geval een goede basis geven:
PHP Beginnershandleiding
SQL Beginnershandleiding
 
Frank -

Frank -

29/01/2008 15:48:00
Quote Anchor link
@Blanche: Deze docent heeft zijn leerlingen al met een achterhaald boek van Peter Kassenaar het bos ingestuurd... Dat boek is alleen goed om de open haard of BBQ aan te maken, verder is het een waardeloze verzameling papier.

Zie ook deze discussie op PHPfreakz waar de schrijver ook aangeeft dat hij hier de fout is ingegaan.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.