form_submit.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <string.h>
3 #include "mongoose.h"
4 
5 static const char *html_form =
6  "<html><body>POST example."
7  "<form method=\"POST\" action=\"/handle_post_request\">"
8  "Input 1: <input type=\"text\" name=\"input_1\" /> <br/>"
9  "Input 2: <input type=\"text\" name=\"input_2\" /> <br/>"
10  "<input type=\"submit\" />"
11  "</form></body></html>";
12 
13 static void send_reply(struct mg_connection *conn) {
14  char var1[500], var2[500];
15 
16  if (strcmp(conn->uri, "/handle_post_request") == 0) {
17  // User has submitted a form, show submitted data and a variable value
18  // Parse form data. var1 and var2 are guaranteed to be NUL-terminated
19  mg_get_var(conn, "input_1", var1, sizeof(var1));
20  mg_get_var(conn, "input_2", var2, sizeof(var2));
21 
22  // Send reply to the client, showing submitted form values.
23  // POST data is in conn->content, data length is in conn->content_len
24  mg_send_header(conn, "Content-Type", "text/plain");
25  mg_printf_data(conn,
26  "Submitted data: [%.*s]\n"
27  "Submitted data length: %d bytes\n"
28  "input_1: [%s]\n"
29  "input_2: [%s]\n",
30  conn->content_len, conn->content,
31  conn->content_len, var1, var2);
32  } else {
33  // Show HTML form.
34  mg_send_data(conn, html_form, strlen(html_form));
35  }
36 }
37 
38 static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
39  if (ev == MG_REQUEST) {
40  send_reply(conn);
41  return MG_TRUE;
42  } else if (ev == MG_AUTH) {
43  return MG_TRUE;
44  } else {
45  return MG_FALSE;
46  }
47 }
48 
49 int main(void) {
51 
52  mg_set_option(server, "listening_port", "8080");
53 
54  printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
55  for (;;) {
56  mg_poll_server(server, 1000);
57  }
58 
59  mg_destroy_server(&server);
60 
61  return 0;
62 }
int main(void)
Definition: form_submit.c:49
int mg_get_var(const struct mg_connection *conn, const char *name, char *dst, size_t dst_len)
Definition: mongoose.c:5040
void mg_send_header(struct mg_connection *c, const char *name, const char *v)
Definition: mongoose.c:2759
const char * uri
Definition: mongoose.h:34
struct mg_server * mg_create_server(void *server_data, mg_handler_t handler)
Definition: mongoose.c:5431
const char * mg_get_option(const struct mg_server *server, const char *name)
Definition: mongoose.c:5425
time_t mg_poll_server(struct mg_server *server, int milliseconds)
Definition: mongoose.c:4965
static void send_reply(struct mg_connection *conn)
Definition: form_submit.c:13
size_t mg_printf_data(struct mg_connection *c, const char *fmt,...)
Definition: mongoose.c:2785
#define printf
Definition: curl_printf.h:40
mg_event
Definition: mongoose.h:62
static struct mg_server * server
Definition: web_server.c:72
const char * mg_set_option(struct mg_server *server, const char *name, const char *value)
Definition: mongoose.c:5143
static int ev_handler(struct mg_connection *conn, enum mg_event ev)
Definition: form_submit.c:38
static const char * html_form
Definition: form_submit.c:5
void mg_destroy_server(struct mg_server **server)
Definition: mongoose.c:4969
size_t content_len
Definition: mongoose.h:50
char * content
Definition: mongoose.h:49
size_t mg_send_data(struct mg_connection *c, const void *data, int data_len)
Definition: mongoose.c:2778


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:09