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/)
-   -   problem bei abfrage php 7 (https://www.php-resource.de/forum/php-developer-forum/107229-problem-bei-abfrage-php-7-a.html)

phppower 27-01-2021 18:58

problem bei abfrage php 7
 
Hallo,

ich versuche gerade meine Projekte auf php 7 umzustellen. soweit hab ich mich reingelesen aber es schleichen sich scheinbar immer noch fehler bei mir ein. nun zu meiner Frage

PHP-Code:

<?php header("Content-type: text/xml"); echo "<?xml version='1.0' encoding='UTF-8' ?>"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel> 
<?php
include_once("config.inc.php");
$db = new PDO('mysql:host=' $dbserver ';dbname=' $dbdata$dbuser$dbpass);
?>
    <title><?php echo ("$wstitel");?></title>
    <link><? print ("$wsurl");?></link>
    <description>URL Shortener</description>
    <language>de-de</language>
    <docs><? print ("$wsurl"); ?></docs>
    <generator>Rss Feed Engine</generator>
    <managingEditor><? print ("$wmemail"); ?></managingEditor>
    <webMaster><? print ("$wmemail"); ?></webMaster>
    <atom:link href="<? print ("$wsurl"); ?>/rss.php" rel="self" type="application/rss+xml" />
<?php 
$statement 
$pdo->prepare("SELECT * FROM shortlinks");   
while(
$row $statement->fetch()) {
?>
<item>
<title><![CDATA[<? print ("$wsurl"); ?><?php echo "/u".$row['id']."".$row['kuc']."";?>]]></title>    
<description><![CDATA[Projects:digmedien.de | scripte-download.com]]></description>
<link><![CDATA[<?php echo "http://".$wsurl."/u".$row['id']."".$row['kuc']."";?>]]></link>   
</item>
<?php
}
?>
</channel>
</rss>

ich kann aber irgendwie die rss.php nicht aufrufen der geht sofort auf die Index zurück. sehe aber im code nicht wirklich einen Fehler vielleicht sehen ein zweites paar Augen mehr.

die config sieht so aus:

PHP-Code:

$dbserver "localhost";
$dbuser "xxx";
$dbpass "xxx";
$dbdata "xxx";
$wstitel "xxx";
$wssbttl "xxx";
$wsurl "xxx";
$wmemail "xxx"

hoffe es kann jemand weiter helfen DANKE vorab

Kropff 27-01-2021 19:10

Wie ist denn dein error_reporting eingestellt?
Mal im error.log nachgeschaut?

Gruß
Peter

phppower 27-01-2021 19:15

Also im error.log steht garnichts und error_reporting ist auf all eingestellt, bringt mir nur nichts, da sich die datei nicht aufrufen lässt.

Gruß Mirko

Kropff 28-01-2021 18:47

Steht im Apache-Log was drin?
Was steht in der confic.inc.php drin (DB-Daten ausgenommen)?

Gruß
Peter

PS: lass diesen Blödsinn:
PHP-Code:

<?php echo ("$wstitel");?>

Schreib einfach:
PHP-Code:

<?php echo $wstitel;?>


phppower 28-01-2021 19:44

Auf den Apache Log hab ich Seitens des Providers keinen Zugriff.

In der config steht nur das was oben steht mehr nicht.

Ja für das andere suche ich noch ne Lösung wstitel

Gruß Mirko

Kropff 28-01-2021 20:03

Hast du kein lokales System zum Testen? Dann installier dir doch zumindest mal einen XAMPP. Direkt auf dem Server vom Provider zu entwicklen, ist nicht so pralle.

Gruß
Peter

phppower 28-01-2021 20:09

xampp hab ich drauf müsste ich mal gerade testen und dann melde ich mich nochmal.

Gruß Mirko

phppower 02-04-2021 11:40

Umstellung auf php 7
 
Hallo,

also das vorhergehnde Problem konnte ich lösen. Jetzt hab ich nen anderes
PHP-Code:

<?php
$uploadActive 
'active';
include(
'header.php');
if(!isset(
$_SESSION['profile2']))
{
    
session_destroy();
    
header('location:'.$url.'login');
    exit();
}
if(
$my_role 1)
{
    
header('location:'.$url);
    exit();
}
$action=$_GET['action']; $id=$_GET['id'];
if (
$action=='2') {
$inhalt=$_POST['inhalt'];
$inhalt =  ereg_replace("&""&amp;"$inhalt);
$inhalt str_replace(array("ä","ö","ü","Ä","Ö","Ü","ß"),array("&auml;","&ouml;","&uuml;","&Auml;","&Ouml;","&Uuml;","&szlig;"),$inhalt);
$sql $bdd->prepare("UPDATE pdd_texte SET pdd_txtcontent = '$inhalt' WHERE pdd_txtid = '$id'");
$insert_yes $sql->execute(array($mode));
}

if (
$id=='1') { $header="Impressum"; }
if (
$id=='2') { $header="Datenschutz"; }
if (
$id=='3') { $header="Widerrufsrecht"; }

$sql $bdd->query("SELECT * FROM pdd_texte WHERE pdd_txtid = '$id'");
while(
$row $sql->fetch(PDO::FETCH_ASSOC)) {
$pdd_txtid $row['pdd_txtid'];
$pdd_txtcontent $row['pdd_txtcontent'];
?>
<tr><td class="tdcont">Text &auml;ndern - <?php echo $header?></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>
<table width=690 border=0 cellpadding=0 cellspacing=0>
<form action="texte.php?action=2&id=<?php echo $id?>" method="POST">
<tr><td align=center><textarea name="inhalt" rows="25" cols="46" style="width:560px;"><?php echo $pdd_txtcontent?></textarea></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td align=center><input type="submit" name="update" value="Text &auml;ndern" style="width:560px;" class="bt"></td></tr>
</form>
</table>
</td></tr>
<?php
}
include(
"footer.php");
?>

Das ist mein Code umgestellt auf php7 er gibt mir keinerlei Fehlermeldung aber gibt auch nichts aus ne Vermutung habe ich
1.
PHP-Code:

$sql $bdd->prepare("UPDATE pdd_texte SET pdd_txtcontent = '$inhalt' WHERE pdd_txtid = '$id'"); 

2.
PHP-Code:

$sql $bdd->query("SELECT * FROM pdd_texte WHERE pdd_txtid = '$id'"); 

das Problem ist
PHP-Code:

'$id' 

wo liegt da mein Fehler?

Danke schon mal vorab für Tipps

phppower 02-04-2021 13:25

Umstellung auf php 7 teilweise gelöst
 
So konnte einiges selber lösen und hab derbe abgespeckt an Code.
PHP-Code:

if(isset($_POST['pdd_txtcontent']))
                    {
                        
$pdd_txtcontent strip_tags(htmlspecialchars($_POST['pdd_txtcontent']));
$sql $bdd->prepare('UPDATE pdd_texte SET pdd_txtcontent = '.$pdd_txtcontent.' WHERE pdd_txtid = '.$pdd_txtid.'');
$insert_yes $sql->execute(array($pdd_txtcontent));
if(
$insert_yes)
                        {
                            echo 
'<div class="alert alert-success" role="alert">gespeichert.</div>';
                        }
                    } 

PHP-Code:

<table width=690 border=0 cellpadding=0 cellspacing=0>
<form action="texte.php?=<?php echo $pdd_txtid?>" method="POST">
<tr><td align=center><textarea name="pdd_txtcontent" rows="25" cols="46" style="width:560px;"><?php echo $pdd_txtcontent?></textarea></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td align=center><input type="submit" name="update" value="Text &auml;ndern" style="width:560px;" class="bt"></td></tr>
</form>
</table>

einziges Problem noch obige Update Funktion läuft nicht und ich übersehe was Frage ist WAS?

h3ll 02-04-2021 13:42

strip_tags() und htmlspecialchars() hat bei Datenbankabfragen nichts verloren.

Und du beachtest den Kontextwechsel nach SQL nicht. Werte sollten nicht direkt in SQL-Code eingefügt werden. Beschäftige dich mal damit, wie Prepared Statements funktionieren.

Das Zeug mit ereg_replace() und str_replace() ist auch für die Tonne.

Und es gibt keinen Grund Umlaute zu verst&uuml;mmeln.

phppower 02-04-2021 14:41

Umstellung auf php 7 teilweise gelöst
 
Zitat:

Zitat von h3ll (Beitrag 677275)
strip_tags() und htmlspecialchars() hat bei Datenbankabfragen nichts verloren.

Und du beachtest den Kontextwechsel nach SQL nicht. Werte sollten nicht direkt in SQL-Code eingefügt werden. Beschäftige dich mal damit, wie Prepared Statements funktionieren.

Das Zeug mit ereg_replace() und str_replace() ist auch für die Tonne.

Und es gibt keinen Grund Umlaute zu verst&uuml;mmeln.

Das Zeugs hab ich alles schon raus genommen der neue Code sieht jetzt komplett so aus:

PHP-Code:

<?php 
ini_set
('display_errors'1);
error_reporting(E_ALL);
$uploadActive 'active';
include(
'header.php');
if(!isset(
$_SESSION['profile2']))
{
    
session_destroy();
    
header('location:'.$url.'login');
    exit();
}
if(
$my_role 1)
{
    
header('location:'.$url);
    exit();
}
$pdd_txtcontent = ($_POST['pdd_txtcontent']);
$sql_insert $bdd->prepare('INSERT INTO pdd_texte (pdd_txtcontent) VALUES (?)');
                
$insert_ok $sql_insert->execute(array($pdd_txtcontent));
                if(
$insert_ok)
                        {
                            echo 
'<div class="alert alert-success" role="alert">gespeichert.</div>';
                        }
$sql $bdd->query('SELECT * FROM pdd_texte WHERE pdd_txtid');
while(
$row $sql->fetch(PDO::FETCH_ASSOC)) {
$pdd_txtid $row['pdd_txtid'];
$pdd_txtcontent $row['pdd_txtcontent'];
if (
$pdd_txtid == 1){ $header='Impressum'; }
if (
$pdd_txtid == 2){ $header='Datenschutz'; }
if (
$pdd_txtid == 3){ $header='Widerrufsrecht'; }
?>
<tr><td class="tdcont">Text &auml;ndern - <?php echo $header?></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>
<table width=690 border=0 cellpadding=0 cellspacing=0>
<form action="texte.php?=<?php echo $pdd_txtid?>" method="POST">
<tr><td align=center><textarea name="pdd_txtcontent" rows="25" cols="46" style="width:560px;"><?php echo $pdd_txtcontent?></textarea></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td align=center><input type="submit" name="update" value="Text &auml;ndern" style="width:560px;" class="bt"></td></tr>
</form>
</table>
</td></tr>
<?php
}
include(
"footer.php");
?>

Mein Problem ist ja das die id für den Eintrag schon gegben ist und er soll ja nur die angegebene Spalte durch neuen Text ersetzen.
Ich vermute ja das diese das Problem ist

PHP-Code:

<form action="texte.php?=<?php echo $pdd_txtid?>" method="POST">

Fehlermeldung ist entsprechend Notice: Undefined index: pdd_txtcontent in /home/webpages/lima-city/phppower/default-website/texte.php on line 17

und bezieht sich auf
PHP-Code:

$pdd_txtcontent = ($_POST['pdd_txtcontent']); 

aber meines erachtens müßte das richtig sein

oder ich stehe hier völlig auf dem Schlauch

h3ll 02-04-2021 14:57

Das $_POST-Array ist nur befüllt, wenn das Formular abgeschickt wurde.

phppower 02-04-2021 15:15

Umstellung auf php 7 teilweise gelöst
 
Zitat:

Zitat von h3ll (Beitrag 677277)
Das $_POST-Array ist nur befüllt, wenn das Formular abgeschickt wurde.

mir ist selber grad noch ein Fehler aufgefallen. Nach dem obigen Code legt er einen neuen Datensatz an und das soll ja garnicht.

es müsste so eigentlich aussehen und damit wäre die Fehlermeldung schon mal weg
PHP-Code:

<?php 
ini_set
('display_errors'1);
error_reporting(E_ALL);
$uploadActive 'active';
include(
'header.php');
if(!isset(
$_SESSION['profile2']))
{
    
session_destroy();
    
header('location:'.$url.'login');
    exit();
}
if(
$my_role 1)
{
    
header('location:'.$url);
    exit();
}
if(isset(
$_POST['pdd_txtcontent']))
                    {
                        
$pdd_txtcontent = ($_POST['pdd_txtcontent']);
                        
$sql $bdd->prepare('UPDATE pdd_texte SET pdd_txtcontent = ?');
                        
$insert_yes $sql->execute(array($pdd_txtcontent));
                        if(
$insert_yes)
                        {
                            echo 
'<div class="alert alert-success" role="alert">gespeichert.</div>';
                        }
                    }

$sql $bdd->query('SELECT * FROM pdd_texte WHERE pdd_txtid');
while(
$row $sql->fetch(PDO::FETCH_ASSOC)) {
$pdd_txtid $row['pdd_txtid'];
$pdd_txtcontent $row['pdd_txtcontent'];
if (
$pdd_txtid == 1){ $header='Impressum'; }
if (
$pdd_txtid == 2){ $header='Datenschutz'; }
if (
$pdd_txtid == 3){ $header='Widerrufsrecht'; }
?>
<tr><td class="tdcont">Text &auml;ndern - <?php echo $header?></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>
<table width=690 border=0 cellpadding=0 cellspacing=0>
<form action="<?php echo $_SERVER['PHP_SELF']?>?=<?php echo $pdd_txtid?>" method="POST">
<tr><td align=center><textarea name="pdd_content" rows="25" cols="46" style="width:560px;"><?php echo $pdd_txtcontent?></textarea></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td align=center><input type="submit" name="update" value="Text &auml;ndern" style="width:560px;" class="bt"></td></tr>
</form>
</table>
</td></tr>
<?php
}
include(
"footer.php");
?>

das mit dem action hab ich mal so geändert:
PHP-Code:

<form action="<?php echo $_SERVER['PHP_SELF']?>?=<?php echo $pdd_txtid?>" method="POST">

aber es zeigt nicht die Wirkung er speichert nicht das Update

die Datenbank sieht so aus:
PHP-Code:

CREATE TABLE IF NOT EXISTS `pdd_texte` (
  `
pdd_txtidint(10unsigned NOT NULL auto_increment,
  `
pdd_txtcontentlongtext collate utf8_unicode_ci NOT NULL,
  
PRIMARY KEY  (`pdd_txtid`)
); 

die txtid ist fest vorgegeben und soll immer die gleiche bleiben. Nur der txtconent so geupdatet werden.
Was mache ich da falsch?

phppower 03-04-2021 12:03

Umstellung auf php 7 gelöst
 
Zitat:

Zitat von h3ll (Beitrag 677277)
Das $_POST-Array ist nur befüllt, wenn das Formular abgeschickt wurde.


Danke, konnte es mit deiner Hilfe nun doch lösen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:35 Uhr.

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