On Monday 16 July 2007, Ilja Livenson wrote:
> I would like to achieve the following: have a user fill the form, create a
> page populated with data from the form, set a edit/upload password and mail
> them to the user. But here's my problem - it seems pretty stupid, but I
> cannot' set password and populate page at the same time (in one
> transaction) - it's either one or another.
>
> Basically, my code is like this:
>
> $base = MakePageName($pagename, "Students.Invitation");
> $basegroup = PageVar($base, '$Group');
> $newpage = MakePageName($base, "$basegroup.$name");
>
> $new['text'] = "smth template";
>
> PostPage($newpage, $new, $new);
>
> // ---   setting password   ---
> Lock(2);
> $auth = RetrieveAuthPage($newpage, 'attr', false);
> $password = gen_password();
> $auth['passwdedit'] = crypt($password);
> $auth['passwdupload'] = crypt($password);
> mail($email, 'password', "$password");
> WritePage($page, $auth);
> Lock(0);
> // --- done setting password ----

You should be able to do it at the same time:

   $new['text'] = "smth template";

   $password = gen_password();
   $new['passwdedit'] = crypt($password);
   $new['passwdupload'] = crypt($password);

   UpdatePage($newpage, $old, $new);
   mail(whatever);

All data (text, passwords) is in the $new array. Use the UpdatePage() 
function, not PostPage().

Note that the code you posted, if it is that simple, it may allow someone to 
overwrite existing pages (and by the occasion, change their passwords). You 
should check to see if it is really a new page.

See also:
   http://pmwiki.org/wiki/PmWiki/Functions
   http://pmwiki.org/wiki/Cookbook/DebuggingForCookbookAuthors

Thanks,
Petko


_______________________________________________
pmwiki-users mailing list
[email protected]
http://www.pmichaud.com/mailman/listinfo/pmwiki-users

Reply via email to