Mein System: W2k-Server, PHP 4.1.0, Mysql 3.23.42, Apache 1.3
Es läuft soweit schon einmal, aber ein Problem kann ich nicht lösen. Bei verschiedenen Skripten kann ich DB-Inhalte lesen, aber keine einfügen. Der entsprechende User hat die zugehörigen Rechte für die DB (versuchsweise sogar alle - ist nur ein Testserver!). Über phpMyadmin funktioniert es. Andere Skripte, die Inhalte in textdateien ablegen - gleiches Problem: lesen geht, aber kein schreiben. Fehlermeldungen werden keine ausgegeben, obwohl die entsprechenden Tests eingebaut sind. Ach ja, die Skripte sollten funktionieren, da u. a. in PC kreativ (Th. Wölfer) veröffentlicht.
An welcher Schraube muss man da drehen? Für einen Tipp wäre ich dankbar!
Gruss Torsten
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
läuft php als modul oder als cgi unter apache? unter welchen rechten läuft apache und php? eventuell sind es nicht die rechte des users, die ein schreiben unterbinden, sondern die rechte des zugreifenden tasks. versuchsweise solltest du mal die ntfsrechte für dein webroot und die mySQL-dateien auf ALLE-Vollzugriff setzen, nur um zu testen, ob das die fehlerquelle ist.
es läuft als Modul, Apache und PHP haben auch alle Rechte, der User auch (ist nur ein testserver, also offen wie ein scheunentor).
Ich weiß nicht, ob ich damit wieder falsch liege, aber ich habe einen Verdacht. Die Formularvariablen sind beim Aufruf des Skriptes ohne Wert (zumindest bringt ein print $text keine Ausgabe. Und das sollte eigentlich funktionieren, da das Sript nicht selbstgestrickt ist, sondern nur zum Lernen genutzt werden sollte. Bei Bedarf kann ich es ja mal posten - oder hat jemenad so schon einen Tipp?
Ziemlich ratlos - Torsten
ohne zu wissen, wie das formular und das script aussieht kann man schwer was sagen. mach doch einfach mal am anfang der betroffenen scripte eine ausgabe aller variablen, die mittels get oder post übermittelt werden, je nachdem was du nutzt, ich tippe ja mal auf post, ansonsten würdest du die variablen ja schon in der logdatei nachsehen können.
also am anfang vom script:
foreach($HTTP_POST_VARS as $var=>$value){
if(!is_array($var)){print("$var = $value
");}
else{
foreach($vars as $s_var=>$s_value){print("$s_var = $s_value
");}
}
}
wenn die variablen als leere strings auftauchen, dann stimmt etwas an der übergabe der variablen nicht, dann würde ich mal die formulare und scripte posten für eine überprüfung.
Hallo, ich habe deine Zeilen ausprobiert. Alle Variablen (mittels get geholt) werden angezeigt. Ich hänge mal das Skript in gekürzter Fassung an:
// hier stehen die Festlegungen für $DB_xxx
Formular ausgeben
// function DoForm() mit entsprechenden print-Befehlen
form action=gaestebuch.php // die Datei selbst wieder
input type=text name=titel width=40
textarea name=text cols=40 rows=5
input type=hidden name=cmd value=enter
input type=submit value=Eintragen
//
Eintragen eines neuen Datensatzes in die MySQL Datenbank.
//function InsertData( $titel, $text)
//{
// global $DB_NAME;
// global $DB_USERNAME;
// global $DB_PASSWORD;
// global $DB_TABLE_NAME;
// global $DB_SERVER;
// $c = mysql_connect( $DB_SERVER, $DB_USERNAME, $DB_PASSWORD);
// $s = "insert into $DB_TABLE_NAME ( datum, title, text) values( NOW(), '$titel', '$text')";
// mysql_select_db($DB_NAME);
// $r = mysql_query($s, $c);
// if( ! $r) print "Fehler: $s
";
//}
// Inhalt anzeigen
//function ListContent()
//funktioniert tadellos
// hauptprogramm --------------------------------------------------
Kopfzeilen ausgeben, dann:
// DoForm();
// if (IsSet ( $cmd ) ) InsertData( $titel, $text);
// ListContent();
// ..
//?>
listcontent funktioniert prima, ist deshalb raus.
Wenn ich am Ende ändere in
//if (! isset($cmd)) Insertdata ( "text1", "text2");
dann wird der auch komplett eingetragen - sonst sind die Datensätze leider leer (außer der Zeit und ID-Nr).
Mittlerweile komplett ratlos - typisches Anfängerstadium :-((
In der Hoffnung auf weitere Hilfe
Gruss Torsten
PS: Wie bekomme ich in diesem Forum hin, dass php-Befehle nicht gleich interpretiert werden sondern als "normaler" Text angezeigt werden?
Danke für's mitdenken, aber es war meine eigene Dummheit:
Ab Version 4.1.x ist ein anderes Verarbeitungsmodell für Eingaben implementiert. In der .ini hilft dann erst einmal
register_globals = On
- oder Skript umschreiben.