php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 03-10-2006, 18:39
delme
 Guest
delme
Beiträge: n/a
Question leere zeile wird beim aufrufen der seite hinterlassen

moin,

die gute nachricht, das script läuft.
die schlechte ist die, dass immer ein leerer eintrag (aber mit id) in der datenbank hinterlassen wird, wenn ich nur diese seite aufrufe.
hier das script:
PHP-Code:
<?
include ("connect.inc.php");

$event strip_tags($event);
$event htmlentities($event);
$event str_replace("\r\n""<br>"$event);


echo (
"
<form action=\"eintragen.php\" method=\"post\" name=\"...\" onSubmit=\"...\">
<table >
  <tr>
        <td >Tag:</td>
        <td ><input type=\"text\" name=\"day\" size=\"40\"></td>
    </tr>
    <tr>
        <td>Monat:</td>
..usw.
        <td width=\"25%\">&nbsp;</td>
        <td>
        <input type=\"reset\" name=\"Reset\" value=\"Angaben l&ouml;schen\">&nbsp;
        <input type=\"submit\" name=\"Submit\" value=\"Eintragen\">
        </td>
    </tr>
</table>
</form>
"
);
?>


<?
$query 
"INSERT INTO 
          kalender (TAG,JAHR,MONAT,ZEIT,TEXT) 
          VALUES 
          ('$day','$year','$month','$time','$event')"
;
$result mysql_query($query) OR  die("Query: <pre>".$query.mysql_error());


if (
$day != "" AND $year != "" AND $month != ""){
echo (
"<table>
    <tr>
        <td >O.k., der Tag ist markiert.<br>
        <a href=\"index.php\">HIER</a> geht&acute;s zur&uuml;ck</td>
    </tr>
</table>"
);
}
else {
echo (
"<p>Es muss der Tag, der Monat und das Jahr ausgefüllt sein.<p>");
}
?>
Mit Zitat antworten
  #2 (permalink)  
Alt 03-10-2006, 18:56
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vllt solltest du den Eintrag in die DB davon abhängig machen ob das Form überhaupt gesendet wurde !
PHP-Code:
if(isset($_POST)){
    
$query "INSERT INTO 
          kalender (TAG,JAHR,MONAT,ZEIT,TEXT) 
          VALUES 
          ('$day','$year','$month','$time','$event')"
;
          [...]

Ausserdem würde es nicht schaden sich mal über register_globals und daraus entstehende Sicherheitslücken zu informieren. Wenn du schon am Suchen bist dann auch noch das Stichwort SQL-Injection.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #3 (permalink)  
Alt 03-10-2006, 18:58
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

So wie es aussieht wird bei jedem Aufruf des Scripts das INSERT ausgeführt und wenn dabei $day und Kollegen nicht existieren oder leer sind, wird eben ein leerer Datensatz angelegt.
Prüfe deine Variablen und führe die Query nur aus, wenn alles in Ordnung ist.
Mit Zitat antworten
  #4 (permalink)  
Alt 03-10-2006, 18:58
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wo legst du bitteschön fest in welchen fällen der query ausgeführt werden soll.
soweit ich schauen kann legst du nur fest in welchen fällen eine fehlermeldung erscheinen soll
Mit Zitat antworten
  #5 (permalink)  
Alt 03-10-2006, 19:00
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

die("Query: <pre>".$query.mysql_error());

wer auch ganz schön wenn man pre auch noch einmal wieder schließt.

ich würde deinen query in eine function packen, und diese function am selben platz ausführen wo deine "O.k., ..." Meldung erscheint.


Du kannst auch besser mit isset und empty arbeiten!
Mit Zitat antworten
  #6 (permalink)  
Alt 03-10-2006, 19:39
delme
 Guest
delme
Beiträge: n/a
Standard jetzt aber...

@lennie:
danke, habe eine abfrage eingefügt mit
PHP-Code:
if (!empty ($day) && !empty ().....) 
und jetzt zählt es die leeren aufrufe nicht mehr.

@jahlives:
habe mir diese sicherheitsabfragen angeschaut und muss ganz ehrlich sagen, das mir das gerade zu hoch ist (die erklärungen der tu chemnitz tauchen ja immer wieder in der gleichen form in anderen seiten auf). nun soll dieses formular intern auf einer seite genutzt werden, um daten zu markieren. meinst du, dass ich diese seiten doch erst abfragen soll, obwohl keiner die adresse weiß (außer drei menschen?)?
ich bin da sehr unsicher, weil ich natürlich nicht die fachfrau bin, sondern mit php am anfang stehe.

mfg
zeffmother
Mit Zitat antworten
  #7 (permalink)  
Alt 03-10-2006, 20:05
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also zum Thema SQL-Injection reicht eigentlich ein
PHP-Code:
$sql "SELECT * from table where name='".mysql_real_escape_string($name)."'"
Diese Funktion entschärft sämtliche für eine DB gefährlichen Zeichen.
Zum Thema register_globals:
Wenn diese Direktive auf on ist, dann heisst das nichts weiter, als dass für jede via GET oder POST übergebene Var eine Variable in php erstellt wird
Bsp:
Code:
<a href="index.php?var=value">
//dann kannst du in php mittels
echo $var;
//darauf zugreifen

//ist register_globals off dann gehts nur so
echo $_GET['var'];
//folgendes geht dann nicht
echo $var;
Register globals auf on ermöglichen es einem bösen Zeitgenossen Variabelen in deinen Code zu schleusen mit denen du nicht gerechnet hast.
PHP-Code:
echo <a href="formular.php?day=irgendwasgemeines">; 
Jetzt baust du $day ungeprüft in deine Query ein. Das kann dich deine gesamte Datenbank kosten.
Also wenn du register_globals auf on hast dann musst du (solltest du aber eigentlich auch bei register_globals off machen)
1. die Vars genau prüfen (z.B sind erwartete Integer wirklich gültige Zahlwerte und kein String)
2. die Vars entschärfen (v.a. wenn du sie in eine Query einbauen willst -->mysql_real_escape_string
3. Never trust incoming Data. Drum prüfen, prüfen und nochmals prüfen

Sicherheit die darauf basiert, dass man die Adresse nicht kennt, ist nicht wirklich sicher ! Von dem her würde sich zumindest eine PW Kontrolle lohnen.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #8 (permalink)  
Alt 04-10-2006, 18:59
delme
 Guest
delme
Beiträge: n/a
Standard

o.k., habe passwortabfrage drin und zum entschärfen der möglichen eingaben beim senden:

<?
$_POST = array_map('mysql_real_escape_string', $_POST);
?>


beschäftige mich weiter damit.

danke

zeffmother
Mit Zitat antworten
  #9 (permalink)  
Alt 04-10-2006, 19:05
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mysql_real_escape_string() funzt aber nur im Kontext einer existierenden DB-Verbindung. Wenn noch keine erstellt wurde, dann wirft die Fkt einen Fehler.
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:56 Uhr.