- Kontaktformular: keine Mail mehr an die eingegebene Adresse (wurde als Spam-Versender missbraucht); Anfrage nur an Kontakt-Adresse + Berater (BCC), Reply-To = Absender; Eingaben in der Mail escaped - Kontakt + Registrierung: Cloudflare Turnstile statt reCAPTCHA (Schluessel aus dem Code in die .env), Rate-Limits, Honeypot + Mindest-Ausfuellzeit, Namensregel (lateinische Schrift, max. 50 Zeichen), Form Requests - Registrierung: Partner-Nummer nur fuer aktive Berater (vorher ungeprueft) - CRM: POST /register abgeschaltet (legte ohne Captcha Benutzer an) - Passwort-Mindestlaenge systemweit 8 Zeichen ueber Password::defaults() - Log abgefangener Anfragen: storage/logs/form-spam-*.log - Doku und Protokoll: dev/2026-10-09-spam/README.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
222 lines
No EOL
10 KiB
PHP
222 lines
No EOL
10 KiB
PHP
@extends($user_shop ?'web.user.layouts.layout' : 'web.layouts.layout')
|
|
|
|
@section('content')
|
|
|
|
<section class="page-header page-header-xlg parallax parallax-3"
|
|
style="background-image:url('assets/images/vision-min.jpg')">
|
|
<div class="overlay dark-1"><!-- dark overlay [1 to 9 opacity] --></div>
|
|
<div class="container">
|
|
</div>
|
|
</section>
|
|
|
|
<style>
|
|
.checkbox.error{
|
|
color:#b92c28 !important;
|
|
}
|
|
</style>
|
|
<style type="text/css">
|
|
.tp-caption {
|
|
text-shadow: none;
|
|
}
|
|
div.shop-item {
|
|
margin-bottom: 30px;
|
|
border: 1px solid #ddd;
|
|
}
|
|
|
|
div.shop-item > .thumbnail, .thumbnail {
|
|
border: none;
|
|
}
|
|
|
|
div.shop-item-summary {
|
|
padding: 8px;
|
|
}
|
|
|
|
div.shop-item-summary h2 a {
|
|
color: #9aa983;
|
|
font-size: 1.2em;
|
|
margin: 0 0 10px 0;
|
|
}
|
|
|
|
div.shop-item-buttons {
|
|
padding: 0 8px 10px 8px;
|
|
}
|
|
|
|
div.shop-item-buttons .btn-xs {
|
|
padding: 4px;
|
|
}
|
|
img.avatar {
|
|
width: 75%;
|
|
max-width: 200px;
|
|
border: 6px solid #bbccab;
|
|
margin-bottom: 10px;
|
|
}
|
|
.radio, .checkbox {
|
|
font-size: 14px;
|
|
line-height: 1.3em;
|
|
}
|
|
.checkbox i {
|
|
top:1px;
|
|
}
|
|
|
|
.alert.error {
|
|
padding: 8px;
|
|
margin-bottom: 4px;
|
|
margin-top: 4px;
|
|
font-size: 0.9em;
|
|
font-weight: bold;
|
|
}
|
|
select.form-control:not([size]):not([multiple]) {
|
|
height: 40px;
|
|
}
|
|
</style>
|
|
|
|
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
|
|
|
|
<section>
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
|
|
<!-- FORM -->
|
|
<div class="col-md-9 col-sm-8">
|
|
|
|
<h1>{{ trans('register.reg_hl') }}</h1>
|
|
|
|
<p>{{ trans('register.reg_line_1') }}</p>
|
|
|
|
<div class="box-static box-transparent box-bordered padding-20">
|
|
|
|
{!! Form::open(['action' => '/registrierung']) !!}
|
|
{{ html()->hidden(\App\Services\FormSpamGuard::TIMESTAMP_FIELD, $form_token) }}
|
|
<div style="position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;" aria-hidden="true">
|
|
<label for="{{ \App\Services\FormSpamGuard::HONEYPOT_FIELD }}">{{ __('form_protection.honeypot_label') }}</label>
|
|
{{ html()->text(\App\Services\FormSpamGuard::HONEYPOT_FIELD)->attributes(['tabindex' => '-1', 'autocomplete' => 'off']) }}
|
|
</div>
|
|
@if(isset($from_member_id))
|
|
{!! Form::hidden('from_member_id', $from_member_id) !!}
|
|
@endif
|
|
<div class="text-right" style="margin-bottom: 8px; margin-top: -16px;">
|
|
<em class="small">* {{trans('register.required_fields')}}</em>
|
|
</div>
|
|
|
|
<div class="row contact-row">
|
|
<div class="form-group col-md-12">
|
|
{!! Form::label('salutation', __('Salutation').'*') !!}
|
|
{!! Form::select('salutation', [''=>__('please select'), 'mr'=>__('MR'), 'ms'=>__('MS')], '', ['class' => 'form-control '.($errors->has('salutation') ? 'error is-invalid' : '')]) !!}
|
|
@if ($errors->has('salutation'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('salutation') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
<div class="form-group col-md-6">
|
|
{!! Form::label('first_name', __('First name').'*') !!}
|
|
{!! Form::text('first_name', '', ['class' => 'form-control '.($errors->has('first_name') ? 'error is-invalid' : ''), 'placeholder'=>__('First name'), '']) !!}
|
|
@if ($errors->has('first_name'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('first_name') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
<div class="form-group col-md-6">
|
|
{!! Form::label('last_name', __('Last name').'*') !!}
|
|
{!! Form::text('last_name', '', ['class' => 'form-control '.($errors->has('last_name') ? 'error is-invalid' : ''), 'placeholder'=>__('Last name'), '']) !!}
|
|
@if ($errors->has('last_name'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('last_name') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="col-md-12"> <hr> </div>
|
|
|
|
<div class="form-group col-md-12">
|
|
{!! Form::label('email', __('E-Mail Address').'*') !!}
|
|
{!! Form::email('email', '', ['class' => 'form-control '.($errors->has('email') ? 'error is-invalid' : ''), 'placeholder'=>__('E-Mail Address'), '']) !!}
|
|
@if ($errors->has('email'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('email') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="form-group col-md-12">
|
|
{!! Form::label('email-confirm', __('Confirm E-Mail Address').'*') !!}
|
|
{!! Form::email('email-confirm', '', ['class' => 'form-control '.($errors->has('email-confirm') ? 'error is-invalid' : ''), 'placeholder'=>__('Confirm E-Mail Address'), '']) !!}
|
|
@if ($errors->has('email-confirm'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('email-confirm') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="col-md-12"> <hr> </div>
|
|
|
|
|
|
<div class="form-group col-md-12">
|
|
{!! Form::label('password', __('Password').'*') !!}
|
|
{!! Form::password('password', ['class' => 'form-control '.($errors->has('password') ? 'error is-invalid' : ''), 'placeholder'=>__('Password'), '']) !!}
|
|
@if ($errors->has('password'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('password') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
<div class="form-group col-md-12">
|
|
{!! Form::label('password_confirmation', __('Confirm Password').'*') !!}
|
|
{!! Form::password('password_confirmation', ['class' => 'form-control '.($errors->has('password_confirmation') ? 'error is-invalid' : ''), 'placeholder'=>__('Confirm Password'), '']) !!}
|
|
@if ($errors->has('password_confirmation'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('password_confirmation') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="col-md-12">
|
|
<hr>
|
|
</div>
|
|
|
|
<div class="col-md-12" style="margin-bottom: 8px; margin-top: 8px;">
|
|
<label class="checkbox {{ ($errors->has('accepted_data_protection') ? 'error' : '') }}" for="accepted_data_protection">
|
|
{!! Form::checkbox('accepted_data_protection', 1, false, ['id'=>'accepted_data_protection', 'class' => 'form-control '.($errors->has('accepted_data_protection') ? 'error' : ''), '']) !!}
|
|
<i></i> <span class="fa fa-angle-double-left text-success fa-lg"></span>
|
|
{!! trans('register.reg_checked', ['link' => url('datenschutz')]) !!}
|
|
.*
|
|
</label>
|
|
@if ($errors->has('accepted_data_protection'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('accepted_data_protection') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row contact-row">
|
|
<div class="col-md-12">
|
|
<div class="cf-turnstile" data-sitekey="{{ $turnstile_site_key }}" data-action="register" data-language="{{ app()->getLocale() }}"></div>
|
|
@if ($errors->has('cf-turnstile-response'))
|
|
<div class="alert alert-danger error"><!-- DANGER -->
|
|
{{ $errors->first('cf-turnstile-response') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary btn-text-500"><i class="fa fa-check"></i> {{ __('website.register_now') }} </button>
|
|
{!! Form::close() !!}
|
|
</div> <!-- end col -->
|
|
<!-- /FORM -->
|
|
</div>
|
|
|
|
|
|
<!-- INFO -->
|
|
@include('web.templates._side_contact')
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<!-- / -->
|
|
|
|
|
|
|
|
@endsection |