Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
OHO Script wird öfters gerufen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
OHO Script wird öfters gerufen


 
JR-EWING
13-05-2005, 23:35 
 
Hallo,
ich habe folgendes Problem das ein PHP Code 4x ausgeführt wird obwohl er nur einmal gerufen werden sollte.

In den Log Files sehe ich 4 Einträge mit der jeweiligen Suche



<?php
require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
error_log(sprintf("Suche: " . $q));
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
?>


Der Aufruf ist aus einer anderen Seite mit


<FORM ACTION="suche.php">
<INPUT TYPE="text" NAME="q" VALUE="<?php echo $q ?>" SIZE=80>
<INPUT TYPE="submit" VALUE="Suche" CLASS="BUTTON">
</FORM>


gelöst.
Kann mir da jemand weiterhelfen ?

Es sind auch keine meta-refresh oder java-script Umleitung oder sonstige Weiterleitungen.

Wenn ich direkt die Url angebe -> wird einfach das Script 4x ausgeführt.
da bin ich mit meinem Latein am Ende

Gruß Thomas

 
JR-EWING
14-05-2005, 02:32 
 
Muss man vor einem Insert einen Select machen ?

require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
$sql = mysql_query("SELECT * FROM {$prefix}suche WHERE suchtext = $q");
if (mysql_num_rows($sql) == 0){
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
}
?>


Jetzt wird bloss einmal die Insert Anweisung ausgeführt.....

Wenn mir jetzt einer erklären kann warum , wäre ich sehr dankbar.

 
TobiaZ
14-05-2005, 05:24 
 
kann nicht ganz nachvollziehen, was du da machst. Mag daran liegen, dass ich erst grade wieder @ home bin, aber vielleicht auch an einer fehlenden Beschreibung deines Vorhabens...

Muss man vor einem Insert einen Select machen ? Rein technisch musst du es natürlich nicht.

Aber du hast susätzlich eine if()-Abfrage in dein Script eingebaut. Vermutlich fängt die irgendwelche Fehlerhaften Scriptaufrufe ab. Kannst du in der Richtung mal dein Script untersuchen?

 
JR-EWING
14-05-2005, 17:15 
 
Okay,
mein Vorhaben ist die Suchergebnisse in die Datenbank zu schreiben.

Dazu habe ich eine Seite index.php in die ich mit

<FORM ACTION="suche.php">
<INPUT TYPE="text" NAME="q" VALUE="<?php echo $q ?>" SIZE=80>
<INPUT TYPE="submit" VALUE="Suche" CLASS="BUTTON">
</FORM>

bei einer Suche das Script Suche.php aufrufe.

Nun wird dieses Script aber leider 4 mal aufgerufen.

Hier mal die ersten Zeilen der Suche.php

<?php
require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
error_log(sprintf("Suche: " . $q));
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" >
<head>
usw.



In meinen Logs sehe ich dann vier Einträge von.
error_log(sprintf("Suche: " . $q));

Gruß
Thomas

 
TobiaZ
14-05-2005, 17:17 
 
Kannst du in der Richtung mal dein Script untersuchen? Haste denn jetzt mal Testausgaben gemacht, um das ganze näher zu lokalisieren? Das fehlt mir irgendwie immer noch!

 
JR-EWING
14-05-2005, 17:38 
 
Wie meinst du das ?

Ich hatte mal als erste Zeile in Suche.php eine Ausgabe mit
error_log()

wurde eben 4x ausgeben. Also es wird Suche.php viermal aufgerufen.
Wie kann ich das denn besser lokalisieren ?

 
TobiaZ
14-05-2005, 17:51 
 
aufgerufen wird die datei ja vom browser. also musst du jetzt herausfinden, warum... Ich weiß nicht, was dein script großartig beinhaltet, daher kann ich dir da nicht mehr sagen. außer dass du mal entsprechende testausgaben machen musst.

ist da evtl. ne weiterleitung o.ä. drin. wird die datei irgendwo aufgerufen, wo sie gar nicht gebraucht wird, ... Aber ich kann halt nur ins blaue reinraten.

 
JR-EWING
14-05-2005, 18:07 
 
Hier mal der Code meiner htaccess



RewriteEngine on
RewriteRule ^(.*)-(.*).html index.php?c=$1
RewriteRule ^eintrag/([0-9]*).html http://www.domain.de/add_url.php?c=$1 [redirect]
RewriteRule ^eintrag/ http://www.domain.de/ [R=301]


Aufruf ganz normal über Browser

http://www.domain.de/suche.php?q=tom


<?php
require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
$sql = mysql_query("SELECT * FROM {$prefix}suche WHERE suchtext = $q");
if (mysql_num_rows($sql) == 0){
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" >
<head>
....
url-erkennung ausgeschaltet by TobiaZ

 
TobiaZ
14-05-2005, 18:20 
 
:rofl:

DU bist lustig! *lol* (http://www.php-resource.de/forum/showthread.php?threadid=50454) Jetzt aber Zack den Quelltext wieder raus, sonst muss ich dein Posting gemäß den Forenregeln zensieren...

 
JR-EWING
14-05-2005, 18:45 
 
Sorry,
aber ich habe da nichts besonders in dem Quellcode (Umleitung) oder so.
Also PHP am Anfang und danach ganz normale HTML Ausgabe.

Das PHP wird halt 4x durchlaufen.
Was soll ich denn Posten, damit mir da einer helfen kann.
bzw. Was soll ich mit error_log ausgeben ?
Gibt es irgendeine Request Nummer die ich ausgeben könnte ?

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:47 Uhr.