PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Formulardaten in DB eintragen php 8 (https://www.php-resource.de/forum/php-developer-forum/107335-formulardaten-in-db-eintragen-php-8-a.html)

phppower 30-10-2021 13:44

Formulardaten in DB eintragen php 8
 
Hallo,
ich stelle gerade einige meiner Projekte auf php 8 um und dazu waren einige Änderungen nötig. Die Abfragen habe ich soweit hin bekommen, aber mein nachfolgender Code trägt nichts in die Datenbank ein, gibt aber auch keine Fehlermeldung zurück. Wäre lieb wenn da einer mal kurz drüber schaut, vielleicht übersehe ich das etwas.


PHP-Code:

$bdd = new PDO('mysql:host='.$host.';dbname='.$db_name.''$username$password);
if(!
$bdd)
{
    echo 
'Datenbankverbindungsfehler.';
    exit();


PHP-Code:

if($_POST['Captcha'] == $_SESSION['rand_code'])
            {
$sql $bdd->prepare("
INSERT INTO pdd_forum_question (
  topic,
  detail,
  name,
  email,
  datetime
) VALUES (
  :topic,
  :detail,
  :name,
  :email,
  datetime
)"
);
$sql->execute( array(
    
'topic' => trim($_POST['topic']),
    
'detail' => trim($_POST['detail']),
    
'name' => trim($_POST['name']),
    
'email' => trim($_POST['email']),
    
'datetime' => date('Y-m-d H:i:s'strtotime 7200($_POST['datetime']))
) );            
}
echo 
'<meta http-equiv="refresh" content="1; URL=index.php">'

Danke schon mal

h3ll 30-10-2021 16:12

Du solltest die Fehlerausgabe aktivieren, damit Fehler nicht ignoriert werden.

PHP-Code:

$bdd = new PDO('mysql:host=' $host ';dbname=' $db_name$username$password, [
    
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]); 


phppower 30-10-2021 17:01

Formulardaten in DB eintragen php 8
 
ok, danke für den Hinweis, hab es auch direkt ergänzt.



2 Fehler konnte ich schon selbst entdecken
PHP-Code:

:datetime 

da fehlte der : davor und

PHP-Code:

$_SESSION['CAPTCHA_CODE'



löst aber leider mein Problem nicht.

h3ll 30-10-2021 17:07

Und das Problem ist? Wenn es in die Datenbank nicht eingetragen werden kann, gibt es eine Fehlermeldung.

phppower 30-10-2021 17:34

Formulardaten in DB eintragen php 8
 
Zitat:

Zitat von h3ll (Beitrag 677554)
Und das Problem ist? Wenn es in die Datenbank nicht eingetragen werden kann, gibt es eine Fehlermeldung.


das keine Fehlermeldung ausgegeben wird. Prüfe gerade ob es am Captcha liegt aber nicht mal da kommt ne meldung


PHP-Code:

ini_set('display_errors'1);
error_reporting(E_ALL);
include(
'sys.php');

//if($_POST['Captcha'] == $_SESSION['CAPTCHA_CODE'])
//            {
if(!empty($_POST["Eintragen"])) {
      
$topic $_POST["topic"];
      
$detail $_POST["detail"];
      
$name $_POST["name"];
      
$email $_POST["email"];
      
$captcha $_POST["Captcha"];

      
$captchaUser filter_var($_POST["Captcha"], FILTER_SANITIZE_STRING);

      if(empty(
$captcha)) {
        
$captchaError = array(
          
"status" => "alert-danger",
          
"message" => "Bitte Captcha eintragen."
        
);
      }
      else if(
$_SESSION['CAPTCHA_CODE'] == $captchaUser){
        
$captchaError = array(
          
"status" => "alert-success",
          
"message" => "Formulardaten wurden gesendet."
        
);
      } else {
        
$captchaError = array(
          
"status" => "alert-danger",
          
"message" => "Captcha ist leider Fehlerhaft."
        
);
      }
    }
    {
$sql $bdd->prepare("
INSERT INTO pdd_forum_question (
  topic,
  detail,
  name,
  email,
  datetime
) VALUES (
  :topic,
  :detail,
  :name,
  :email,
  :datetime
)"
);
$sql->execute( array(
    
'topic' => trim($_POST['topic']),
    
'detail' => trim($_POST['detail']),
    
'name' => trim($_POST['name']),
    
'email' => trim($_POST['email']),
    
'datetime' => date('Y-m-d H:i:s'strtotime 7200($_POST['datetime']))
) );            
}

echo 
'<meta http-equiv="refresh" content="1; URL=index.php">'


es scheint mir das es wirklich am captcha liegt


PHP-Code:

session_start();

  
// Generate captcha code
  
$random_num    md5(random_bytes(64));
  
$captcha_code  substr($random_num06);

  
// Assign captcha in session
  
$_SESSION['CAPTCHA_CODE'] = $captcha_code;

  
// Create captcha image
  
$layer imagecreatetruecolor(7020);
  
$captcha_bg imagecolorallocate($layer255255255);
  
imagefill($layer00$captcha_bg);
  
$captcha_text_color imagecolorallocate($layer000);
  
imagestring($layer550$captcha_code$captcha_text_color);
  
header("Content-type: image/jpeg");
  
imagejpeg($layer); 


egal was ich umbaue oder versuche zu verbessern, es kommt keine Fehlermeldung.

h3ll 30-10-2021 18:02

Dann betreibe Debugging. Lass dir verschiedene Variablenwerte mit var_dump() ausgeben und überprüfe, ob sie das beinhalten, das du erwartest.

phppower 31-10-2021 12:24

Formulardaten in DB eintragen php 8
 
Zitat:

Zitat von h3ll (Beitrag 677556)
Dann betreibe Debugging. Lass dir verschiedene Variablenwerte mit var_dump() ausgeben und überprüfe, ob sie das beinhalten, das du erwartest.


alles gelöst Danke

phppower 06-11-2021 15:56

Fehlermeldung
 
Also ich hab folgende Fehlermeldung:

Warning: session_start(): Session cannot be started after headers have already been sent in /hp/bg/ae/cc/www/demoMitDb/php0476/mainpage.php on line 1

Warning: Undefined variable $_SESSION in /hp/bg/ae/cc/www/demoMitDb/php0476/mainpage.php on line 19

Warning: Trying to access array offset on value of type null in /hp/bg/ae/cc/www/demoMitDb/php0476/mainpage.php on line 19

Was diese bedeutet weiss ich in etwa nur frage ich mich wo der Fehler liegt?


hier
PHP-Code:

<input class="textbox" type="text" name="inputurl" value="<?php if (!isset ($_POST['inputurl'])); ?>" style="border-radius: 5px;"/>

oder hier
PHP-Code:

if(isset($_POST['submit']))
{
    {
if(!empty(
$_POST['inputurl']) && !empty($_POST['inputname']) && ($auth == $auth1))
        {
if(
$_POST['Captcha'] == $_SESSION['rand_code'])
            {
$url $_POST['inputurl'];
            if (
preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i'$url))
                {
                    {
if (!
get_magic_quotes_gpc())
                        {
                            
$_POST['inputurl'] = addslashes($_POST['inputurl']);
                        } 

zeile 5 wäre die besagte Zeile

h3ll 06-11-2021 16:18

Die Fehlermeldung sagt eigentlich schon alles. Vor dem Aufruf von session_start() darfst du keine Ausgabe machen.

Magic Quotes wurden 2012 aus PHP entfernt, warum behandelst du das immer noch? Außerdem ist addslashes() Käse. Es gibt keinen Grund das zu verwenden.

Hast du den Code irgendwo aus einer Mülltonne ausgegraben?

phppower 06-11-2021 16:26

Fehlermeldung
 
Zitat:

Zitat von h3ll (Beitrag 677561)
Die Fehlermeldung sagt eigentlich schon alles. Vor dem Aufruf von session_start() darfst du keine Ausgabe machen.

Magic Quotes wurden 2012 aus PHP entfernt, warum behandelst du das immer noch? Außerdem ist addslashes() Käse. Es gibt keinen Grund das zu verwenden.

Hast du den Code irgendwo aus einer Mülltonne ausgegraben?


nein ich schreibe gerade datei für datei um soweit bin ich noch nicht ich will erstmal das session problem lösen und session_start() steht oben in erster zeile vor jeglicher Ausgabe. deswegen bin ich so verwundert.


die anderen sachen kommen jetzt nach und nach raus, arbeite mich halt von oben nach unten durch und ja aus Mülltonne zwar nicht aber ist eines meiner ganz alten Projekte die ich gerade umschreibe. ist jetzt die letzte Datei

h3ll 06-11-2021 17:04

Es findet in Zeile 1 von mainpage.php eine Ausgabe statt, die nicht stattfinden darf. Vermutlich sind das Leerzeichen, Zeilenumbrüche oder ein UTF8-BOM. Vor <?php darf rein gar nichts stehen. Kein einziges Byte, egal ob sichtbar oder unsichtbar.

phppower 06-11-2021 18:11

Fehlermeldung
 
Zitat:

Zitat von h3ll (Beitrag 677563)
Es findet in Zeile 1 von mainpage.php eine Ausgabe statt, die nicht stattfinden darf. Vermutlich sind das Leerzeichen, Zeilenumbrüche oder ein UTF8-BOM. Vor <?php darf rein gar nichts stehen. Kein einziges Byte, egal ob sichtbar oder unsichtbar.


ich bin so ein Depp, da hätte ich wirklich selbst drauf kommen müssen. Die mainpage.php includiert ja in der index.php ergo es stehen Daten vor session_start () also muss das oben in die Index



oh man manchmal sieht man den wald vor lauter Bäumen nicht


aber Danke

phppower 18-11-2021 01:06

Formulardaten in DB eintragen php 8
 
stehe mal wieder auf dem Schlau
das ist die Fehlermeldung: Invalid parameter number: number of bound variables does not match number of tokens in
nun hab ich das so wie ich es verstanden habe abzuändern aber der Fehler bleibt

PHP-Code:

// speichern
        
$aendern $db->prepare("UPDATE ".$prefix."zeitbanner Set banner = ':banner', url = ':url' WHERE id = '".$_GET["gid"]."'");
        
$insert_yes $aendern->execute(array(':banner' => $banner':url' => $url));
        if (
$insert_yes) { 


h3ll 18-11-2021 10:39

Du darfst Variablen nicht einfach so in SQL-Code einfügen. Das ist kann zu fehlerhaften SQL-Code führen und ist außerdem eine gravierende Sicherheitslücke.

Außerdem gehören um :banner und :url keine Hochkomma.

phppower 18-11-2021 17:05

Formulardaten in DB eintragen php 8
 
Zitat:

Zitat von h3ll (Beitrag 677576)
Du darfst Variablen nicht einfach so in SQL-Code einfügen. Das ist kann zu fehlerhaften SQL-Code führen und ist außerdem eine gravierende Sicherheitslücke.

Außerdem gehören um :banner und :url keine Hochkomma.


Danke konnte es beheben


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:50 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG