nb_config_set("custom.var0="); nb_config_set("custom.var1="); ID = 1; if (is_void(page = nb_page_register(ID, "User Profile", "Change Password"))) exit(1); template entry { name; configvar; value; text; int entry(string n, c, t) { this.name = n; this.configvar = c; this.value = nb_config_get(c); this.text = t; return 0; } }; string summary_get(string summary, string key) { pat = strcat(key, "="); s = strstr(summary, pat); if (is_void(s)) return ""; // Trim after “key=” s = substr(s, strlen(pat)); // Trim to the end of the line nl = strstr(s, "\n"); if (is_void(nl)) return s; // Länge vor '\n' = strlen(s) - strlen(nl) return substr(s, 0, strlen(s) - strlen(nl)); } fields = mkarray(); fields[i=0] = new entry("user", "custom.var0", "User"); // stores indices 0 through 19 fields[++i] = new entry("password", "custom.var1", "New password"); fields[++i] = new entry("confirm", "custom.var2", "Confirm new password"); // is NOT saved for (;;) { if (request = nb_page_request(page)) { // Get GET (POST is empty for you) params = struct_get(request, "GET"); if (is_void(params)) params = struct_get(request, "get"); if (is_void(params)) params = mkarray(); // Check doSave (Position 1) doSave = 0; if (length(params) >= 2 && params[1].value == "1") doSave = 1; msg = ""; msgColor = "black"; if (doSave) { offset = length(params) - length(fields); if (offset < 0) offset = 0; // Transfer values from `params` to `fields` (in order) for (i = 0; i < length(fields); i++) { k = i + offset; if (k >= length(params)) break; fields[i].value = params[k].value; } // User Index Default if empty (also validated below) if (fields[0].value == "") fields[0].value = "0"; // Password Rules pw = fields[1].value; cpw = fields[2].value; if (strlen(pw) < 10) { msg = "Error: Password must be at least 10 characters."; msgColor = "red"; } else if (pw != cpw) { msg = "Error: Password and Confirm do not match."; msgColor = "red"; } else { // Save: username + password (DO NOT save confirmation) for (i = 0; i < length(fields); i++) { if (fields[i].name == "confirm") continue; cfg = strcat(fields[i].configvar, "="); cfg = strcat(cfg, fields[i].value); rc = nb_config_set(cfg); } msg = "Saved."; msgColor = "green"; } } // ----- HTML ----- nb_page_respond(page, "
"); nb_page_finish(page); } }