This is more of general form issue than wordpress specific, but basically you should not submit forms to the page from which they are loaded at. You should have a dedicate URL which handles for submission and then redirects to wherever it is needed (success page on completion, back to the form if failed, etc). You can use the admin-post.php
end point for that, which operates in a very similar way to the more familiar admin-ajax.php
.
To use admin-post.php
you need to specify it as the action url, so your form element will be something like
<form method ="post" action="<?php echo esc_url(admin_url('admin-post.php'))?>" >
might be useful https://www.sitepoint.com/handling-post-requests-the-wordpress-way/