Hab den Fehler auch so gefunden, danke für die Hilfe
Beiträge von Flash
-
-
Woher sollen wir das wissen? Du zeigst uns ja nicht das komplette Script.
Richtig debuggen
- Man bemerkt, dass ein Skript nicht das tut, was es soll.
- Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
- Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
- Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
- An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
- Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
- Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
- Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
- Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
diese schlaue Antwort habe ich hier schon einmal bekommen - danke
-
und warum bekommt der Benutzer keine Kopie der Nachricht?
-
"/^[a-zA-Z äöüßáéíóú]/"
Das liegt daran, dass Du nicht bis zum Stringende prüfst, so wird nur das erste Zeichen gecheckt. Dies sollte funktionieren: "/^[a-zA-Z äöüßáéíóú]+$/"
Perfekt, danke
-
Hallo,
eigentlich läuft mein Kontaktformular wie gewünscht, aber der Absender bekommt keine Kopie
Code
Alles anzeigenif($success && (2==$cfg['Kopie_senden'])) { // ---- Erstelle eine Mail-Nachricht für den Benutzer $mailcontent = "Vielen Dank für die Nachricht. \n" . "Wir werden schnellstmöglich darauf antworten.\n\n"; $mailcontent .= "Zusammenfassung: \n" . "-------------------------------------------------------------------------\n\n"; $mailcontent .= "Name: " . $name . "\n"; $mailcontent .= "E-Mail: " . $email . "\n\n"; $mailcontent .= "Nachricht:\n" . str_replace("\r", "", $nachricht) . "\n\n"; $mailcontent = strip_tags ($mailcontent); // ---- Mail an Benutzer senden if($smtp['enabled'] !== 0) { SMTP::send( $empfaenger, $ihrname, $email, "Ihre Anfrage", $mailcontent, array() ); } else { $success = sendMyMail($empfaenger, $ihrname, $email, "Ihre Anfrage", $mailcontent); } } } }
außerdem habe ich gerade festgestellt, dass das Feld NAME doch Zahlen durchgehen lässt, obwohl ich mit preg_matsch nur Buchstaben zulasse
Code$fehler["name"] .= strlen($_POST["name"]) > 1 && !preg_match("/^[a-zA-Z äöüßáéíóú]/", $_POST["name"]) ? "<span class='errormsg'>Der Name darf nur aus <strong>Buchstaben </strong>bestehen.</span>" : "";
Ich wäre sehr dankbar, wenn mir jemand sagen könnte, wo mein Fehler liegt.
-
ich hab jetzt die " durch ' ersetzt. Aber viel besser ist es dadurch auch nicht geworden.
-
Notice: Undefined index: delete in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 27
Notice: Undefined index: Submit in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 32
Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 368
Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 369
Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 370
Code368: $fehler["Honeypot"] != "" || 369: $fehler['Links'] != "" || 370 $fehler['Badwordfilter'] != ""
Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 390
-
Notice: Undefined index: delete in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 27 Notice: Undefined index: Submit in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 32
Das ist die Fehlermeldung über dem header.
Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 368 Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 369 Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 370Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 390###i class="field" placeholder="Name" value="
Notice: Use of undefined constant name - assumed 'name' in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 391Notice: Undefined index: name in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 391
" maxlength="50" style="font-size: 16px; font-family: avenir-lt-w01_35-light1475496, sans-serif; color: rgb(0, 0, 102);"###Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 399###i class="field" placeholder="E-Mail" value="
Notice: Use of undefined constant email - assumed 'email' in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 400Notice: Undefined index: email in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 400
" maxlength="50" style="font-size: 16px; font-family: avenir-lt-w01_35-light1475496, sans-serif; color: rgb(0, 0, 102);"###Notice: Undefined variable: fehler in /var/www/vhosts/web64.rs016.glowfish.de/httpdocs/Dogs/Test_Kontakt/kontakt.php on line 409
...und das im Formular.
Sorry, ich dachte ihr guckt selber auf die Seite.
-
Warum lässt Du 5 und 6 vorsetzlich aus?
Wenn Du 2 und 3 befolgt hast, ist doch die Frage, ob Du Fehler, Warnungen oder Hinweise bekommst. All diese Meldungen sind in PHP Gold wert, weil man den Fehler i.d.R. direkt ablesen kann.
Wenn Du also Punkt 8 in Anspruch nimmst, solltest Du uns zeigen, was das Resultat aus 2 und 3 ist und welche Schritte Du mit welchen Ergebnissen für Punkt 4 und 5 durchgeführt hast.
Die Fehler werden jetzt angezeigt, aber wie bereits 2x schon erwähnt, verstehe ich das nicht. Wenn ich das verstehen würde, würde ich hier nicht um Hilfe bitten.
-
Wie so oft gilt auch hier:
Richtig debuggen
- Man bemerkt, dass ein Skript nicht das tut, was es soll.
- Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
- Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
- Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
- An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
- Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
- Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
- Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
- Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
Also Punkt 2. und 3. hab ich jetzt gemacht. Somit würde ich gleich zu Punkt 8. übergehen und die Profis fragen, da ich von PHP (wie schon gesagt) keine Ahnung habe.
-
Hallo,
ich habe mein Kontaktformular jetzt mal neu gemacht, allerdings läuft es nicht wie gewünscht.
Das neue Formular findet ihr hier: neues Formular
Folgendes Problem: wenn ich alle Felder ordnungsgemäß ausfülle und die Anfrage absende, erfolgt die Fehlermeldung: Es besteht Spamverdacht. Bitte Angaben überprüfen.
Klickt man dann einfach nochmal auf "Absenden", geht die Anfrage raus. Woran liegt das bzw. was habe ich falsch gemacht?
Wenn die Anfrage dann versendet ist, möchte ich gerne, dass das Formular ausgeblendet wird und dort steht: Mitteilung wurde erfolgreich versandt.
Stattdessen erscheint die Mitteilung ganz oben über dem header links.
Hier ist mein Quellcode dazu:
PHP
Alles anzeigen<?php session_start(); error_reporting(E_ERROR | E_PARSE); date_default_timezone_set('Europe/Berlin'); $script_root = substr(__FILE__, 0, strrpos(__FILE__, DIRECTORY_SEPARATOR) ).DIRECTORY_SEPARATOR; $remote = getenv("REMOTE_ADDR"); function encrypt($string, $key) { $result = ''; for($i=0; $i<strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key))-1, 1); $char = chr(ord($char)+ord($keychar)); $result.=$char; } return base64_encode($result); } @require('config.php'); // form-data should be deleted if ($_POST['delete']){ unset($_POST); } // form has been sent if ($_POST["kf-km"]) { // clean data $name = stripslashes($_POST["name"]); $email = stripslashes($_POST["email"]); $betreff = "Sleddogsteam - Kontaktformular"; $nachricht = stripslashes($_POST["nachricht"]); if($cfg['DATENSCHUTZ_ERKLAERUNG']) { $datenschutz = stripslashes($_POST["datenschutz"]); } $date = date("d.m.Y | H:i"); $ip = $_SERVER['REMOTE_ADDR']; $UserAgent = $_SERVER["HTTP_USER_AGENT"]; $host = getHostByAddr($remote); // formcheck if(!$name) { $fehler['name'] = "<span class='errormsg'>Geben Sie bitte Ihren <strong>Namen</strong> ein.</span>"; } if (!preg_match("/^[0-9a-zA-Z_.-]+@[0-9a-z.-]+\.[a-z]{2,6}$/", $email)) { $fehler['email'] = "<span class='errormsg'>Geben Sie bitte Ihre <strong>E-Mail-Adresse</strong> ein.</span>"; } if(!$nachricht) { $fehler['nachricht'] = "<span class='errormsg'>Geben Sie bitte eine <strong>Nachricht</strong> ein.</span>"; } // -------------------- SPAMPROTECTION ERROR MESSAGES START ---------------------- if($cfg['Honeypot'] && (!isset($_POST["mail"]) || ''!=$_POST["mail"])){ $fehler['Honeypot'] = "<span class='errormsg'>Es besteht Spamverdacht. Bitte überprüfen Sie Ihre Angaben.</span>"; } if($cfg['Links'] < preg_match_all('#http(s?)\:\/\/#is', $nachricht, $irrelevantMatches)){ $fehler['Links'] = "<span class='errormsg'>Ihre Nachricht darf ".(0==$cfg['Links'] ? 'keine Links' : (1==$cfg['Links'] ? 'nur einen Link' : 'maximal '.$cfg['Links'].' Links' ) )." enthalten.</span>"; } if(''!=$cfg['Badwordfilter'] && 0!==$cfg['Badwordfilter'] && '0'!=$cfg['Badwordfilter']){ $badwords = explode(',', $cfg['Badwordfilter']); // the configured badwords $badwordFields = explode(',', $cfg['Badwordfields']); // the configured fields to check for badwords $badwordMatches = array(); // the badwords that have been found in the fields if(0<count($badwordFields)){ foreach($badwords as $badword){ $badword = trim($badword); // remove whitespaces from badword $badwordMatch = str_replace('%', '', $badword); // take human readable badword for error-message $badword = addcslashes($badword, '.:/'); // make ., : and / preg_match-valid if('%'!=substr($badword, 0, 1)){ $badword = '\\b'.$badword; } // if word mustn't have chars before > add word boundary at the beginning of the word if('%'!=substr($badword, -1, 1)){ $badword = $badword.'\\b'; } // if word mustn't have chars after > add word boundary at the end of the word $badword = str_replace('%', '', $badword); // if word is allowed in the middle > remove all % so it is also allowed in the middle in preg_match foreach($badwordFields as $badwordField){ if(preg_match('#'.$badword.'#is', $_POST[trim($badwordField)]) && !in_array($badwordMatch, $badwordMatches)){ $badwordMatches[] = $badwordMatch; } } } if(0<count($badwordMatches)){ $fehler['Badwordfilter'] = "<span class='errormsg'>Folgende Begriffe sind nicht erlaubt: ".implode(', ', $badwordMatches)."</span>"; } } } // -------------------- SPAMPROTECTION ERROR MESSAGES ENDE ---------------------- if($cfg['DATENSCHUTZ_ERKLAERUNG'] && isset($datenschutz) && $datenschutz == ""){ $fehler['datenschutz'] = "<span class='errormsg' style='color:red;font-size:.75rem;'>Sie müssen die <strong>Datenschutzerklärung</strong> akzeptieren.</span><br />"; } // there are NO errors > send mail if (!isset($fehler)) { // ------------------------------------------------------------ // -------------------- send mail to admin -------------------- // ------------------------------------------------------------ // ---- create mail-message for admin $mailcontent = "Folgendes wurde am ". $date ." Uhr per Formular geschickt:\n" . "--------------------------------------------------------------------------------------\n\n"; $mailcontent .= "Name: " . $name . "\n"; $mailcontent .= "E-Mail: " . $email . "\n\n"; $mailcontent .= "Nachricht:\n" . $_POST['nachricht'] = preg_replace("/\r\r|\r\n|\n\r|\n\n/","\n",$_POST['nachricht']) . "\n\n"; if($cfg['DATENSCHUTZ_ERKLAERUNG']) { $mailcontent .= "\n\nDatenschutz: " . $datenschutz . " \n"; } $mailcontent .= "\n\nIP Adresse: " . $ip . "\n"; $mailcontent = strip_tags ($mailcontent); $success = false; // ---- send mail to admin if($smtp['enabled'] !== 0) { require_once __DIR__ . '/smtp.php'; $success = SMTP::send( $email, $ihrname, $empfaenger, $betreff, $mailcontent ); } else { $success = sendMyMail($email, $name, $empfaenger, $betreff, $mailcontent); } // ------------------------------------------------------------ // ------------------- send mail to customer ------------------ // ------------------------------------------------------------ if( $success && ( 2==$cfg['Kopie_senden'] // send copy always ) ){ // ---- create mail-message for customer $mailcontent = "Vielen Dank für die Nachricht. Wir werden schnellstmöglich darauf antworten.\n\n"; $mailcontent .= "Zusammenfassung: \n" . "-------------------------------------------------------------------------\n\n"; $mailcontent .= "Name: " . $name . "\n"; $mailcontent .= "E-Mail: " . $email . "\n\n"; $mailcontent .= "Nachricht:\n" . str_replace("\r", "", $nachricht) . "\n\n"; $mailcontent = strip_tags ($mailcontent); // ---- send mail to customer if($smtp['enabled'] !== 0) { SMTP::send( $empfaenger, $ihrname, $email, "Ihre Anfrage", $mailcontent, array() ); } else { $success = sendMyMail($empfaenger, $ihrname, $email, "Ihre Anfrage", $mailcontent); } } // redirect to success-page if($success){ if($smtp['enabled'] === 0 || $smtp['debug'] === 0) { echo "Die Mitteilung wurde erfolgreich versandt."; } } } } // clean post foreach($_POST as $key => $value){ $_POST[$key] = htmlentities($value, ENT_QUOTES, "UTF-8"); } ?> <?php function sendMyMail($fromMail, $fromName, $toMail, $subject, $content){ $boundary = md5(uniqid(time())); $eol = PHP_EOL; // header $header = "From: =?UTF-8?B?".base64_encode(stripslashes($fromName))."?= <".$fromMail.">".$eol; $header .= "Reply-To: <".$fromMail.">".$eol; $header .= "MIME-Version: 1.0".$eol; // content without attachments if(is_array($attachments) && 0<count($attachments)){ // content $message = "--".$boundary.$eol; $message .= "Content-type: text/plain; charset=utf-8".$eol; $message .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $message .= $content.$eol; } else{ $message = $content; } // subject $subject = "=?UTF-8?B?".base64_encode($subject)."?="; // send mail return mail($toMail, $subject, $message, $header); } ?>
Wäre schön, wenn mir jemand helfen kann, da ich von PHP eigentlich null Plan habe.
-
alles klar, Dankeschön
-
und noch eine frage...
der css-validator meckert folgendes an:
9 Die Eigenschaft -webkit-background-size
ist eine unbekannte Erweiterung des Herstellers10 Die Eigenschaft -moz-background-size
ist eine unbekannte Erweiterung des Herstellers11 Die Eigenschaft -o-background-size
ist eine unbekannte Erweiterung des Herstellers...kann ich das einfach weglassen oder ist das wichtig?
-
Super, das mit dem Rand bei header und footer haut jetzt hin... vielen dank dafür
das mit dem ul und ol hat folgenden sinn - bei breiten Bildschirmen mit navigation oben hab ich im footer Menü 4 links. wenn ich das toggle Menü im handy-format habe, befinden sich 2 der links aus dem footer mit in der obigen navigation und im footer sind nur noch 2 links - hat also optische gründe
und das mit dem abschneiden... max-height war des Rätsels Lösung ...habt vielen lieben dank
-
Möglich wäre auch mit 'calc' die Höhe jeweils passend zur Breite zu berechnen.
Da du die (max-)Breite von Header und Footer jeweils mit 1022px angibts, muss die Berechnung auch nur bei Breite kleiner 1022px durchgeführt werden.
Der Berechnungsfaktor ergibt sich aus dem Höhen-/Breitenverhältnis des Headers/Footers (120 / 1022).
Code@media screen and (max-width: 1022px) { header { height: calc(100vw * 0.117); overflow: hidden; } .footer { height: calc(100vw * 0.117); overflow: hidden; } }
Mir ist aufgefallen, dass sich auf deiner Seite teilweise ein horizontaler Scrollbar zeigt!
Das liegt nach meiner Einschätzung an deiner Navmenü-Zeile. Das könnte man umgehen/beseitigen, wenn man die beinhalteten Elemente mit 'border-box' formatiert.
Aber das bitte ausgiebig testen - vielleicht liege ich mit meiner Einschätzung ja falsch!
ich habe eine allgemeine css für alle größen und dann @media... breakpoint max 320, @media... breakpoint 321-600 und @media... min 601
bei der css für alle hab ich dem header und footer deine Anweisung dazu gegeben. im handy modus passt es jetzt, dafür hab ich den rand jetzt im großen Bildschirm
im footer schneidet er mir jetzt zu viel ab
-
Hallo,
ich habe meine website endlich mal auf responsive umgestellt und bin damit auch soweit zufrieden... bis auf ein Problem, welches ich nicht in den Griff bekomme. vielleicht kann mir hier jemand die Lösung zu meinem Problem sagen.
ich habe im header und im footer Bilder im format 150x120 als Hintergrund in der css abgelegt. wenn ich das Browserfenster jetzt zusammenschiebe, passen sich die Bilder auch der Fenstergröße an, allerdings bleibt die höhe des headers und auch des footers fix bei 120px, so dass sich ein unschöner rand unterhalb auftut, den ich nicht haben möchte.
warum passt sich die höhe nicht automatisch mit an?
meine Testseite seht ihr hier: Schlittenhunde ...da man über Entwickler in die css schauen kann, erspare ich mir mal den code hier aufzuschreiben
für eine Lösung wäre ich sehr dankbar