Script werkt onder php4 maar niet onder php5

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mike Stula

Mike Stula

07/06/2010 17:01:53
Quote Anchor link
Hallo,

Mijn naam is ips en ben een beginner in php scripting. Heb een tijdje geleden een Gastenboek gemaakt voor een klant in flash icm php. Alles werkte perfect tot een paar maand geleden. De provider vertelde dat ze waren over gestapt van php4 naar php5 en dat ik dus de code moest aanpassen......>!!!!

euhhhh..

De onderstaande code werkte dus prima, maar nu (met php5) niet meer. Kan iemand daar eens zíjn of haar licht over laten schijnen.

Je zou me daar enorm mee helpen!

Bedankt,

IPs



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php

$Submit
             = $_POST["Submit"];
$Name             = $_POST["Name"];
$Email             = $_POST["Email"];
$Comments    = $_POST["Comments"];
$NumLow    = $_REQUEST["NumLow"];
$NumHigh    = $_REQUEST["NumHigh"];

//$Name      = ereg_replace("[^A-Za-z0-9 ]", "", $Name);
$Email            = ereg_replace("[^A-Za-z0-9 \@\.\-\/\']", "", $Email);
//$Comments   = ereg_replace("[^A-Za-z0-9 \@\.\-\/\']", "", $Comments);
//$Website    = eregi_replace("http://", "", $Website);
//$Website    = ereg_replace("[^A-Za-z0-9 \@\.\-\/\'\~\:]", "", $Website);


$Name             = stripslashes($Name);
$Email             = stripslashes($Email);
$Comments    = stripslashes($Comments);

// Lezen en schrijven naar de GuestBook.txt file

if ($Submit == "Yes") {

   $filename    = "GuestBook.txt";



   $fp       = fopen( $filename,"r");
   $OldData    = fread($fp, 80000);
   fclose( $fp );

// Geeft de datum weer...

   $Today  = (date (" d F Y ( h:i:s A )",time()));
// $Today  = (date ("I d F Y ( h:i:s A )",time()));
  
   $Input = "Naam: <b>$Name</b><br>Email: <b><u><a href=\"mailto:$Email\">$Email</a></u></b><br>Reactie: <b>$Comments: </b><br><i><fontsize=\"-1\">Datum: $Today</font><br><br>.:::.";


   $New = "$Input$OldData";


   $fp = fopen( $filename,"w");
   if(!$fp) die("&GuestBook=cannot write $filename ......&");
   fwrite($fp, $New, 800000);
   fclose( $fp );
}



   $filename = "GuestBook.txt";



   $fp    = fopen( $filename,"r");
   $Data    = fread($fp, 800000);
   fclose( $fp );


   $DataArray = split (".:::.", $Data);


   $NumEntries = count($DataArray) - 1;

   print "&TotalEntries=$NumEntries&NumLow=$NumLow&NumHigh=$NumHigh&GuestBook=";
   for ($n = $NumLow; $n < $NumHigh; $n++) {
   print $DataArray[$n];
      if (!$DataArray[$n]) {
         Print "<br><br><b>Niet meer reacties</b>";
      exit;
      }
   }

?>


Verplaatst naar "Programmeer hulp", admin/mod hulp is hier niet van toepassing ;-)[/modedit]
Gewijzigd op 07/06/2010 19:03:29 door Chris -
 
PHP hulp

PHP hulp

23/11/2024 09:16:20
 
- Jim  -

- Jim -

07/06/2010 17:03:33
Quote Anchor link
Wat doet het er niet aan dan?
Of wil je ons bezig houden met een spelletje 'levend speurtocht'???
 
Mike Stula

Mike Stula

07/06/2010 17:14:42
Quote Anchor link
Hoi,

Je hebt gelijk, sorry. Het script zorgt ervoor dat er data in een gastenboek wordt geschreven. In de file GuestBook.txt. En dat wanneer de entry is gedaan deze ook weer wordt gelezen en op het scherm zichtbaar is. Voorbeeld: www.operadellacasa.com/gastenboek_opera.html

Maar omdat de provider dus is gemigreerd naar php5 worden nieuwe entry's niet verwerkt. En ik kan er niet achter komen waaraan dat ligt. Dacht er eerst aan dat php5 ereg_replace niet meer ondersteund, dus daar heb ik preg_replace van gemaakt. Maar ook dat hielp niet.

Oh ja, chmod van guestbook.txt = 777, dus je kunt er wel naar schrijven.

groetjes ips
 
Piet Verhagen

Piet Verhagen

07/06/2010 18:45:05
Quote Anchor link
En zie geen errors verschijnen?
 
Noppes Homeland

Noppes Homeland

07/06/2010 19:16:30
Quote Anchor link
Wel en wat krijg je dan te zien als je het volgende boven aan je script zet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors,1);
error_reporting(E_ALL | E_STRICT);
?>


$_REQUEST is de vullisbak van $_POST/$_GET/$_COOKIE dus het gebruik van $_REQUEST is niet slim wat als je tesamen hebt $_POST['id'] en $_GET['id'] waarbij beide een andere betekenis hebben. Gebruik dus gewoon de superglobals die daartoe zijn aangewezen en laat $_REQUEST dus buiten je code.
 
Mike Stula

Mike Stula

07/06/2010 23:16:55
Quote Anchor link
Hallo,

Nee, ik zie geen errors in beeld. Het gastenboek en de reacties zie je gewoon. Kan ook gewoon door de reacties bladeren. Alleen het toevoegen van een reactie wil dus niet. Wanneer ik de code van Noppes toevoeg, dan werkt het hele gastenboek niet meer en zie ik geen reacties. Het blijft vreemd dat het script tot voor kort perfect werkte en nu, na de migratie van de provider naar PHP5, helemaal niet meer. Terwijl ik de indruk heb dat het script prima onder PHP5 zou moeten werken.

Grts Ips
 

07/06/2010 23:21:15
Quote Anchor link
Je moet je code dus bij lang gaan.
Ik zie al verschillende dingen die veranderd moeten worden:
- Eregi -> preg_match
- Split -> preg_* / iets anders
Waarschijnlijk staan magic quotes ook aan, dat is ook slecht.
Verder zou je natuurlijk ook die die dies weg kunnen halen, is niet zo netjes (wáárom moet een php script doodvallen? Dat doe jij ook niet als je een foutje maakt ;-)). Zie ook migration5.
 
Afra ca

Afra ca

08/06/2010 09:52:25
Quote Anchor link
Zoals hierboven ook al gezegd, geen $_REQUEST gebruiken maar wees specifiek, $_POST en $_GET . Puntjes die Karl al zei. Variabelen halen we altijd buiten quotes, zo dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= "world";
echo 'Hello' . $var . 'ik ben weer wakker!';
?>


En op regel 40 doe je ook wat vreemd. Daar hoort het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$new
= $input.$olddata;
?>


Tevens, je hoeft in het begin niet onnodig die variabelen te gaan kopieren, je kan "prima" (let op sql injection!!!) gebruik maken van $_POST['fieldname']. En controleren of een formulier verstuurd is doen we meestal zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors',1);

//Zo controleren we of er een form is gepost
if($_SERVER['REQUEST_METHOD'] == "POST"){
    //verwerken formulier
}
else{
    echo 'Hier je formulier';
}

?>


Succes ermee!
 
Mike Stula

Mike Stula

09/06/2010 15:48:13
Quote Anchor link
Hallo (Allemaal),

Ik heb jullie suggesties doorgevoerd, et voila, het gastenboek werkt weer. Kortom, ik wil jullie bedanken voor de support.

Bedankt!!!!!!

grts Ips
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.